Chuyên đề giải đáp những thắc mắc về code VBA

Liên hệ QC

maytinhvp01

Thành viên thường trực
Tham gia
27/7/13
Bài viết
390
Được thích
179
Mình muốn nhờ giải thich câu lệnh " If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c) "
trong ví du:
Public Function LonNhat(Ran As Range)
Dim max As Double, v As Integer, d As Integer, c As Integer
max = Ran.Cells(1, 1)
For d = 1 To Ran.Rows.Count
For c = 1 To Ran.Columns.Count
If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c)
Next c
Next d
v = Tim(max, Ran)
LonNhat = max
End Function
-------------------------------------------------------
[INFO1]Thông báo:
Vì topic này:
http://www.giaiphapexcel.com/forum/...ải-thích-các-code-đề-nghị-các-bạn-gửi-vào-đây
đã quá dài nên BQT đóng lại.
Nay tôi mở topic mới với cùng chủ đề: GIẢI THÍCH NHỮNG THẮC MẮC VỀ CODE
Các bạn nếu có nhu cầu giải thích code, vui lòng post tại đây nhé
NDU96081631

[/INFO1]
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cho em hỏi đoạn code này có gì sai?
PHP:
Public Sub CongToCompare()
    Dim Ws As Worksheet
    Dim Arr(), i As Long, j As Long, k As Long
    Dim SoSheet As Byte
  
    SoSheet = Application.Sheets.Count
  
    ReDim Result(1 To SoSheet * 50000, 1 To 10)
    With Workbooks("(E) Daily Attendance(Upload)(V)(H4006M1_VN).xls")
        For Each Ws In .Worksheets
            Arr = Ws.Range("A5", Ws.Range("A50000").End(xlUp)).Resize(, 10).Value2
            For i = 1 To UBound(Arr, 1)
                If Len(Arr(i, 2)) = 5 Then
                    k = k + 1
                    For j = 1 To 10
                        Result(k, j) = Arr(i, j)
                    Next j
                End If
            Next i
        Next Ws
    End With

    With Workbooks("Balance MrT and ERP.xlsb")
        .Sheets("Data").Range("C5").Resize(k, 10) = Result
    End With
  
End Sub

Đoạn code này nằm trong file Balance MrT and ERP.xlsb và là file đang làm việc. Khi em chạy code thì dữ liệu lấy từ file (E) Daily Attendance(Upload)(V)(H4006M1_VN).xls sang bị thiếu là sao nhỉ? Không biết cái For each của em có vấn đề gì không mà lại vậy
 
Upvote 0
Cho em hỏi đoạn code này có gì sai?
PHP:
Public Sub CongToCompare()
    Dim Ws As Worksheet
    Dim Arr(), i As Long, j As Long, k As Long
    Dim SoSheet As Byte

    SoSheet = Application.Sheets.Count

    ReDim Result(1 To SoSheet * 50000, 1 To 10)
    With Workbooks("(E) Daily Attendance(Upload)(V)(H4006M1_VN).xls")
        For Each Ws In .Worksheets
            Arr = Ws.Range("A5", Ws.Range("A50000").End(xlUp)).Resize(, 10).Value2
            For i = 1 To UBound(Arr, 1)
                If Len(Arr(i, 2)) = 5 Then
                    k = k + 1
                    For j = 1 To 10
                        Result(k, j) = Arr(i, j)
                    Next j
                End If
            Next i
        Next Ws
    End With

    With Workbooks("Balance MrT and ERP.xlsb")
        .Sheets("Data").Range("C5").Resize(k, 10) = Result
    End With

End Sub

Đoạn code này nằm trong file Balance MrT and ERP.xlsb và là file đang làm việc. Khi em chạy code thì dữ liệu lấy từ file (E) Daily Attendance(Upload)(V)(H4006M1_VN).xls sang bị thiếu là sao nhỉ? Không biết cái For each của em có vấn đề gì không mà lại vậy
Bạn kiểm tra: file (E) Daily Attendance(Upload)(V)(H4006M1_VN).xls có đang mở không?
Nếu không mở thì không chạy được nhé!
Bổ sung: Trường hợp này có thể dùng ADO để lấy dữ liệu từ file đang đóng, như vậy sẽ nhanh hơn.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn kiểm tra: file (E) Daily Attendance(Upload)(V)(H4006M1_VN).xls có đang mở không?
Nếu không mở thì không chạy được nhé!
Bổ sung: Trường hợp này có thể dùng ADO để lấy dữ liệu từ file đang đóng, như vậy sẽ nhanh hơn.

File của mình vẫn mở, dữ liệu lấy được chỉ là nó không lấy đủ.

Mình có sưu tập được đoạn code này nhưng áp dụng file mình thì nó không chạy, không hiểu sao luôn.
File của mình có nhiều sheet nhưng dữ liệu form là như nhau, tại ô A1 luôn là tiêu đề.

Dữ liệu bắt đầu có từ dòng 5 cột A đến cột J. (Vài vạn dòng)
Nó báo lỗi tại dòng: rst.Open SQL, cnn, 3, 3, 1 là Run-time error '450' Wrong number of arguments or invalid property assignment
PHP:
Sub NMH()
    Dim cnn As Object, rst As Object
    Dim SQL$, Ws As Worksheet
        Set cnn = CreateObject("ADODB.Connection")
        Set rst = CreateObject("ADODB.Connection")
        With cnn
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                                "Data source=" & ThisWorkbook.FullName & _
                                ";Extended properties=""Excel 12.0;IMEX=1;HDR=Yes"";"
            .Open
        End With
        For Each Ws In Worksheets
            If Ws.CodeName <> "Result" Then SQL = SQL & " " & "[" & Ws.Name & "$A5:J]"
        Next
        SQL = "SELECT * FROM " & Replace(Trim(SQL), " ", " UNION ALL SELECT * FROM ")
        rst.Open SQL, cnn, 3, 3, 1
        [A2].CopyFromRecordset rst
        rst.Close: Set rst = Nothing
        cnn.Close: Set cnn = Nothing
End Sub
 

File đính kèm

  • Hoi ve ADO.xlsm
    21.2 KB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
Cốt ấy hốt ở đâu ra vậy?
Đem qua hộp CSDL hỏi. Và réo tên cái "chị" xinh xinh với cái tên phản cảm "ổ tơ ổ rệp" gì đó.
 
Upvote 0
Cho em hỏi đoạn code này có gì sai?
PHP:
Public Sub CongToCompare()
    Dim Ws As Worksheet
    Dim Arr(), i As Long, j As Long, k As Long
    Dim SoSheet As Byte
 
    SoSheet = Application.Sheets.Count
 
    ReDim Result(1 To SoSheet * 50000, 1 To 10)
    With Workbooks("(E) Daily Attendance(Upload)(V)(H4006M1_VN).xls")
        For Each Ws In .Worksheets
            Arr = Ws.Range("A5", Ws.Range("A50000").End(xlUp)).Resize(, 10).Value2
            For i = 1 To UBound(Arr, 1)
                If Len(Arr(i, 2)) = 5 Then
                    k = k + 1
                    For j = 1 To 10
                        Result(k, j) = Arr(i, j)
                    Next j
                End If
            Next i
        Next Ws
    End With

    With Workbooks("Balance MrT and ERP.xlsb")
        .Sheets("Data").Range("C5").Resize(k, 10) = Result
    End With
 
End Sub

Đoạn code này nằm trong file Balance MrT and ERP.xlsb và là file đang làm việc. Khi em chạy code thì dữ liệu lấy từ file (E) Daily Attendance(Upload)(V)(H4006M1_VN).xls sang bị thiếu là sao nhỉ? Không biết cái For each của em có vấn đề gì không mà lại vậy
Theo mình thì bạn thử tăng cái này lên.vì nếu dữ liệu vượt quá 50000 dòng thì là lỗi.
Arr = Ws.Range("A5", Ws.Range("A50000").End(xlUp)).Resize(, 10).Value2
 
Upvote 0
Theo mình thì bạn thử tăng cái này lên.vì nếu dữ liệu vượt quá 50000 dòng thì là lỗi.
Arr = Ws.Range("A5", Ws.Range("A50000").End(xlUp)).Resize(, 10).Value2

Bạn ơi không báo lỗi mà chỉ là dữ liệu mình không đủ thôi. Ngoài ra đây là vùng dữ liệu mình cần lấy cho nên tăng cái này thêm bao nhiêu thì kết quả vẫn vậy
 
Upvote 0
Bạn ơi không báo lỗi mà chỉ là dữ liệu mình không đủ thôi. Ngoài ra đây là vùng dữ liệu mình cần lấy cho nên tăng cái này thêm bao nhiêu thì kết quả vẫn vậy
Đây là câu lệnh gán dữ liệu vào mảng .Nó sẽ không báo lỗi khi dữ liệu của bạn vượt quá 50.000.Mà nó lấy thiếu dữ liệu vào mảng đó.Nên khi dữ liệu ra sẽ bị thiếu.
 
Upvote 0
Đây là câu lệnh gán dữ liệu vào mảng .Nó sẽ không báo lỗi khi dữ liệu của bạn vượt quá 50.000.Mà nó lấy thiếu dữ liệu vào mảng đó.Nên khi dữ liệu ra sẽ bị thiếu.
Uh mình hiểu, nhưng mình biết dữ liệu nó chỉ đến đó thôi bạn ạ, vậy mới khó hiểu :((. Dữ liệu đến đúng dòng 50.000
 
Upvote 0
Cho em hỏi đoạn code này có gì sai?
PHP:
Public Sub CongToCompare()
    Dim Ws As Worksheet
    Dim Arr(), i As Long, j As Long, k As Long
    Dim SoSheet As Byte

    SoSheet = Application.Sheets.Count

    ReDim Result(1 To SoSheet * 50000, 1 To 10)
    With Workbooks("(E) Daily Attendance(Upload)(V)(H4006M1_VN).xls")
        For Each Ws In .Worksheets
            Arr = Ws.Range("A5", Ws.Range("A50000").End(xlUp)).Resize(, 10).Value2
            For i = 1 To UBound(Arr, 1)
                If Len(Arr(i, 2)) = 5 Then
                    k = k + 1
                    For j = 1 To 10
                        Result(k, j) = Arr(i, j)
                    Next j
                End If
            Next i
        Next Ws
    End With

    With Workbooks("Balance MrT and ERP.xlsb")
        .Sheets("Data").Range("C5").Resize(k, 10) = Result
    End With

End Sub

Đoạn code này nằm trong file Balance MrT and ERP.xlsb và là file đang làm việc. Khi em chạy code thì dữ liệu lấy từ file (E) Daily Attendance(Upload)(V)(H4006M1_VN).xls sang bị thiếu là sao nhỉ? Không biết cái For each của em có vấn đề gì không mà lại vậy
Thấy bàng tán sôi nổi. Nên Chọt vào sửa code. Không được thì thôi nhé
Mã:
Public Sub CongToCompare()
    Dim Ws As Worksheet, Result As Variant, Arr(), i As Long, j As Long, k As Long

    With Workbooks("(E) Daily Attendance(Upload)(V)(H4006M1_VN).xls")
        For Each Ws In .Worksheets
            Arr = Ws.Range("A5", Ws.Range("A65000").End(xlUp)).Resize(, 10).Value2
            For i = 1 To UBound(Arr, 1)
                If Len(Arr(i, 2)) = 5 Then
                    k = k + 1
                    ReDim Preserve Result(1 To 10, 1 To k)
                    For j = 1 To 10
                        Result(j, k) = Arr(i, j)
                    Next j
                End If
            Next i
        Next Ws
    End With

    With Workbooks("Balance MrT and ERP.xlsb")
        .Sheets("Data").Range("C5").Resize(k, 10) = Application.WorksheetFunction.Transpose(Result)
    End With

End Sub



 
Lần chỉnh sửa cuối:
Upvote 0
-em có 1 vấn đề nhờ các anh chị trong group giúp ạ
-em có 1 File excel ( sheep 1 là "thông tin", sheep 2 là "file tổng")
+ em sử dụng làm Vlookup để lấy thông tin từ "file tổng" chuyển qua file " thông tin" dựa vào Mã HV
+ Vấn đề em gặp là Vlookup chỉ lấy được giá trị mà không lấy đc: màu sắc của ô ( ô được tô màu vàng ), comment, màu sắc của chữ ( chữ màu đỏ ).
- em mong anh chị giúp tạo 1 hàm Xlookup có chức năng như Vlookup nhưng lấy được giá trị và cả (màu sắc của ô,comment, màu sắc của chữ ) , còn nếu không thể làm 1 hàm như Xlookup anh chị giúp em viết code lấy giá trị và màu sắc của ô,comment, màu sắc của chữ dựa vào mã HV trong file " thông tin" ạ
vd: =Xlookup ( X, Y ,Z ,0 or 1)
X là Giá trị dùng để dò tìm
Y là Bảng giá trị dò
Z là Thứ tự của cột cần lấy dữ liệu trên bảng giá trị dò
0 là giá trị tuyệt đối
X Y Z là các giá trị mình nhập, mong các anh chị giúp, em cảm ơn nhiều ạ

em có viết 1 đoan VBA như sau :
Function Xlookup(cn As String)
Xlookup = Sheet2.Range("a:a").Find(cn).Offset(, 1).Value
End Function
nhưng nhựơc điểm là không linh động cột cần lấy, mỗi lần lấy phải vào code sửa offset và không lấy được màu sắc của ô,comment, màu sắc của chữ ( còn thua xài vlookup nữa anh chị ạ :(( )
 

File đính kèm

  • file.xlsx
    12.5 KB · Đọc: 5
Upvote 0
-em có 1 vấn đề nhờ các anh chị trong group giúp ạ
-em có 1 File excel ( sheep 1 là "thông tin", sheep 2 là "file tổng")
+ em sử dụng làm Vlookup để lấy thông tin từ "file tổng" chuyển qua file " thông tin" dựa vào Mã HV
+ Vấn đề em gặp là Vlookup chỉ lấy được giá trị mà không lấy đc: màu sắc của ô ( ô được tô màu vàng ), comment, màu sắc của chữ ( chữ màu đỏ ).
- em mong anh chị giúp tạo 1 hàm Xlookup có chức năng như Vlookup nhưng lấy được giá trị và cả (màu sắc của ô,comment, màu sắc của chữ ) , còn nếu không thể làm 1 hàm như Xlookup anh chị giúp em viết code lấy giá trị và màu sắc của ô,comment, màu sắc của chữ dựa vào mã HV trong file " thông tin" ạ
vd: =Xlookup ( X, Y ,Z ,0 or 1)
X là Giá trị dùng để dò tìm
Y là Bảng giá trị dò
Z là Thứ tự của cột cần lấy dữ liệu trên bảng giá trị dò
0 là giá trị tuyệt đối
X Y Z là các giá trị mình nhập, mong các anh chị giúp, em cảm ơn nhiều ạ

em có viết 1 đoan VBA như sau :
Function Xlookup(cn As String)
Xlookup = Sheet2.Range("a:a").Find(cn).Offset(, 1).Value
End Function
nhưng nhựơc điểm là không linh động cột cần lấy, mỗi lần lấy phải vào code sửa offset và không lấy được màu sắc của ô,comment, màu sắc của chữ ( còn thua xài vlookup nữa anh chị ạ :(( )

Xin chào @kienphamiuh ,
Oanh Thơ (OT) không thể tạo được Function Xlookup theo mong muốn của bạn, trong khi chờ đợi bạn dùng tạm sub FindAndCopyPase xem được không?
Mã:
Sub FindAndCopyPase()
    Dim lastRow As Long, i As Long, varKey As Variant
    Dim c As Range, shtData As Worksheet, shtKQ As Worksheet
    Set shtData = ThisWorkbook.Worksheets("Sheet2")
    Set shtKQ = ThisWorkbook.Worksheets("Sheet1")
    With shtKQ
        lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
        varKey = .Range("A2:A" & lastRow)
    End With
    With shtData
        For i = LBound(varKey) To UBound(varKey)
            Set c = .Columns("A").Find(What:=varKey(i, 1), _
                After:=.Range("A1"), LookIn:=xlValues, _
                LookAt:=xlWhole, SearchDirection:=xlNext)
            If c Is Nothing Then
                shtKQ.Cells(i + 1, 2).Value = "#N/A"
            Else
                c.Resize(1, 2).Offset(0, 1).Copy Destination:=shtKQ.Cells(i + 1, 2)
            End If
        Next i
    End With
End Sub
-------------
Ngoài ra, OT góp ý chút với bạn.
Trường hợp của bạn nên tạo một chủ đề mới, còn trong chủ đề này có thể chỉ trao đổi những vấn đề liên quan đến code có sẵn.
 
Upvote 0
Xin chào @kienphamiuh ,
Oanh Thơ (OT) không thể tạo được Function Xlookup theo mong muốn của bạn, trong khi chờ đợi bạn dùng tạm sub FindAndCopyPase xem được không?
Mã:
Sub FindAndCopyPase()
    Dim lastRow As Long, i As Long, varKey As Variant
    Dim c As Range, shtData As Worksheet, shtKQ As Worksheet
    Set shtData = ThisWorkbook.Worksheets("Sheet2")
    Set shtKQ = ThisWorkbook.Worksheets("Sheet1")
    With shtKQ
        lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
        varKey = .Range("A2:A" & lastRow)
    End With
    With shtData
        For i = LBound(varKey) To UBound(varKey)
            Set c = .Columns("A").Find(What:=varKey(i, 1), _
                After:=.Range("A1"), LookIn:=xlValues, _
                LookAt:=xlWhole, SearchDirection:=xlNext)
            If c Is Nothing Then
                shtKQ.Cells(i + 1, 2).Value = "#N/A"
            Else
                c.Resize(1, 2).Offset(0, 1).Copy Destination:=shtKQ.Cells(i + 1, 2)
            End If
        Next i
    End With
End Sub
-------------
Ngoài ra, OT góp ý chút với bạn.
Trường hợp của bạn nên tạo một chủ đề mới, còn trong chủ đề này có thể chỉ trao đổi những vấn đề liên quan đến code có sẵn.
cảm ơn bạn mình sẽ tạo 1 chủ đề, công việc của mình liên quan đến mấy cái này , hôm nào cũng copy paste coment với màu sắc bằng thủ công mà nản ghê luôn :)
 
Upvote 0
File của mình vẫn mở, dữ liệu lấy được chỉ là nó không lấy đủ.

Mình có sưu tập được đoạn code này nhưng áp dụng file mình thì nó không chạy, không hiểu sao luôn.
File của mình có nhiều sheet nhưng dữ liệu form là như nhau, tại ô A1 luôn là tiêu đề.

Dữ liệu bắt đầu có từ dòng 5 cột A đến cột J. (Vài vạn dòng)
Nó báo lỗi tại dòng: rst.Open SQL, cnn, 3, 3, 1 là Run-time error '450' Wrong number of arguments or invalid property assignment
PHP:
Sub NMH()
    Dim cnn As Object, rst As Object
    Dim SQL$, Ws As Worksheet
        Set cnn = CreateObject("ADODB.Connection")
        Set rst = CreateObject("ADODB.Connection")
        With cnn
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                                "Data source=" & ThisWorkbook.FullName & _
                                ";Extended properties=""Excel 12.0;IMEX=1;HDR=Yes"";"
            .Open
        End With
        For Each Ws In Worksheets
            If Ws.CodeName <> "Result" Then SQL = SQL & " " & "[" & Ws.Name & "$A5:J]"
        Next
        SQL = "SELECT * FROM " & Replace(Trim(SQL), " ", " UNION ALL SELECT * FROM ")
        rst.Open SQL, cnn, 3, 3, 1
        [A2].CopyFromRecordset rst
        rst.Close: Set rst = Nothing
        cnn.Close: Set cnn = Nothing
End Sub

Hi @tueyennhi , bạn thử:
Thay:
Mã:
Set rst = CreateObject("ADODB.Connection")
thành:
Mã:
Set rst = CreateObject("ADODB.Recordset")
và thay:
Mã:
If Ws.CodeName <> "Result"
thành:
Mã:
If Ws.CodeName <> "Sheet5"
Và sửa:
Mã:
Sheet1 (2)= Sheet2,
Sheet1 (3)= Sheet3,
Sheet1 (4)= Sheet4
Bỏ tất cả tất cả những gì sau khoảng trống.
Xem thế nào ạ.
 

File đính kèm

  • Hoi ve ADO_.xlsm
    22.2 KB · Đọc: 6
Upvote 0
Cốt ấy hốt ở đâu ra vậy?
Đem qua hộp CSDL hỏi. Và réo tên cái "chị" xinh xinh với cái tên phản cảm "ổ tơ ổ rệp" gì đó.

Vâng anh, code này em có từ khá lâu rồi giờ không nhớ ở chủ đề nào để hỏi. Chị xinh xinh có phải là Autoreply không anh :D vì em thấy chị đó like anh và ảnh đại diện thì rất xinh.
Bài đã được tự động gộp:

Thấy bàng tán sôi nổi. Nên Chọt vào sửa code. Không được thì thôi nhé
Mã:
Public Sub CongToCompare()
    Dim Ws As Worksheet, Result As Variant, Arr(), i As Long, j As Long, k As Long

    With Workbooks("(E) Daily Attendance(Upload)(V)(H4006M1_VN).xls")
        For Each Ws In .Worksheets
            Arr = Ws.Range("A5", Ws.Range("A65000").End(xlUp)).Resize(, 10).Value2
            For i = 1 To UBound(Arr, 1)
                If Len(Arr(i, 2)) = 5 Then
                    k = k + 1
                    ReDim Preserve Result(1 To 10, 1 To k)
                    For j = 1 To 10
                        Result(j, k) = Arr(i, j)
                    Next j
                End If
            Next i
        Next Ws
    End With

    With Workbooks("Balance MrT and ERP.xlsb")
        .Sheets("Data").Range("C5").Resize(k, 10) = Application.WorksheetFunction.Transpose(Result)
    End With

End Sub

Để mình thử, cảm ơn bạn nhé.
 
Upvote 0
Hi @tueyennhi , bạn thử:
Thay:
Mã:
Set rst = CreateObject("ADODB.Connection")
thành:
Mã:
Set rst = CreateObject("ADODB.Recordset")
và thay:
Mã:
If Ws.CodeName <> "Result"
thành:
Mã:
If Ws.CodeName <> "Sheet5"
Và sửa:
Mã:
Sheet1 (2)= Sheet2,
Sheet1 (3)= Sheet3,
Sheet1 (4)= Sheet4
Bỏ tất cả tất cả những gì sau khoảng trống.
Xem thế nào ạ.

Sau khi sửa lại tên sheet thì code đã chạy. Nhưng mình thấy mỗi một sheet sẽ mất đi một dòng. Sửa lại đoạn này

PHP:
...
If Ws.CodeName <> "Result" Then SQL = SQL & " " & "[" & Ws.Name & "$A5:J]"
...
thành
PHP:
...
If Ws.CodeName <> "Result" Then SQL = SQL & " " & "[" & Ws.Name & "$A4:J]"
...
thì dữ liệu đã được lấy đủ.
 
Upvote 0
Vâng anh, code này em có từ khá lâu rồi giờ không nhớ ở chủ đề nào để hỏi. Chị xinh xinh có phải là Autoreply không anh :D vì em thấy chị đó like anh và ảnh đại diện thì rất xinh.
...
Dùng từ "like" cẩn thận. Nó có hai nghĩa:
1. giống - tôi không dám nhận "giống cô ta" đâu
2. thích - tôi lại càng không dám nhận, "cô" hay "cậu" gì tôi cũng chạy hết.
 
Upvote 0
Dùng từ "like" cẩn thận. Nó có hai nghĩa:
1. giống - tôi không dám nhận "giống cô ta" đâu
2. thích - tôi lại càng không dám nhận, "cô" hay "cậu" gì tôi cũng chạy hết.

o_O Em chỉ mô tả hành động của chị "ổ tơ ổ rệp" thôi mà. Thôi thì thích câu nói của anh :D
 
Upvote 0
Em cần gửi lệnh in tới cửa sổ ứng dụng khác thông qua VBA. Code em viết
Sub Text()
AppActivate("Filetext")
Application.Wait Now + TimeValue("0:00:01")
Application.SendKeys "%P"
Application.Wait Now + TimeValue("0:00:01")
Application.SendKeys "~"
End Sub
Code chạy nhưng dòng
Application.SendKeys "%P"
Không thấy bật PrintPreview
Các bác giúp em với
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom