Option Explicit
Private Sub ComboBox1_Change()
Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range
Dim VTr As Byte, jJ As Byte: ReDim Mg(1 To 3)
Dim StrC As String
Set Sh = Sheets("Data")
Set Rng = Sh.Range(Sh.[a2], Sh.[A65500].End(xlUp))
For jJ = 1 To 3
With Application.WorksheetFunction
VTr = InStr(ComboBox1.Value, "-") + 2
StrC = Mid(ComboBox1.Value, VTr, 99)
Mg(jJ) = .VLookup(StrC, Range("BTra"), jJ + 1, 0)
End With
For Each Cls In Range([A20], [A65500].End(xlUp))
Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
Cls.Offset(, jJ + 1).Value = sRng.Offset(, Mg(jJ) - 1).Value
Else
Cls.Interior.ColorIndex = 38
End If
Next Cls
Next jJ
End Sub
Anh ChanhTQ anh có thể giải thích giúp em những câu lệnh trên được không em đọc mà không hơi không hiểu. Với lại em có vấn đề này mong Anh và các bạn giúp em có bài tập em tự viết code mà em không muốn dùng vòng lặp nhưng không biết giải quyết như thế mong các bạn xem giúp với. Cảm ơn nhiềuPHP:Option Explicit Private Sub ComboBox1_Change() ReDim Mg(1 To 3) For jJ = 1 To 3 With Application.WorksheetFunction VTr = InStr(ComboBox1.Value, "-") + 2 StrC = Mid(ComboBox1.Value, VTr, 99) Mg(jJ) = .VLookup(StrC, Range("BTra"), jJ + 1, 0) End With If Not sRng Is Nothing Then Cls.Offset(, jJ + 1).Value = sRng.Offset(, Mg(jJ) - 1).Value End Sub
(1) Đây vẫn còn vòng lặp, nhưng lặp theo vùng:(2) Anh có thể giải thích giúp em những câu lệnh trên được không.
(1) Với lại em có vấn đề này mong Anh và các bạn giúp em có bài tập em tự viết code mà em không muốn dùng vòng lặp nhưng không biết giải quyết như thế mong các bạn xem giúp với. Cảm ơn nhiều
Option Explicit
Sub CopyToAreas()
Dim Sh As Worksheet, Cls As Range
On Error Resume Next
Set Sh = Sheets("S3")
With Sh.Columns("A:a")
For Each Cls In .SpecialCells(xlCellTypeBlanks).Areas
If Not Cls Is Nothing Then
Cls.Value = Cls.Cells(1).Offset(-1).Value
End If
Next Cls
End With
End Sub
Private Sub ComboBox1_Change()
1 ReDim Mg(1 To 3) ' Khai 1 biến mảng có 3 fần tử'
For jJ = 1 To 3 'Thiết lập vòng lặp để lấy giá trị cột =>(a)'
3 With Application.WorksheetFunction
VTr = InStr(ComboBox1.Value, "-") + 2 'Tìm vị trí bắt đầu mã (b)'
5 StrC = Mid(ComboBox1.Value, VTr, 99) 'Lấy chuỗi mã theo trị của VTr'
Mg(jJ) = .VLookup(StrC, Range("BTra"), jJ + 1, 0)'Nhờ hàm của excel lấy trị cột (c)'
7 End With
If Not sRng Is Nothing Then _
9 Cls.Offset(, jJ + 1).Value = sRng.Offset(, Mg(jJ) - 1).Value '(d)'
End Sub