Chuyên đề giải đáp những thắc mắc về code VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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:
Các bác cho em hỏi chút ạ, E có yêu cầu như trong File về phương thức Find. E cảm ơn ạ
 

File đính kèm

Upvote 0
Các bác cho em hỏi chút ạ, E có yêu cầu như trong File về phương thức Find. E cảm ơn ạ

Fương thức này không thể áp dụng để tìm 1 tháng cụ thể nào trong cột dữ liệu chứa ngày tháng kiểu DD/mm/yyyy hay MM/dd/yyyy

Hơn nữa, bạn cần lưu í 1 điều rằng khi cần tìm dữ liệu kiểu ngày tháng, ta cần định dạng toàn bộ vùng cần tìn về dạng 'MM/DD/YYYY'; Xài các dạng khác như Dd/MM/yyyy hay MM/DD/yy đều tiềm ẩn nguy cơ sai lệnh khôn lường.
 
Upvote 0
Fương thức này không thể áp dụng để tìm 1 tháng cụ thể nào trong cột dữ liệu chứa ngày tháng kiểu DD/mm/yyyy hay MM/dd/yyyy

Hơn nữa, bạn cần lưu í 1 điều rằng khi cần tìm dữ liệu kiểu ngày tháng, ta cần định dạng toàn bộ vùng cần tìn về dạng 'MM/DD/YYYY'; Xài các dạng khác như Dd/MM/yyyy hay MM/DD/yy đều tiềm ẩn nguy cơ sai lệnh khôn lường.
Vậy chỉ có giải pháp thêm 1 cột phụ bên cạnh, và dùng hàm Month của Excel thôi à a ơi :(
 
Upvote 0
Code này tạo 1 dãy 4, hoặc 5 số và chuỗi ngẫu nhiên, nhưng mình chưa hiểu cách hoạt động của nó như thế nào, xin các bác chỉ giáo
Mã:
Function GetRandName() As String
  GetRandName = Mid(CreateObject("Scripting.FileSystemObject").GetTempName, 4, 5)
End Function
 
Upvote 0
Vậy chỉ có giải pháp thêm 1 cột phụ bên cạnh, và dùng hàm Month của Excel thôi à a ơi :(

Nếu vẫn muốn xài fương thức FOND() thì chịu khó tạo vòng lặp duyệt tìm tấn tần tật các ngày trong tháng đó có trong CSDL; Như kiểu:

Set Rng = Range("B2: B999")
Rng.NumFormat="MM/DD/yyyy"
For J= 1 To 31
Dat = Format(DateSerial(Nam, Thang,J),"MM/DD/yyyy")
Set sRng=Rng.Find(Dat,,XlValues,Xlwhole)

Next J
 
Upvote 0
Code này tạo 1 dãy 4, hoặc 5 số và chuỗi ngẫu nhiên, nhưng mình chưa hiểu cách hoạt động của nó như thế nào, xin các bác chỉ giáo
Mã:
Function GetRandName() As String
  GetRandName = Mid(CreateObject("Scripting.FileSystemObject").GetTempName, 4, 5)
End Function
GetTempName dùng để tạo chuỗi ký tự để đặt tên cho file tạm.
Bạn vào tools-reference đánh dấu vào Microsoft Scripting Runtime. Copy code vào module:
Mã:
Sub a()
Set f = New FileSystemObject
Do
tmp = f.GetTempName
Loop
End Sub
Bấm F8 nhiều lần, quan sát biến tmp trong cửa sổ Local. Bạn sẽ thấy tmp có dạng rad?????.tmp, trong đó ????? là 5 ký tự ngẫu nhiên. Hàm mid(tmp,4,5) lấy ra 5 ký tự ngẫu nhiên đó.
 
Upvote 0
GetTempName dùng để tạo chuỗi ký tự để đặt tên cho file tạm.
Bạn vào tools-reference đánh dấu vào Microsoft Scripting Runtime. Copy code vào module:
Mã:
Sub a()
Set f = New FileSystemObject
Do
tmp = f.GetTempName
Loop
End Sub
Bấm F8 nhiều lần, quan sát biến tmp trong cửa sổ Local. Bạn sẽ thấy tmp có dạng rad?????.tmp, trong đó ????? là 5 ký tự ngẫu nhiên. Hàm mid(tmp,4,5) lấy ra 5 ký tự ngẫu nhiên đó.
Cám ơn bạn, giờ mình đã hiểu
 
Upvote 0
Mọi người cho em xin code thay cho lệnh này excel với ạ? Em chạy lệnh như này cho nhiều ô nên file bị nặng quá :( Mấy hôm nay chập chững đọc tài liệu VBA mà càng đọc lại càng rối trong khi việc thì đang cần gấp

=IF(ISNA(INDEX(DATA,MATCH(1,(C.I<=$A$2)*(C.O>=$A$2)*(No.Room=A4)*(Don_gia>0)*(Guest=1),0),12)),"",INDEX(DATA,MATCH(1,(C.I<=$A$2)*(C.O>=$A$2)*(No.Room=A4)*(Don_gia>0)*(Guest=1),0),12))

Các dữ liệu: DATA; C.I ; C.O; No.Room ; Don_gia; Guest là vùng Define Name.

Em cám ơn mọi người nhiều ạ!
 
Upvote 0
Mọi người cho hỏi:
Em có file gồm nhiều sheets có liên kết với nhau bằng các công thức, tên và code trong mỗi sheets. Code trong mỗi sheets (sheets ;2;3;4;5) được viết để thay đổi khi dữ liệu ở sheet 1 thay đổi.
Khi thay đổi dữ liệu sheets 1 mà muốn code ở sheets 2;3;4;5 chạy nó bắt em phải click vào sheets đó đã. Em muốn in đồng loạt từ sheets 1 đến sheets 5 nhưng chỉ cần thay đổi dữ liệu ở sheet1 thôi và bấm in. Làm cách nào để code tự chạy ở các sheets khác mà ko cần click chọn hiển thị sheets đó.
Xin cảm ơn!!!
 
Upvote 0
Mọi người cho hỏi:
Em có file gồm nhiều sheets có liên kết với nhau bằng các công thức, tên và code trong mỗi sheets. Code trong mỗi sheets (sheets ;2;3;4;5) được viết để thay đổi khi dữ liệu ở sheet 1 thay đổi.
Khi thay đổi dữ liệu sheets 1 mà muốn code ở sheets 2;3;4;5 chạy nó bắt em phải click vào sheets đó đã. Em muốn in đồng loạt từ sheets 1 đến sheets 5 nhưng chỉ cần thay đổi dữ liệu ở sheet1 thôi và bấm in. Làm cách nào để code tự chạy ở các sheets khác mà ko cần click chọn hiển thị sheets đó.
Xin cảm ơn!!!
Úp file bạn muốn thay đổi các sheet đó lên đây
 
Upvote 0
Ko được anh ơi... nó vẫn vậy ko khác điều gì. vui nó chạy mà buồn nó ko anh ơi.
 
Lần chỉnh sửa cuối:
Upvote 0
Câu lệnh thay thế cho toán tử so sánh trong VBA

Chao mọi người. Em có vấn đề này cần được sự trợ giúp ạ.Em có đoạn Code sau:
Mã:
Sub hoi()
  bl As Boolean
  bl = 3 < 4
  MsgBox bl
End Sub


Tuy nhiên giờ em mốn viết khác đi như sau:

Mã:
Sub hoi()
  Dim ss As String, bl As Boolean
  ss = "<"
[COLOR=#ff0000][B]  bl = 3 & ss & 4[/B][/COLOR]
  MsgBox bl
End Sub

Nhờ mọi người viết giúp em câu lệnh màu đỏ thế nào để VBA hiểu được ạ
 
Upvote 0
Chao mọi người. Em có vấn đề này cần được sự trợ giúp ạ.Em có đoạn Code sau:
Mã:
Sub hoi()
  bl As Boolean
  bl = 3 < 4
  MsgBox bl
End Sub


Tuy nhiên giờ em mốn viết khác đi như sau:

Mã:
Sub hoi()
  Dim ss As String, bl As Boolean
  ss = "<"
[COLOR=#ff0000][B]  bl = 3 & ss & 4[/B][/COLOR]
  MsgBox bl
End Sub

Nhờ mọi người viết giúp em câu lệnh màu đỏ thế nào để VBA hiểu được ạ
Hãy thử khai báo biến với bl as string xem sao nhé. Mà muốn trả về kết quả là True hay sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Sub hoi()
Dim ss As String, bl As Boolean
ss = ">"
bl = Evaluate(3 & ss & 4)
MsgBox bl
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom