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:
Chào cả nhà, mình muốn xóa nhiều sheet và để lại 2 sheet thì phải code thế nào ạ?
 
Upvote 0
Chào cả nhà, mình muốn xóa nhiều sheet và để lại 2 sheet thì phải code thế nào ạ?
Const sheet_mot = "bach"
Cont sheet_hai = "tuyet"
Dim ws as worksheet, ws_name as string
For each ws in thisworkbook.worksheets
ws_name = ws.name
If ws_name <> sheet_mot and ws_name <> sheet_hai Then
ws.delete
End if
Next ws
Msgbox "Xong phim ba con heo con!"
 
Upvote 0
Const sheet_mot = "bach"
Cont sheet_hai = "tuyet"
Dim ws as worksheet, ws_name as string
For each ws in thisworkbook.worksheets
ws_name = ws.name
If ws_name <> sheet_mot and ws_name <> sheet_hai Then
ws.delete
End if
Next ws
Msgbox "Xong phim ba con heo con!"
bach tuyet liên quan gì đến heo con. Tính quảng cáo phim con heo hở.
Code thiếu hàm LCase.
 
Upvote 0
bach tuyet liên quan gì đến heo con. Tính quảng cáo phim con heo hở.
Code thiếu hàm LCase.
Phim ba con heo con, không phải phim con heo đâu bác. :D

----
@ Bạch Nương Tử:

For each ws in thisworkbook.worksheets
If thisworkbook.worksheets.count=1 then exit for
ws_name = VBA.Lcase$(ws.name)
If ws_name <> sheet_mot and ws_name <> sheet_hai Then
ws.delete
End if
Next ws
 
Upvote 0
Em chào Anh Chị,
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Target = Sheet5.Range("A1").Value
    If Target = True Then Call AnDongCot
    Else
    Call HienDongCot
End If
End Sub
Em đang tạo đoạn code trên. Mục đích khi Em tích vào check bóc thì ô A1 là TRUE còn bỏ tích thì A1 là FALSE. Em muốn tạo sự kiện nếu ô A1 là TRUE thì chạy code Ẩn dòng cột, ngược lại chạy code hiện dòng cột. Hiện tại code chưa chạy được ạ. Em đang tập code mong A/C chỉ bảo. Em cảm ơn!
 
Upvote 0
Em chào Anh Chị,
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Target = Sheet5.Range("A1").Value
    If Target = True Then Call AnDongCot
    Else
    Call HienDongCot
End If
End Sub
Em đang tạo đoạn code trên. Mục đích khi Em tích vào check bóc thì ô A1 là TRUE còn bỏ tích thì A1 là FALSE. Em muốn tạo sự kiện nếu ô A1 là TRUE thì chạy code Ẩn dòng cột, ngược lại chạy code hiện dòng cột. Hiện tại code chưa chạy được ạ. Em đang tập code mong A/C chỉ bảo. Em cảm ơn!
Target ở đây là đối tượng hay nói cách khác là ô mà bạn tác động tới.trường hợp này bạn lấy địa chỉ của target đi.Đại loại nó như vầy
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$1" Then Exit Sub
    If Target.Value = True Then
            Call AnDongCot
    Else
            Call HienDongCot
    End If
End Sub
 
Upvote 0
Em chào Anh Chị,
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Target = Sheet5.Range("A1").Value
    If Target = True Then Call AnDongCot
    Else
    Call HienDongCot
End If
End Sub
Em đang tạo đoạn code trên. Mục đích khi Em tích vào check bóc thì ô A1 là TRUE còn bỏ tích thì A1 là FALSE. Em muốn tạo sự kiện nếu ô A1 là TRUE thì chạy code Ẩn dòng cột, ngược lại chạy code hiện dòng cột. Hiện tại code chưa chạy được ạ. Em đang tập code mong A/C chỉ bảo. Em cảm ơn!
Bạn viết thế này
If Target. Address = "$A$1" then
If Target.Value = TRUE Then
 
Upvote 0
Target ở đây là đối tượng hay nói cách khác là ô mà bạn tác động tới.trường hợp này bạn lấy địa chỉ của target đi.Đại loại nó như vầy
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$A$1" Then Exit Sub
    If Target.Value = True Then
            Call AnDongCot
    Else
            Call HienDongCot
    End If
End Sub
Bạn viết thế này
If Target. Address = "$A$1" then
If Target.Value = TRUE Then

Cảm ơn Bạn Cu Tồ và Bạn Maika8008. Code của 2 Bạn mình chạy thử Ok rồi.
Mình muốn bổ sung thêm trường hợp dùng check box để lấy TRUE và FALSE vào ô A1 thì code sẽ chạy. Mong các Bạn xem giúp mình thêm cách để sử dụng được check box trong trường hợp này. Tks các Bạn!
1608273411409.png
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Bạn Cu Tồ và Bạn Maika8008. Code của 2 Bạn mình chạy thử Ok rồi.
Mình muốn bổ sung thêm trường hợp dùng check box để lấy TRUE và FALSE vào ô A1 thì code sẽ chạy. Mong các Bạn xem giúp mình thêm cách để sử dụng được check box trong trường hợp này. Tks các Bạn!
View attachment 251465
Vậy bạn đừng link cell nữa mà dùng sự kiện click của checkbox
Private Sub CheckBox1_Click() 'Sửa lại tên checkbox cho đúng
If CheckBox1.Value = True Then
Range("A1") = 1
Else
Range("A1") = 0
End If
End Sub

Ở sự kiện Change của Sheet thì:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Text = "1" Then
Call AnDongCot
Else
Call HienDongCot
End If
End Sub
 
Upvote 0
Vậy bạn đừng link cell nữa mà dùng sự kiện click của checkbox
Private Sub CheckBox1_Click() 'Sửa lại tên checkbox cho đúng
If CheckBox1.Value = True Then
Range("A1") = 1
Else
Range("A1") = 0
End If
End Sub

Ở sự kiện Change của Sheet thì:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Text = "1" Then
Call AnDongCot
Else
Call HienDongCot
End If
End Sub
Mình chạy code được rồi. Cảm ơn Bạn rất nhiều!
 
Upvote 0
Em chào Anh Chị,
Trong sự kiện Workbook_Open
Em đang để Sheet 2 được mở ra lúc mở file như code dưới đây.
Mã:
Private Sub Workbook_Open()
    Sheet2.Select
End Sub

Em muốn chỗ Sheet2.Select có thể tùy biến tại ô H3 ở sheet1 (tức là ở sheet 1 ô H3 Em chọn sheet nào thì sau này khi mở file sheet đó sẽ được mở ra )
Em có sửa code như dưới đây. Nhưng chưa được.

Private Sub Workbook_Open()
Sheet1.Range("H3").Value.Select
End Sub

Mong Anh Chị xem giúp Em. Cảm ơn Anh Chị!
 
Upvote 0
Em chào Anh Chị,
Trong sự kiện Workbook_Open
Em đang để Sheet 2 được mở ra lúc mở file như code dưới đây.
Mã:
Private Sub Workbook_Open()
    Sheet2.Select
End Sub

Em muốn chỗ Sheet2.Select có thể tùy biến tại ô H3 ở sheet1 (tức là ở sheet 1 ô H3 Em chọn sheet nào thì sau này khi mở file sheet đó sẽ được mở ra )
Em có sửa code như này, Nhưng chưa được.

Private Sub Workbook_Open()
Sheet1.Range("H3").Value.Select
End Sub

Mong Anh Chị xem giúp Em. Cảm ơn Anh Chị!
Thử như sau nha bạn

Sheet1.Select
Range("H3").select
 
Upvote 0
Em chào Anh Chị,
Trong sự kiện Workbook_Open
Em đang để Sheet 2 được mở ra lúc mở file như code dưới đây.
Mã:
Private Sub Workbook_Open()
    Sheet2.Select
End Sub

Em muốn chỗ Sheet2.Select có thể tùy biến tại ô H3 ở sheet1 (tức là ở sheet 1 ô H3 Em chọn sheet nào thì sau này khi mở file sheet đó sẽ được mở ra )
Em có sửa code như dưới đây. Nhưng chưa được.

Private Sub Workbook_Open()
Sheet1.Range("H3").Value.Select
End Sub

Mong Anh Chị xem giúp Em. Cảm ơn Anh Chị!
Gán cho nó bằng một biến ví dụ S= sheet1.range("h3").Value
sau đó là sheets(s).select
Bài đã được tự động gộp:

Cụ thể là vầy
Mã:
Dim S As String
    S = Sheet1.Range("H3").Value
Sheets(S).Select
hoặc chơi thẳng vầy
Mã:
Sheets(Sheet1.Range("H3").Value).Select
 
Upvote 0
Thử như sau nha bạn

Sheet1.Select
Range("H3").select
Anh ơi Em chạy code thì nó vẫn đứng im ở sheet 1 Anh ạ. Anh xem giúp Em với nhé. Cảm ơn Anh!

1608283980326.png
Bài đã được tự động gộp:

Gán cho nó bằng một biến ví dụ S= sheet1.range("h3").Value
sau đó là sheets(s).select
Bài đã được tự động gộp:

Cụ thể là vầy
Mã:
Dim S As String
    S = Sheet1.Range("H3").Value
Sheets(S).Select
hoặc chơi thẳng vầy
Mã:
Sheets(Sheet1.Range("H3").Value).Select
Mình chạy code đã được rồi. Cảm ơn Bạn Cu Tồ nhiều!
 
Upvote 0
Em chào anh/chị. Anh chị có thể cho em code của lệnh chuyển đổi file exel sang file PDF không ạ. Em mong muốn khi click vào hình có chữ Chuyển đổi PDF trong file thì sẽ thực hiện việc chuyển đổi tự động và lấy tên file ở Cell tô màu vàng. Em cảm ơn anh chị
 

File đính kèm

Upvote 0
Em chào anh/chị. Anh chị có thể cho em code của lệnh chuyển đổi file exel sang file PDF không ạ. Em mong muốn khi click vào hình có chữ Chuyển đổi PDF trong file thì sẽ thực hiện việc chuyển đổi tự động và lấy tên file ở Cell tô màu vàng. Em cảm ơn anh chị
Dùng đoạn code sau:
Mã:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ThisWorkbook.Path & "\" & ThisWorkbook.ActiveSheet.Name & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
 

File đính kèm

Upvote 0
Dùng đoạn code sau:
Mã:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ThisWorkbook.Path & "\" & ThisWorkbook.ActiveSheet.Name & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
Anh cho em xin phép hỏi thêm là có cách nào lấy tên file PDF theo tên mình mong muốn không ạ chứ kg lấy tên file theo tên Sheet. Như trong file này em muốn file PDF được trích ra nhưng lấy tên theo Cell F1 em bôi vàng. Nếu được mong anh giúp đỡ em cảm ơn anh
 
Upvote 0
Anh cho em xin phép hỏi thêm là có cách nào lấy tên file PDF theo tên mình mong muốn không ạ chứ kg lấy tên file theo tên Sheet. Như trong file này em muốn file PDF được trích ra nhưng lấy tên theo Cell F1 em bôi vàng. Nếu được mong anh giúp đỡ em cảm ơn anh
Sửa chổ
Mã:
ThisWorkbook.ActiveSheet.Name
thành
Mã:
ThisWorkbook.ActiveSheet.[F1]
 
Upvote 0
Web KT

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

Back
Top Bottom