Update nội dung
hàng tháng
Kiến thức thực tế,
Ứng dụng cao
Đầy đủ bài tập
Chuyên đề thực tế
Giải đáp câu hỏi
trong 24 giờ
Hẹn lịch
nhắc nhở học tập
Update nội dung
hàng tháng
Kiến thức thực tế,
Ứng dụng cao
Đầy đủ bài tập
Chuyên đề thực tế
Giải đáp câu hỏi
trong 24 giờ
Hẹn lịch
nhắc nhở học tập

Khóa học này dành cho

Khóa học này dành cho

Người đang làm việc trong các lĩnh vực Tài Chính - Ngân Hàng, Nhân Sự, Kế Toán, Xây Dựng, Dự Báo, Dự Toán,...
Người thường xuyên gặp phải các vấn đề với số liệu bảng biểu: Dữ liệu Excel phân mảng ở nhiều file, nhiều định dạng khác nhau, khó khăn trong việc tổng hợp và làm báo cáo.
Người muốn tự động hóa thao tác công việc lặp đi lặp lại: định dạng, lập bảng báo cáo, lọc dữ liệu, tổng hợp thủ công copy/paste...
Người muốn bỏ túi bí kíp xây dựng các phần mềm hỗ trợ riêng đáp ứng yêu cầu công việc, hiện thực hoá mọi báo cáo mà trong đầu nghĩ đến.
Người muốn có chuyên gia VBA Excel để hỏi khi cần.
Người muốn tăng lương, thăng chức lên các vị trí team lead, quản lý, trưởng phòng..

Bạn sẽ nhận được gì nếu đăng ký khóa học này

Bạn sẽ nhận được gì nếu đăng ký khóa học này

Hình thành tư duy lập trình cơ bản giúp giải quyết các vấn đề tận gốc thông qua các bài tập thiết thực trong công việc.
Hiểu cặn kẽ các kiến thức căn bản.
Biết cách tự viết code, đọc hiểu code và sửa code
Thiết lập một tiện ích tự động xử lý số liệu
Thay đổi menu excel, tạo form nhập liệu theo ý muốn.
Viết được các mã lệnh Macro để tự động phân tích, nhập và xử lý số liệu.
Nắm được một số kỹ năng lập trình thông dụng: Phát hiện và xử lý lỗi, tạo Userform, sự kiện, in hàng loạt, thêm/sửa/xóa dữ liệu, nạp dữ liệu, trích xuất dữ liệu...
Ứng dụng VBA vào một số công việc cụ thể trong quản lý nhân sự, kế toán, tài chính, quản lý dự án...

Nội dung khóa học

0

Chương 0: Tài liệu thực hành trong khóa học

1

Chương 1: Tổng quan về VBA

2

Chương 2: Cách ghi và sử dụng Macro

3

Chương 3: Tìm hiểu về Module trong VBA

4

Chương 4: Kỹ thuật viết code trong VBA

5

Chương 5: Kỹ thuật khai báo và sử dụng biến trong lập trình VBA

6

Chương 6: Cách viết code VBA với đối tượng Range, Cell

7

Chương 7: Cách viết code VBA với đối tượng Worksheet

8

Chương 8: Cách viết code VBA với đối tượng Workbook

9

Chương 9: Các cấu trúc thường gặp trong lập trình VBA

10

Chương 10: Tìm hiểu về vòng lặp trong VBA

11

Chương 11: Các loại lỗi và cách xử lý lỗi khi lập trình

12

Chương 12: Lập trình UserForm cơ bản

13

Chương 13: Lập trình sự kiện trong VBA

14

Chương 14: Cách tạo MENU gọi lệnh Macro trên thanh công cụ của Excel

15

Chương 15: Các bài tập chuyên đề: Ứng dụng VBA trong công việc

16

Chương 16: Kết quả các bài tập chuyên đề: Ứng dụng VBA trong công việc

17

Chương 17: Tài liệu tham khảo - File mẫu sử dụng VBA trong công việc

Phản hồi về khóa học

Nguyễn Thanh Tùng
08:01 14/01/2021
khóa học rất hay và bổ ích, giúp người học có thể chủ động thời gian, học tập vào bất cứ khi nào rảnh. Đội ngũ hỗ trợ cũng support nhanh và đầy đủ khi người học gặp vấn đề và comment trên bài. Rất mong đội ngũ phát triển ngày càng có thêm các khóa học tương tự!
Nguyễn Xuân Hải
17:01 05/01/2021
Mình rất hài lòng về khoá học này. Từ chỗ mù VBA đến nay mình đã cơ bản biết lập trình để đáp ứng yêu cầu công việc. Khoá học đc thiết kế rất dễ học (với các video ngắn gọn, nhưng hướng dẫn đầy đủ chi tiết - buổi trưa tranh thủ trước khi ngủ trưa mình cũng xúc miệng đc mấy video) Khoá học thực sự hữu ích! Cảm ơn Gitiho!
Bui xuan huynh
10:01 04/01/2021
Khóa học rất bổ ích, nó giúp tôi tiết kiệm được nhiều thời gian cho một yêu cầu công việc. Thêm vào đó là kỹ năng tin học được nâng lên một level mới. Đội ngũ giảng viên nhiệt tình trong đào tạo, luôn hỗ trợ học viên trong suốt khóa học. Thời gian tới tôi sẽ tiếp tục đăng ký những khóa học mới do Gitiho phát triển. thank's!
Đặng Lưu Hải
10:01 04/01/2021
Tôi hài lòng về khóa học. Khóa học bổ ích, giúp tôi xử lý số liệu tự động và nhanh hơn. Bài giảng khóa học chủ yếu đề cập các nội dung chung của VBA, học viên có thể ứng dụng được vào công việc của mình. Thanks
Nguyễn Hoàng Lan
00:12 27/12/2020
Khoa hoc rat bo ich ! Minh se co gang ap dung vba vao cong viec de cong viec duoc nhanh hon, tiet kiem thoi gian. Giao vien giang bai ro rang, de hieu va chi tiet. Noi dung khoa hoc cung het suc phu hop voi nhu cau cua minh. Cam on a!
Nguyễn Trọng Hào
12:12 25/12/2020
Xin chào Gitiho ! qua khóa học mình đã có thể tự code VBA đơn giản áp dụng những gì đã học từ Gitiho!!! Nhưng ở bài 16 có 1 số file code mẫu mình chưa hiều cách hoạt động của nó!!không biết sử dụng nó như thế nào
Huỳnh hoài bảo
14:12 21/12/2020
Với cách tổ chức dạy và học như hiện nay rất phù hợp cho mọi lứa tuổi. Tôi đã 54 tuổi rồi mà tham gia học VBA vẫn nắm và vận dụng kiến thức và công việc một cách tuyệt vời. Mong chương trình sẽ có thêm nhiều topic tương tự. Chúc các bạn thành công và lan tỏa tri thức cho công đồng
Trần Tuấn Anh
15:12 16/12/2020
Khóa học đề cập tới những nội dung cơ bản, xây dựng kiến thức nền rất vững. Nhờ hiểu biết về các kiến thức cơ bản sẽ tạo nền tảng phát triển những ứng dụng thực tế. Khi áp dụng VBA trong công việc quản lý dữ liệu sẽ tránh sai sót, nhầm lẫn. Dữ liệu khi được quản lý tốt sẽ là tài sản giá trị.

Thảo luận mới nhất khoá học

Trần Thi Xuân Hồng 06 Jan 2021

Thầy ơi, sao em bấm sắp xếp mà nó sắp xếp lộn xộn vậy? 

Tuấn Ba [Chuyên gia] 07 Jan 2021

Chào bạn bạn xem đang sắp xếp theo cột nào?

Trần Thi Xuân Hồng 07 Jan 2021

Cột Khu Vực á thầy. Thầy xem lại cho em cái code với

Sub test()

'

' Test Macro

'

'Chon o A1

    Range("A1").Select

'Nhap chu vao Ten vao

    ActiveCell.FormulaR1C1 = "Ten"

    Range("A2").Select 'Chon o A2

    ActiveCell.FormulaR1C1 = "A"

    Range("A3").Select

    ActiveCell.FormulaR1C1 = "B"

    Range("A4").Select

    ActiveCell.FormulaR1C1 = "C"

    Range("A5").Select

    ActiveCell.FormulaR1C1 = "D"

    Range("B1").Select

    ActiveCell.FormulaR1C1 = "So luong"

    Range("B2").Select

    ActiveCell.FormulaR1C1 = "1"

    Range("B3").Select

    ActiveCell.FormulaR1C1 = "2"

    Range("B4").Select

    ActiveCell.FormulaR1C1 = "3"

    Range("B5").Select

    ActiveCell.FormulaR1C1 = "4"

    Range("B6").Select

    ActiveCell.FormulaR1C1 = "=SUM(R[-4]C+R[-3]C+R[-2]C+R[-1]C)"

    Range("A1:B6").Select

    Selection.Borders(xlDiagonalDown).LineStyle = xlNone

    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    With Selection.Borders(xlEdgeLeft)

        .LineStyle = xlContinuous

        .ColorIndex = xlAutomatic

        .TintAndShade = 0

        .Weight = xlThin

    End With

    With Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        .ColorIndex = xlAutomatic

        .TintAndShade = 0

        .Weight = xlThin

    End With

    With Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

        .ColorIndex = xlAutomatic

        .TintAndShade = 0

        .Weight = xlThin

    End With

    With Selection.Borders(xlEdgeRight)

        .LineStyle = xlContinuous

        .ColorIndex = xlAutomatic

        .TintAndShade = 0

        .Weight = xlThin

    End With

    With Selection.Borders(xlInsideVertical)

        .LineStyle = xlContinuous

        .ColorIndex = xlAutomatic

        .TintAndShade = 0

        .Weight = xlThin

    End With

    With Selection.Borders(xlInsideHorizontal)

        .LineStyle = xlContinuous

        .ColorIndex = xlAutomatic

        .TintAndShade = 0

        .Weight = xlThin

    End With

    MsgBox "Ok"

End Sub

Sub Macro2()

'

' Macro2 Macro

'

'

    Range("A2:A20").Select

    ActiveSheet.Range("$A$1:$A$20").RemoveDuplicates Columns:=1, Header:=xlYes

    Range("B1").Select

    MsgBox "Xóa trùng thành công!"

End Sub

Sub Macro3()

'

' Macro3 Macro

'

'

    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("A2"), _

        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets("Sheet2").Sort

        .SetRange Range("A2:A13")

        .Header = xlYes

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

End Sub

Sub Macro4()

'

' Macro4 Macro

'

'

    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("A2"), _

        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With ActiveWorkbook.Worksheets("Sheet2").Sort

        .SetRange Range("A2:A10")

        .Header = xlYes

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

End Sub


Tuấn Ba [Chuyên gia] 07 Jan 2021

Chào bạn bạn vui lòng dẩy file lên nhé, code không có dữ liệu không thể biết được đang bị lỗi ở đâu nhé.

Phạm Thị Hằng 16 Jan 2021

Thầy ơi e sai ở đâu mà e ấn bỏ trùng nó ko chạy

Sub Macro2()
'
' Macro2 Macro
'

'
    Range("A1:A20").Select
    ActiveSheet.Range("$A$1:$A$8").RemoveDuplicates Columns:=1, Header:=xlYes
    ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 147, 19.2, 118.2, 49.8). _
        Select
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "b? trùng"
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 8). _
        ParagraphFormat
        .FirstLineIndent = 0
        .Alignment = msoAlignLeft
    End With
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 2).Font
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1
        .Fill.ForeColor.TintAndShade = 0
        .Fill.ForeColor.Brightness = 0
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 11
        .Name = "+mn-lt"
    End With
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(3, 6).Font
        .BaselineOffset = 0
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.ObjectThemeColor = msoThemeColorLight1
        .Fill.ForeColor.TintAndShade = 0
        .Fill.ForeColor.Brightness = 0
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 11
        .Name = "+mn-lt"
    End With
    Selection.OnAction = "Macro2"
    Range("A8").Select
    ActiveCell.FormulaR1C1 = "Tp HCM"
    Range("A9").Select
    ActiveCell.FormulaR1C1 = "Qu?ng Ninh"
    Range("A10").Select
    ActiveCell.FormulaR1C1 = "Hu?"
    Range("A2:A13").Select
    ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
    Selection.OnAction = "Macro2"
    Range("A2:A11").Select
    ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
    Selection.OnAction = "Macro2"
    Range("A2").Select
    ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Select
    Range("A2:A12").Select
End Sub

Huỳnh Cao Cường 11 Jan 2021

thầy ơi sao khi mình search nó chỉ ra có bài ở trên không có bài ở dưới vậy


Huỳnh Cao Cường 11 Jan 2021

thay cho xin doan code do dc ko ạ

Tuấn Ba [Chuyên gia] 12 Jan 2021

Chào bạn bạn lấy code tại đây nhé:

https://gitiho.com/blog/unicode-tieng...

Huỳnh Cao Cường 12 Jan 2021

Cam on thay

Huỳnh Cao Cường 12 Jan 2021

Ví dụ mình có 1 đoạn giá trị (string) được lấy từ inputbox có tiếng Việt, thầy cho mình xin 1 hàm để msgbox hiện ra câu đó có Tiếng Việt được ko ạ, mình đã copy về và làm và nó vẫn chưa hiện ra tiếng Việt

Huỳnh Cao Cường 12 Jan 2021
Đoạn mã của mình thầy xem giúp, trong đó UniVba la cái funtion mình copy theo cái mẫu của thầy gửi
Sub chuyen_vba_sang_unicode()
Dim tam As String
Dim tam2 As String
    tam = InputBox("Nhap 1 cau bang tieng Viet")
    tam2 = UniVba(tam)
    MsgBox tam2
End Sub
Huỳnh Cao Cường 12 Jan 2021
Sua lai doan mã theo youtube van ko dc thầy ơi
Sub chuyen_vba_sang_unicode()
Dim tam As String
Dim tam2 As String
    tam = InputBox("Nhap 1 cau bang tieng Viet")
    tam2 = UniVba(tam)
    Application.Assistant.DoAlert "Bang thông báo", tam, 0, 4, 0, 0, 0
End Sub
Huỳnh Cao Cường 12 Jan 2021
Sub chuyen_vba_sang_unicode()
Dim tam As String
Dim tam2 As String
    tam = InputBox("Nhap 1 cau bang tieng Viet")
    tam2 = UniVba(tam)
    Application.Assistant.DoAlert "Bang thông báo", tam2, 0, 4, 0, 0, 0
End Sub
Tuấn Ba [Chuyên gia] 12 Jan 2021

Chào bạn với msgbox tiếng việt bạn cần thêm API để hiện thị mình sẽ cung cấp đoạn này sau nhé.

Huỳnh Cao Cường 12 Jan 2021

cam on thay

Tuấn Ba [Chuyên gia] 13 Jan 2021

Chào bạn bạn xem đoạn code sau nhé.

Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal Hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#Else
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#End If
'nguồn sưu tầm
Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
   Dim BStrMsg, BStrTitle
   BStrMsg = StrConv(PromptUni, vbUnicode)
   BStrTitle = StrConv(TitleUni, vbUnicode)
   MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
Sub goidulieu()
    Dim s As String
    s = "Công ty TNHH Công Ngh" & ChrW(7879) & " Giáo D" & ChrW(7909) & "c Gitiho Vi" & ChrW(7879) & "t Nam"
    MsgBoxUni s
End Sub
Function UniVba(TxtUni As String) As String 'chuyen vba sang uni
Dim N, uni1 As String, uni2 As String
    If TxtUni = "" Then
        UniVba = """"""
    Else
        TxtUni = TxtUni & " "
        If AscW(Left(TxtUni, 1)) < 256 Then UniVba = """"
            For N = 1 To Len(TxtUni) - 1
                uni1 = Mid(TxtUni, N, 1)
                uni2 = AscW(Mid(TxtUni, N + 1, 1))
                 If AscW(uni1) > 255 And uni2 > 255 Then
                    UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & "
                 ElseIf AscW(uni1) > 255 And uni2 < 256 Then
                    UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & """
                 ElseIf AscW(uni1) < 256 And uni2 > 255 Then
                    UniVba = UniVba & uni1 & """ & "
                 Else
                    UniVba = UniVba & uni1
                End If
            Next
        If Right(UniVba, 4) = " & """ Then
            UniVba = Mid(UniVba, 1, Len(UniVba) - 4)
        Else
            UniVba = UniVba & """"
        End If
    End If
End Function

Huỳnh Cao Cường 14 Jan 2021

mình đã dán đoạn code đó vào 1 file excel (*.xlsm) mới nhưng khi chạy  nó báo lỗi.

Cái đoạn code này:

#If VBA7 Then
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal Hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#Else
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
#End If

Dán vô đâu thầy ơi

Huỳnh Cao Cường 14 Jan 2021

Ý mình muốn là chương trình nó ra 1 bảng thông báo nhập vô 1 câu tiếng Việt và msgbox hiện ra đúng câu Tiêng Việt đó

Huỳnh Cao Cường 14 Jan 2021
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal Hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
   Dim BStrMsg, BStrTitle
   BStrMsg = StrConv(PromptUni, vbUnicode)
   BStrTitle = StrConv(TitleUni, vbUnicode)
   MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function

Function UniVba(TxtUni As String) As String 'chuyen vba sang uni
Dim N, uni1 As String, uni2 As String
    If TxtUni = "" Then
        UniVba = """"""
    Else
        TxtUni = TxtUni & " "
        If AscW(Left(TxtUni, 1)) < 256 Then UniVba = """"
            For N = 1 To Len(TxtUni) - 1
                uni1 = Mid(TxtUni, N, 1)
                uni2 = AscW(Mid(TxtUni, N + 1, 1))
                 If AscW(uni1) > 255 And uni2 > 255 Then
                    UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & "
                 ElseIf AscW(uni1) > 255 And uni2 < 256 Then
                    UniVba = UniVba & "ChrW(" & AscW(uni1) & ") & """
                 ElseIf AscW(uni1) < 256 And uni2 > 255 Then
                    UniVba = UniVba & uni1 & """ & "
                 Else
                    UniVba = UniVba & uni1
                End If
            Next
        If Right(UniVba, 4) = " & """ Then
            UniVba = Mid(UniVba, 1, Len(UniVba) - 4)
        Else
            UniVba = UniVba & """"
        End If
    End If
End Function
Sub goidulieu()
    Dim s As String
    s = Range("A2").Value
    MsgBoxUni (s)
End Sub
Mình đã làm như vậy thì msgbox đã hiện Tiếng Việt nhưng nếu gán s = InputBox("Nhap Tieng Viet") thay cho  s = Range("A2").Value thì nó bị lỗi font

Tuấn Ba [Chuyên gia] 15 Jan 2021

Chào bạn vậy bạn có thể tham khảo ví dụ sau nhé:

https://drive.google.com/file/d/1CB7V...

Huỳnh Cao Cường 15 Jan 2021

Mình đã tải về và chạy thử 

Sub Test2()

    Dim MsgText As String, tieude As String

    Dim Name As Variant

    MsgText = UniConvert("Nhaapj teen vafo ddaay :")

    tieude = UniConvert("Dieenx ddanf tuhocvba chafo cacs banj")

    Name = Application.InputBox(Prompt:=MsgText, Title:=tieude, Default:="Nguyen Van A", Type:=2)  'Type:=2 la kieu ky tu Text

    If VarType(Name) = 11 Then Exit Sub 'Nguoi dung an vao nut Cancel

    'Cac ban tham khao them o day:

    ' https://tuhocvba.net/threads/cung-tim...

    MsgBox Name

  End Sub

nhập vô inputbox câu "Chào mừng " nhưng msgbox nó vẫn ko hiện tiếng Việt đầy đủ thầy ạ
Tuấn Ba [Chuyên gia] 16 Jan 2021

Chào bạn bạn để msgboxuni.. nó sẽ chạy bạn nhé.

Đào Nguyễn Du Mạc 15 Jan 2021

cách tải tài liệu thê nào vậy gitiho ơi.

Tuấn Ba [Chuyên gia] 16 Jan 2021

Chào bạn Ở phía dưới video bài học có các mục Hỏi đáp - Tài liệu tải về - Nội dung tóm tắt - Giảng viên, bạn bấm vào mục Tài liệu tải về, trong đó sẽ có tài liệu và nút bấm tải về bạn nhé. với bài học nào có tài liệu thì tab tài liệu sẽ có nút cho bạn tải nhé.

Ở đây tài liệu đầu vào bạn tải chương 0 bài 2 nhé.

Lê Thanh Trà 04 Jan 2021

LÀM THẾ NÀO ĐỂ TEXTBOX TRONG FORM HIỆN SẲN DỮ LIỆU KHI FORM ĐƯỢC GỌI?

VD: TEXTBOX NĂM SẼ HIỂN THỊ DỮ LIỆU CỦA C1  TRONG SHEET5

THANKS


G-Learning 05 Jan 2021

Bạn thiết lập trong lệnh:

Private Sub UserForm_Initialize()
End Sub

Những đoạn code trong lệnh này sẽ được chạy ngay khi bạn gọi Userform lên.

Lê Thanh Trà 15 Jan 2021

Thanks Thầy nhiều ạ, cho em hỏi thêm.

làm thế nào để vòng if hoạt động theo điều kiện như sau:

có 3 cột a b c  và 3 dòng 1 2 

Nếu dòng 2 của 3 cột = 0 thì msb "không thay đổi"

ngược lại nếu dòng 2 của 3 cột (bất kỳ cột nào) khác 0 thì sẽ tự thêm dữ liệu vào dòng 1 của cột tương ứng.

Mong thầy giúp đỡ

Trần Đình Tùng 15 Jan 2021


Trần Đình Tùng 15 Jan 2021

Private Sub cmdAdd_Click()

Dim RowNum As Long

Dim ListBoxRow As Long

Worksheets("Form").Activate

RowNum = Application.CountA(Range("A:A")) + 2

ListBoxRow = lstSearchResults.ListIndex + 2

Cells(RowNum, 1).Value = Worksheets("Product Search").Cells(ListBoxRow, 1).Value

Unload Me

End Sub

Private Sub cmdSearch_Click()

Dim RowNum As Long

Dim SearchRow As Long

RowNum = 2

SearchRow = 2

Worksheets("Stock Data").Activate

Do Until Cells(RowNum, 1).Value = ""

    If InStr(1, Cells(RowNum, 2).Value, txtKeywords.Value, vbTextCompare) > 0 Then

        Worksheets("Product Search").Cells(SearchRow, 1).Value = Cells(RowNum, 1).Value

        Worksheets("Product Search").Cells(SearchRow, 2).Value = Cells(RowNum, 2).Value

        Worksheets("Product Search").Cells(SearchRow, 3).Value = Cells(RowNum, 3).Value

        SearchRow = SearchRow + 1

    End If

    RowNum = RowNum + 1

Loop

If SearchRow = 2 Then

    MsgBox "No products were found that match your search criteria."

    Exit Sub

End If

lstSearchResults.RowSource = "SearchResults"

End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()

txtKeywords.SetFocus

Worksheets("Product Search").Range("A2:C100").ClearContents

End Sub




Trần Đình Tùng 15 Jan 2021

thầy ơi e nhờ thầy chút ạ 

e có bảng lít danh sách e muốn chọn và dữ liệu sang cột B , thầy xem đoạn code kia chỉnh như nào để sang dk cột B ạ 

cảm ơn thầy !

Tuấn Ba [Chuyên gia] 15 Jan 2021

Chào bạn bạn đẩy file lên nhé.

Trần Đình Tùng 15 Jan 2021

https://docs.google.com/spreadsheets/...

Em gửi thầy ạ. Thầy xem giùm ạ

Đỗ Xuân Huy 30 May 2020
Mình đã thử làm theo như bạn Tuấn Ba chỉ nhưng tại sao nó vẫn cho phép nhận dữ liệu trùng vậy ạ? Ngoài ra, sau mỗi lần import 1 file excel là xuất hiện thêm thông báo "Du lieu da bi trung" (trước đó ko bị). Đây là đoạn code của mình:

Option Explicit
Sub testtrung()
Dim dongcuoi_wbKQ As Long
Dim kieu As Long
dongcuoi_wbKQ = ThisWorkbook.Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
kieu = Application.WorksheetFunction.CountIfs(ThisWorkbook.Sheets(2). _
Range("A1:BM" & dongcuoi_wbKQ), Range("A1").Value, _
ThisWorkbook.Sheets(2).Range("A1:BM" & dongcuoi_wbKQ), Range("F1").Value)
If kieu >= 1 Then
MsgBox "Du lieu da bi trung"
End If
End Sub
Tuấn Ba [Chuyên gia] 30 May 2020
Bạn xem code nhé:
Option Explicit

Sub testloctrung()
Dim dc As Long, kieu As Integer
dc = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
kieu = Application.WorksheetFunction.CountIfs(Sheet1.Range("A1:A" & dc), Range("C1").Value, _
Sheet1.Range("B1:B" & dc), Range("D1").Value)
If (kieu >= 1) Then
MsgBox "Trung"
End If
End Sub

Đỗ Xuân Huy 31 May 2020
Mình đã thử nhưng vẫn có thể nhập được file trùng, ngoài ra còn xuất hiện thêm lỗi "runtime error 9 subscript out of range". Bạn vui lòng kiểm tra giùm mình với.

https://drive.google.com/file/d/1ueQ0...
Tuấn Ba [Chuyên gia] 01 Jun 2020

chào bạn bạn xem code nhé.
Option Explicit

Sub Gop_DuLieu_TongQuat()
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Show
.Title = "Hay chon file de mo"

'Xac dinh file nao duoc chon
Dim i As Long
For i = 1 To .SelectedItems.Count
'Gan bien cho cac workbook
Dim wb_KQ As Workbook
Dim wb_Select As Workbook
Set wb_KQ = ThisWorkbook
Set wb_Select = Workbooks.Open(.SelectedItems(i))
Dim kieu As Integer



'Dua du lieu tu cac workbook khac

'Xac dinh dong cuoi cua Wb2
Dim dongcuoi_wb As Long
dongcuoi_wb = wb_Select.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

'Xac dinh khoang cach so dong du lieu
'Khoang cach = dongcuoi_wb2 - dongdau_wb2 + 1 (neu 2 dong trung nhau thi van có ket qua la 1 dong)
Dim dongdau_wb As Long
dongdau_wb = 8
Dim khoangcach_wb As Long
khoangcach_wb = dongcuoi_wb - dongdau_wb + 1
'Noi nhan
'Tim dong cuoi cua noi nhan => la diem bat dau
'Pham vi cua vung nhan = Khoang cach
Dim dongcuoi_wbKQ As Long
dongcuoi_wbKQ = wb_KQ.Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
kieu = WorksheetFunction.CountIfs(wb_KQ.Sheets(2).Range("A6:A" & dongcuoi_wb), wb_Select.Sheets(1).Range("E2"), wb_KQ.Sheets(2).Range("C6:C" & dongcuoi_wb), wb_Select.Sheets(1).Range("G2"))
If (kieu < 1) Then
wb_KQ.Sheets(2).Range("A" & dongcuoi_wbKQ + 1 & ":BM" & dongcuoi_wbKQ + khoangcach_wb).Value = _
wb_Select.Sheets(1).Range("A" & dongdau_wb & ":BM" & dongcuoi_wb).Value
End If

wb_KQ.Sheets(2).Range("D1").Value = WorksheetFunction.CountIfs(wb_KQ.Sheets(2).Range("A6:A" & dongcuoi_wb), 1)

'Call testtrung
'Call testloctrung

wb_Select.Close SaveChanges:=False

Next i
End With
End Sub
link:
https://mfedu-my.sharepoint.com/perso...




Đỗ Xuân Huy 01 Jun 2020
Cám ơn bạn Tuấn Ba, đúng là chạy được rồi nhưng có điều mình ko hiểu sao tháng 1,2 nó kiểm tra được, nhưng tháng 3,4 thì lại vẫn có thể nhập trùng được nhỉ? kiểm tra thì thấy những file bảng lương tháng này có cấu trúc giống nhau mà nhỉ?
Tuấn Ba [Chuyên gia] 01 Jun 2020
Chào bạn bạn thử xem lại xem vì code mình viết chỗ kieu đó là check trùng của tháng rồi nếu trùng thì nó không import vào nữa mà.
Hoàng Văn Tài 15 Jan 2021

Hi thầy Tuấn Ba, như đoạn code của thầy đưa phía trên, thì thầy có thể giải thích giúp e chỗ này được không ah?

Sau khi End If tức là đã thực thi được code lấy được dữ liệu vào file tổng hợp rồi
thì đoạn tiếp theo này có ý nghĩa để làm gì ah?
wb_KQ.Sheets(2).Range("D1").Value = WorksheetFunction.CountIfs(wb_KQ.Sheets(2).Range("A6:A" & dongcuoi_wb), 1)

Tuấn Ba [Chuyên gia] 15 Jan 2021

Chào bạn phần code có thể mình ghi thừa vào trong đó rồi.

Hoàng Văn Tài 15 Jan 2021