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:
E gửi file đính kèm. Bác xem giúp em. Thanks bác trước.
http://www.mediafire.com/download/scqu0v5fphiwo6s/2003.rar

Bạn sửa Sub Timfile thành vầy:
Mã:
Sub timfile()
  Dim i As Long, mydir As String, ii As String
 [COLOR=#ff0000] Dim item As Object, FSO As Object[/COLOR]
  mydir = ThisWorkbook.Path & "\data"
  [COLOR=#ff0000]Set FSO = CreateObject("Scripting.FileSystemObject")[/COLOR]
  With User.ComboBox2
    .Clear
    .ColumnCount = 1
    .ColumnWidths = "100pt"
  End With
  [COLOR=#ff0000]If FSO.FolderExists(mydir) Then
    For Each item In FSO.GetFolder(mydir).Files
      User.ComboBox2.AddItem item.Name
    Next
  End If[/COLOR]
End Sub
Chỗ màu đỏ là chỗ sửa lại
 
Lần chỉnh sửa cuối:
Upvote 0

File đính kèm

  • hỏi lọc dữ liệu trùng tính tổng kết quả, số lần xuất hiện2.xls
    43 KB · Đọc: 29
Upvote 0
Cái đấy gọi là Dialogsheet và cái sheet Input ấy đã bị ẩn đi rồi. Muốn hiện nó lên, bạn chép đoạn code này vào module rồi chạy.
Mã:
Sub GPE()  
Dim I
  For I = 1 To Sheets.Count
    Sheets(I).Visible = -1
  Next
End Sub

Đã biết tên cái sheet ẩn ấy là "Input" rồi sao còn For.. Next làm gì chứ
Vầy là được rồi: Sheets("Input").Visible = -1
 
Upvote 0
thầy ndu96081631 cho em hỏi thêm, em vẫn không tìm được chỗ nào có lệnh ẩn sheet mà kín vậy, click phải tên sheet không có unhide, của sổ VBAproject cũng không thấy có sheet hiện lên, cám ơn thầy
 
Upvote 0
em vẫn không tìm được chỗ nào có lệnh ẩn sheet mà kín vậy, click phải tên sheet không có unhide, của sổ VBAproject cũng không thấy có sheet hiện lên, cám ơn thầy
Ẩn bằng code luôn đó bạn. Ví dụ như file đó thì ẩn thế này: Sheets("Input").Visible = 2
 
Lần chỉnh sửa cuối:
Upvote 0
thầy ndu96081631 cho em hỏi thêm, em vẫn không tìm được chỗ nào có lệnh ẩn sheet mà kín vậy, click phải tên sheet không có unhide, của sổ VBAproject cũng không thấy có sheet hiện lên, cám ơn thầy

Có phải bạn tìm chỗ này?
Tại cửa sổ MS Excel, bạn nhấn tổ hợp phím Alt + F11. Tại cửa sổ Microsoft Visual Basic for Applications... hiện ra, bạn làm tiếp như hình dưới.

visible.jpg
 
Upvote 0
Hihi. Em biết chứ người hỏi đâu có biết đâu anh.

Code VBA không password, vào trong đó sẽ thấy ngay mà
Mã:
Sub ShowInput()
  With [COLOR=#ff0000]DialogSheets("Input")[/COLOR]
    [COLOR=#ff0000].Show[/COLOR]
    .EditBoxes("Input1").Text = ""
  End With
End Sub
(còn nếu không biết tí gì về VBA thì... không có gì để bàn nữa)
-----------------------------------
Có phải bạn tìm chỗ này?
Tại cửa sổ MS Excel, bạn nhấn tổ hợp phím Alt + F11. Tại cửa sổ Microsoft Visual Basic for Applications... hiện ra, bạn làm tiếp như hình dưới.

View attachment 145172

Trật lất! Bởi các sheet thuộc anh em nhà Macro4DialogSheet nó sẽ không cho bạn thấy dễ dàng thế đâu... Vậy nên việc dùng nó đễ viết virus cũng tỏ ra khá... nguy hiễm
(bạn cứ lấy file ở bài 242, vào cửa sổ VBA xem có thấy gì không?)
 
Upvote 0
Code VBA không password, vào trong đó sẽ thấy ngay mà
Mã:
Sub ShowInput()
  With [COLOR=#ff0000]DialogSheets("Input")[/COLOR]
    [COLOR=#ff0000].Show[/COLOR]
    .EditBoxes("Input1").Text = ""
  End With
End Sub
(còn nếu không biết tí gì về VBA thì... không có gì để bàn nữa)
-----------------------------------
(bạn cứ lấy file ở bài 242, vào cửa sổ VBA xem có thấy gì không?)
- em cũng biết tí về VBA, nhưng theo em tham khảo bài này của thầy http://www.giaiphapexcel.com/forum/showthread.php?31515-Tạo-Form-bằng-DialogSheet
thì code .EditBoxes("Input1").Text = "" là để gán cho cái input bằng rỗng thôi mà, đâu phải để ẩn sheet đó nhỉ, mong thầy nói rõ hơn, vì kiến thức nông cạn nhưng em muốn hiểu rõ vấn đề hơn
 
Upvote 0
Thông báo địa chỉ ờ

Em có câu lệnh
Mã:
eR = .[A50000].End(xlUp).Row + 1
em muống dùng " MsgBox eR" để nó thông báo đang ở địa chỉ nào? thì em fải sửa MsgBox như thế nào?
 
Upvote 0
Em có câu lệnh
Mã:
eR = .[A50000].End(xlUp).Row + 1
em muống dùng " MsgBox eR" để nó thông báo đang ở địa chỉ nào? thì em fải sửa MsgBox như thế nào?
Thử như thế này xem:
Mã:
Sub abc()
 Dim er
     er = Range("A" & Rows.Count).End(xlUp).Row + 1
       MsgBox "A" & er
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Thử như thế này xem:
Mã:
Sub abc()
 Dim er
     er = Range("A" & Rows.Count).End(xlUp).Row [COLOR=#ff0000][B]+ 1[/B][/COLOR]
       MsgBox "A" & er
End Sub
Cảm ơn bạn!
Các bạn cho tôi hỏi thêm
Bây giờ muốn thay +1 thành 1 hằng số bất kỳ, hằng số này nằm ở ô F2 (ô màu vàng) thì
Mã:
er = Range("A" & Rows.Count).End(xlUp).Row [COLOR=#FF0000][B]+ 1[/B][/COLOR]
sẽ viết lại như thế nào?
xin cảm ơn các bạn
 

File đính kèm

  • Hoi0815.xls
    17 KB · Đọc: 5
Upvote 0
- em cũng biết tí về VBA, nhưng theo em tham khảo bài này của thầy http://www.giaiphapexcel.com/forum/showthread.php?31515-Tạo-Form-bằng-DialogSheet
thì code .EditBoxes("Input1").Text = "" là để gán cho cái input bằng rỗng thôi mà, đâu phải để ẩn sheet đó nhỉ, mong thầy nói rõ hơn, vì kiến thức nông cạn nhưng em muốn hiểu rõ vấn đề hơn

Tôi tô đỏ là cho bạn chú ý mà bạn lại chẳng chịu xem. Nhìn câu lệnh With DialogSheets("Input") thì phải biết trong file có 1 DialogSheet tên là "Input". Biết tên sheet rồi làm gì mà chẳng được (ẩn hiện tùy ý)
 
Upvote 0
Cảm ơn bạn!
Các bạn cho tôi hỏi thêm
Bây giờ muốn thay +1 thành 1 hằng số bất kỳ, hằng số này nằm ở ô F2 (ô màu vàng) thì
Mã:
er = Range("A" & Rows.Count).End(xlUp).Row [COLOR=#FF0000][B]+ 1[/B][/COLOR]
sẽ viết lại như thế nào?
xin cảm ơn các bạn
Thử như thế này:
Mã:
er = Range("A" & Rows.Count).End(xlUp).Row + [F2].Value
 
Upvote 0
Tôi tô đỏ là cho bạn chú ý mà bạn lại chẳng chịu xem. Nhìn câu lệnh With DialogSheets("Input") thì phải biết trong file có 1 DialogSheet tên là "Input". Biết tên sheet rồi làm gì mà chẳng được (ẩn hiện tùy ý)

Ý em hỏi ban đầu thầy dùng lệnh gì mà ẩn sheets("input"), chẳng lẽ thầy cho sheets("input").visible = false rồi sau đó xóa dòng code này đi à,
 
Upvote 0
Ý em hỏi ban đầu thầy dùng lệnh gì mà ẩn sheets("input"), chẳng lẽ thầy cho sheets("input").visible = false rồi sau đó xóa dòng code này đi à,

Chính xác là Sheets("Input").Visible = 2
Gõ dòng lệnh ấy trong cửa số Immediate là được rồi (khỏi cần phải tạo sub rồi lại mất công xóa đi)
Nói thêm: Trong cửa sổ VBA, cứ bấm Ctrl + G sẽ hiện ra cửa sổ Immediate
 
Upvote 0
Sự khác nhau giữa FormulaR1C1Local FormulaR1C1 là như thế nào?
vì tôi đi dạy tôi sử dụng
FormulaR1C1 và học viên hỏi FormulaR khác nhau như thế nào? và tôi đã giải thích rõ ràng về vấn đề này, tiếp tục tới Formulaarray vẫn ok, nhưng tới so sánh FormulaR1C1Local là bó tay, vì từ trước tới giờ thực hành cũng không thấy nó có sự khác biệt gì? mong được biết sự khác biệt giữa chúng và cho ví dụ cụ thể, xin chân thành cảm ơn các thành viên trên GPE

 
Upvote 0
Web KT
Back
Top Bottom