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:
Em chào anh chị, anh chị cho em hỏi Code VBA để tự động chuyển file exel sang PDF theo như tên mong muốn và lựa chọn được chỗ lưu file PDF theo ý muốn được không ạ, Code trong file em hỏi ở trên thì chỉ lưu được tên theo ý muốn còn vị trí lưu thì lưu cùng với file Exel. Em mong anh chị giúp đỡ ạ, em chân thành cảm ơn.
 

File đính kèm

Upvote 0
Em chào anh chị, anh chị cho em hỏi Code VBA để tự động chuyển file exel sang PDF theo như tên mong muốn và lựa chọn được chỗ lưu file PDF theo ý muốn được không ạ, Code trong file em hỏi ở trên thì chỉ lưu được tên theo ý muốn còn vị trí lưu thì lưu cùng với file Exel. Em mong anh chị giúp đỡ ạ, em chân thành cảm ơn.
Bạn xem trong code, sửa chỗ thisworkbook.path thành đường dẫn cụ thể đến nơi bạn muốn.
 
Upvote 0
Bạn xem trong code, sửa chỗ thisworkbook.path thành đường dẫn cụ thể đến nơi bạn muốn.
Em thử sửa như sau mà báo lỗi,Anh có thể sửa mẫu cho em được không ạ vì em không biết về chỉnh sửa code VBA ạ. . Em cảm ơn anh
1609330619886.png
 
Lần chỉnh sửa cuối:
Upvote 0
Em chào anh/chị.
Em hiện nay có cái phiếu ghi nhận năng suất như theo file đính kèm. Em muốn hỏi anh chị cho em xin Code VBA để tự ẩn những dòng không có dữ liệu ạ. Em cảm ơn anh chị
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em chào anh/chị.
Em hiện nay có cái phiếu ghi nhận năng suất như theo file đính kèm. Em muốn hỏi anh chị cho em xin Code VBA để tự ẩn những dòng không có dữ liệu ạ. Em cảm ơn anh chị
Sao công chúa không đăng chủ đề mới. Đây là thắc mắc về code, mà công chúa chưa có gì để théc méc.
 
Upvote 0
Xin chào các chuyên gia, mình xin được hỗ trợ về code VBA thay thế SUMIFS để điền công thức SUM khi thỏa mãn 2 điều kiện. Mô tả chi tiết trong file đình kèm.
 

File đính kèm

Upvote 0
Xin chào các chuyên gia, mình xin được hỗ trợ về code VBA thay thế SUMIFS để điền công thức SUM khi thỏa mãn 2 điều kiện. Mô tả chi tiết trong file đình kèm.
Bạn đăng chủ đề mới đi! Tại bài #2875 đã có khuyến cáo rồi đấy.
 
Upvote 0
Xin chào tất cả các Bạn, OT có sưu tầm một đoạn code sau để mở tất cả các file theo ý:
Mã:
Option Explicit

Sub Main()
 
 'Declare a variable as a FileDialog object.
 Dim fd As FileDialog
 
 'Create a FileDialog object as a File Picker dialog box.
 Set fd = Application.FileDialog(msoFileDialogFilePicker)
 
 'Declare a variable to contain the path
 'of each selected item. Even though the path is aString,
 'the variable must be a Variant because For Each...Next
 'routines only work with Variants and Objects.
 Dim vrtSelectedItem As Variant
 
 'Use a With...End With block to reference the FileDialog object.
 With fd
 
 'Allow the selection of multiple file.
 .AllowMultiSelect = True
 
 'Use the Show method to display the File Picker dialog box and return the user's action.
 'The user pressed the button.
 If .Show = -1 Then
 
 'Step through each string in the FileDialogSelectedItems collection
 For Each vrtSelectedItem In .SelectedItems
 
 'vrtSelectedItem is aString that contains the path of each selected item.
 'You can use any file I/O functions that you want to work with this path.
 'This example displays the path in a message box.
 MsgBox "Selected item's path: " & vrtSelectedItem
 
 Next vrtSelectedItem
 'The user pressed Cancel.
 Else
 End If
 End With
 
 'Set the object variable to Nothing.
 Set fd = Nothing
 
End Sub

Giờ với đoạn code trên OT muốn sửa không phải mở cửa sổ để lựa chọn các file muốn nữa mà thay vì thế thì sẽ liệt kê tên các file đó trong các ô tại bảng tính ví dụ A1:A10 của sheet1 thì code trên phải sửa lại thế nào ạ?
 
Upvote 0
Upvote 0
Đó là chọn, chứ đã mở đâu.


Tên có gồm cái đuôi xinh xinh kèm theo không?
Ví dụ: hổ_báo.đuôi_xinh_xinh thì lấy hổ_báo thôi hay hổ_báo.đuôi_xinh_xinh

Đúng rồi @befaint ạ, đó là đã chọn ạ xin lỗi .
Đuôi xinh đó dạng like "*.xls*" ạ, hoặc có thể một dạng đuôi xinh khác ạ.
Nhờ Bạn giúp đỡ OT, cảm ơn Bạn nhiều befaint .
 
Upvote 0
Giờ với đoạn code trên OT muốn sửa không phải mở cửa sổ để lựa chọn các file muốn nữa mà thay vì thế thì sẽ liệt kê tên các file đó trong các ô tại bảng tính ví dụ A1:A10 của sheet1 thì code trên phải sửa lại thế nào ạ?
Trời, đến giờ mà bạn còn hỏi cái sơ đẳng ...

Hiện thời code hiển thị tên các tập tin được chọn trong MsgBox (không phải mở cửa sổ để lựa chọn các file thì làm gì có chúng để mà hiển thị hay không). Bây giờ bạn không muốn MsgBox mà liệt kê các tên trong cột A?
1.
Mã:
Dim filename As String

2. Thay
Mã:
MsgBox "Selected item's path: " & vrtSelectedItem

bằng
Mã:
filename = vrtSelectedItem     ' toàn bộ đường dẫn
filename = Mid(filename, InStrRev(filename, "\") + 1)     ' chỉ tên tập tin
ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = filename

Cái ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp) và Offset bạn đã từng đọc, từng viết không biết bao nhiêu lần rồi.
 
Upvote 0
Trời, đến giờ mà bạn còn hỏi cái sơ đẳng ...

Hiện thời code hiển thị tên các tập tin được chọn trong MsgBox (không phải mở cửa sổ để lựa chọn các file thì làm gì có chúng để mà hiển thị hay không). Bây giờ bạn không muốn MsgBox mà liệt kê các tên trong cột A?
1.
Mã:
Dim filename As String

2. Thay
Mã:
MsgBox "Selected item's path: " & vrtSelectedItem

bằng
Mã:
filename = vrtSelectedItem     ' toàn bộ đường dẫn
filename = Mid(filename, InStrRev(filename, "\") + 1)     ' chỉ tên tập tin
ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = filename

Cái ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp) và Offset bạn đã từng đọc, từng viết không biết bao nhiêu lần rồi.
Dạ con chào Bác,
Vâng đúng là con rất ít để ý đến vấn đề này, giờ con mới tìm hiểu kỹ hơn để xử lý ạ.
Ý con thế này Bác., trong vùng A1:A10 con đã nhập sẵn tên các file ví dụ: A1="A.xls";A2="B.xlsx",A3="B.xlsm"... đến A10.
Các tên file được liệt kê này để chung với thư mục cùng file chứa code này ạ.
Giờ con muốn đoạn code mà tương tự đoạn code con đưa lên nhưng nó không hiển thị cái cửa sổ để chọn file nữa (thay vì bước này nó chọn các file mà đã liệt kê trong vùng A1:A10 rồi Bác ạ.
Sau khi lựa chọn các file đó xong nó mở hay ghi tên file đã được lựa chọn đó ra cửa sổ Immediate gì đó cũng được ạ.
------
Ngoài ra Bác cho con hỏi thêm với có cái nào hơn 'FileDialog" không ạ,như là hơn về tốc độ, hoặc hơn về mở được mọi đường dẫn (có dấu hoặc các thứ tiếng ạ ...
Con cảm ơn Bác đã giúp đỡ con.
 
Upvote 0
Dạ con chào Bác,
Vâng đúng là con rất ít để ý đến vấn đề này, giờ con mới tìm hiểu kỹ hơn để xử lý ạ.
Ý con thế này Bác., trong vùng A1:A10 con đã nhập sẵn tên các file ví dụ: A1="A.xls";A2="B.xlsx",A3="B.xlsm"... đến A10.
Các tên file được liệt kê này để chung với thư mục cùng file chứa code này ạ.
Giờ con muốn đoạn code mà tương tự đoạn code con đưa lên nhưng nó không hiển thị cái cửa sổ để chọn file nữa (thay vì bước này nó chọn các file mà đã liệt kê trong vùng A1:A10 rồi Bác ạ.
Sau khi lựa chọn các file đó xong nó mở hay ghi tên file đã được lựa chọn đó ra cửa sổ Immediate gì đó cũng được ạ.
------
Ngoài ra Bác cho con hỏi thêm với có cái nào hơn 'FileDialog" không ạ,như là hơn về tốc độ, hoặc hơn về mở được mọi đường dẫn (có dấu hoặc các thứ tiếng ạ ...
Con cảm ơn Bác đã giúp đỡ
Bạn dùng đoạn code này, nó cũng hiện msgbox từng file như trên và tôi nghĩ bạn có thể dễ dàng tùy biến để dùng:

Rich (BB code):
Sub SelectFilesInRange()
Dim Rg As Range, Cll As Range, MyPath As String, X
MyPath = ThisWorkbook.Path & "\"

On Error Resume Next
Set Rg = Application.InputBox("Quét 1 vùng", "Vùng quét", Type:=8)
If Err.Number = 424 Then
  MsgBox "Loi: chua chon vung!"
  Exit Sub
Else
   For Each Cll In Rg
       MsgBox MyPath & Cll.Value
   Next
End If
End Sub
 
Upvote 0
Bạn dùng đoạn code này, nó cũng hiện msgbox từng file như trên và tôi nghĩ bạn có thể dễ dàng tùy biến để dùng:

Rich (BB code):
Sub SelectFilesInRange()
Dim Rg As Range, Cll As Range, MyPath As String, X
MyPath = ThisWorkbook.Path & "\"

On Error Resume Next
Set Rg = Application.InputBox("Quét 1 vùng", "Vùng quét", Type:=8)
If Err.Number = 424 Then
  MsgBox "Loi: chua chon vung!"
  Exit Sub
Else
   For Each Cll In Rg
       MsgBox MyPath & Cll.Value
   Next
End If
End Sub
Cảm ơn Banh, cái này thì OT biết nhưng OT muốn sử dụng cái kia để mở từng file rồi xử lý ạ.
 
Upvote 0
Upvote 0
trong vùng A1:A10 con đã nhập sẵn tên các file ví dụ: A1="A.xls";A2="B.xlsx",A3="B.xlsm"... đến A10.
Các tên file được liệt kê này để chung với thư mục cùng file chứa code này ạ.
Giờ con muốn đoạn code mà tương tự đoạn code con đưa lên nhưng nó không hiển thị cái cửa sổ để chọn file nữa (thay vì bước này nó chọn các file mà đã liệt kê trong vùng A1:A10 rồi
Đọc không tài nào hiểu nổi.
Mình quên cái mớ code kia đi. Mô tả cái yêu cầu, cái mình cần ấy.
 
Upvote 0
Web KT

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

Back
Top Bottom