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:
PHP:
Sub PrintComment()
    Application.DisplayCommentIndicator = xlCommentAndIndicator
    Dim Prt As PageSetup
    Set Prt = ActiveSheet.PageSetup
    With Prt
        .PrintComments = xlPrintInPlace
    End With
    ActiveSheet.PrintPreview
End Sub

Mình sửa lại đoạn code của bạn chút.

- PrintComments properties nó có 2 giá trị là:
xlPrintInPlace
xlPrintSheetEnd

Bạn lựa chọn cái nào phù hợp nhé.

vậy làm sao để chỉnh 1 lúc nhiều sheet được anh. (không dùng vòng lặp chạy qua từng sheet)
 
Upvote 0
đúng rồi bạn! dùng để in chú thích.

+ Nếu không dùng Vòng lặp thì sửa lại chỗ lệnh Print Preview một chút như thế này.
PHP:
Sub PrintComment()
    Application.DisplayCommentIndicator = xlCommentAndIndicator
    Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
    Dim Prt As PageSetup
    Set Prt = ActiveSheet.PageSetup
    With Prt
        .PrintComments = xlPrintInPlace
    End With
    ThisWorkbook.PrintPreview
End Sub
 
Upvote 0
+ Nếu không dùng Vòng lặp thì sửa lại chỗ lệnh Print Preview một chút như thế này.
PHP:
Sub PrintComment()
    Application.DisplayCommentIndicator = xlCommentAndIndicator
    Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
    Dim Prt As PageSetup
    Set Prt = ActiveSheet.PageSetup
    With Prt
        .PrintComments = xlPrintInPlace
    End With
    ThisWorkbook.PrintPreview
End Sub
ý mình không phải muốn xem trướcmuốn chỉnh toàn bộ sheet có tên trong danh sách sang chế độ in như hiển thị trên trang tính (in chú thích)
trong khi code chỉ thực hiện ngay trên sheet được Active tức là sau khi chạy code thì chỉ có Sheet1 là in được chú thích, còn sheet2 và sheet3 vẫn không in được chú thích
 
Upvote 0
ý mình không phải muốn xem trướcmuốn chỉnh toàn bộ sheet có tên trong danh sách sang chế độ in như hiển thị trên trang tính (in chú thích)
trong khi code chỉ thực hiện ngay trên sheet được Active tức là sau khi chạy code thì chỉ có Sheet1 là in được chú thích, còn sheet2 và sheet3 vẫn không in được chú thích

- Ngoài vòng lặp ra, mình chưa nghĩ ra được cách nào hay hơn.
 
Upvote 0
bác nào giải thích đoạn code này giúp mình với

ActiveSheet.ListObjects("bang").Range.AutoFilter Field:=1, _
Criteria1:="*" & [b3] & "*", Operator:=xlFilterValues
 
Upvote 0
bác nào giải thích đoạn code này giúp mình với

ActiveSheet.ListObjects("bang").Range.AutoFilter Field:=1, _
Criteria1:="*" & [b3] & "*", Operator:=xlFilterValues

- Bạn có 01 cái Table, có tên là bang
- Tiến hành Filter dữ liệu của Table đó, tại cột 1 của bang, dựa vào điều kiện của cells B3.
 
Upvote 0
Cám ơn bác.
Bác cho em hỏi là giờ em muốn filter cột 2 của bảng thì cần sửa điều kiện gì vậy bác??

Mã:
ActiveSheet.ListObjects("bang").Range.AutoFilter Field:=1, _
Criteria1:="*" & [b3] & "*", Operator:=xlFilterValues

Sửa số 1 thành số 2
 
Upvote 0
Mã:
ActiveSheet.ListObjects("bang").Range.AutoFilter Field:=1, _
Criteria1:="*" & [b3] & "*", Operator:=xlFilterValues

Sửa số 1 thành số 2
hi bác . theo hướng dẫn của bác em đã lọc đượnc dữ liệu trong bảng
còn vấn đề là nếu dữ liệu định dạng kiểu ngày tháng thì không lọc được.

bác xem giúp em xem bị lỗi gì vậy bác
 

File đính kèm

Upvote 0
Chào ACE GPE,
em có đoạn code bên dưới, khi run thì không tác dụng, ACE kiểm tra giúp em nhé. em cảm ơn

Mã:
Sub Copy()
Sheets("Pickticket").Select
    If Sheets("Pickticket").Range("A2") <> Null Then
        Sheets("Pickticket").Range("B2").Copy Sheets("DN").Range("D5").PasteSpecial xlPasteValues
    End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Chào ACE GPE,
em có đoạn code bên dưới, khi run thì không tác dụng, ACE kiểm tra giúp em nhé. em cảm ơn

Sub Copy()
Sheets("Pickticket").Select
If Sheets("Pickticket").Range("A2") <> Null Then
Sheets("Pickticket").Range("B2").Copy Sheets("DN").Range("D5").PasteSpecial xlPasteValues
End If
End Sub

PHP:
Sheets("Pickticket").Range("B2").Copy Sheets("DN").Range("D5").PasteSpecial xlPasteValues

- Dòng này gây ra lỗi của bạn, do bạn dùng phương thức Copy của Range Object không đúng.
- Mặc dù Value là thuộc tính mặc định của đối tượng Range, nhưng bạn không nên bỏ qua như vậy.
Mình sẽ sửa lại như sau: À, phải xem bản tính của bạn Null nó là gì, mà bạn lại đưa vào điều kiện.

PHP:
Sub Copy()
    Sheets("Pickticket").Select
    If Range("A2").Value <> Empty Then
        Sheets("Pickticket").Range("B2").Copy Sheets("DN").Range("D5")
    End If
End Sub
 
Upvote 0
Chào ACE GPE,
em có đoạn code bên dưới, khi run thì không tác dụng, ACE kiểm tra giúp em nhé. em cảm ơn
Mã:
Sub Copy()
..
End Sub
PHP:
Sub Copy()
With Sheets("Pickticket")
    If .Range("A2") <> "" Then
        .Range("B2").Copy
        Sheets("DN").Range("D5").PasteSpecial (xlPasteValues)
        Application.CutCopyMode = False
    End If
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub Copy()
With Sheets("Pickticket")
    If .Range("A2") <> "" Then .Range("B2").Copy Sheets("DN").Range("D5").PasteSpecial(xlPasteValues)
End With
End Sub

Em chạy thử thì nó bị lỗi, Em sửa lại thế này thì hết.
http://prntscr.com/fubvh5

PHP:
Sub Copy()
With Sheets("Pickticket")
    If .Range("A2") <> "" Then .Range("B2").Copy
End With
Sheets("DN").Range("D5").PasteSpecial (xlPasteValues)
End Sub
 
Upvote 0
Em chạy thử thì nó bị lỗi, Em sửa lại thế này thì hết.
http://prntscr.com/fubvh5

PHP:
Sub Copy()
With Sheets("Pickticket")
    If .Range("A2") <> "" Then .Range("B2").Copy
End With
Sheets("DN").Range("D5").PasteSpecial (xlPasteValues)
End Sub
Có được không vậy ta, nếu A2 rỗng, lệnh copy sẽ không được thực hiện, mà đằng sau vẫn ra lệnh dán. Ghép lệnh copy và paste vào trong "If" có lẽ sẽ ổn hơn.
 
Upvote 0
Có được không vậy ta, nếu A2 rỗng, lệnh copy sẽ không được thực hiện, mà đằng sau vẫn ra lệnh dán. Ghép lệnh copy và paste vào trong "If" có lẽ sẽ ổn hơn.

Hoàn toàn chính xác, em copy đưa ra mà quên suy nghĩ.Nên đưa nó vào trong cụm If.
 
Upvote 0
Em cám ơn tất cả ACE hỗ trợ phần VBA code trên, hiện tại em đã thực hiện thành công như bên dưới:
Mã:
Sub copy()
Sheets("Pickticket").Select
Dim i As Integer
    For i = 2 To 20
        If Sheets("Pickticket").Range("A" & i).Value <> Empty Then
            Sheets("Pickticket").Range("B" & i).copy
            Sheets("DN").Range("D5").PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
            Sheets("DN").Select
            Sheets("DN").copy after:=Sheets(4)
        End If
    Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Em cám ơn tất cả ACE hỗ trợ phần VBA code trên, hiện tại em đã thực hiện thành công như bên dưới:
Mã:
Sub copy()
Sheets("Pickticket").Select
Dim i As Integer
    For i = 2 To 20
        If Sheets("Pickticket").Range("A" & i).Value <> Empty Then
            Sheets("Pickticket").Range("B" & i).copy
            Sheets("DN").Range("D5").PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
            Sheets("DN").Select
            Sheets("DN").copy after:=Sheets(4)
        End If
    Next i
End Sub
- Cho code vào thẻ [ code]
- Bỏ cái .select đi đỡ nặng.
- Nghiên cứu dùng mảng xem
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom