Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.
Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.
vì các dòng của mình lên đến hơn 40000 dòng nên nó bão lỗi như vậy.
Mình tesr thư nếu dưới 32000 dòng thì không bị lỗi trên
còn nếu trên 33000 dòng thì bị lỗi trên
mong các bạn giúp mình
cám ơn các bạn, mình làm được rồi.
Các bạn cho mình hỏi làm thế nào mình gửi file lên để các bạn xem hộ mình.
Mình tìm mãi mà không ra.
Thanks các bạn nhiều.
Hình như bài của bạn dùng Dictionary được đấy, mình đã thử làm với Dictionary nhưng vì không rõ yêu cầu của bài nên chưa được. Bạn gởi bài lên đi, trích một ít ra (cho nhẹ) rồi gởi theo hướng dẫn.
bạn ơi. mình đown về mà không giải nén dc.
Bạn thử kiểm tra lại đc ko
Mình rất muốn down bài lên để nhờ các bạn check hộ
Cám ơn các bạn nhiều.
ah. Nhân tiện các bạn cho mình hỏi.
Giả sử mình làm một file (có đoạn code). Bây giờ mình muốn làm thế nào để mình mở bất kỳ file excel mới (tất nhiên file đó chỉ chạy đựoc trên máy của mình) mình cũng chạy được (tất nhiên là không copy code. (tóm lại ý của mình là làm thế nào để không phải copy code mà khi mở file excel mới .Các bạn làm ơn chỉnh cho mình nhé
bạn ơi. mình đown về mà không giải nén dc.
Bạn thử kiểm tra lại đc ko
Mình rất muốn down bài lên để nhờ các bạn check hộ
Cám ơn các bạn nhiều.
ah. Nhân tiện các bạn cho mình hỏi.
Giả sử mình làm một file (có đoạn code). Bây giờ mình muốn làm thế nào để mình mở bất kỳ file excel mới (tất nhiên file đó chỉ chạy đựoc trên máy của mình) mình cũng chạy được (tất nhiên là không copy code. (tóm lại ý của mình là làm thế nào để không phải copy code mà khi mở file excel mới .Các bạn làm ơn chỉnh cho mình nhé
- Bạn nói không mở được mình nghĩ là do mình đặt dấu tiếng Việt nên không giải nén được, nhưng mình thử tải lại và giải nén được mà, Bạn thử đặt lại tên file không dấu xem có giải nén được không? (File này là do một người gởi qua mail hỏi mình nên sẵn tiện gởi cho Bạn).
- Muốn dùng code được cho file mới bạn hãy lưu file với định dạng .xla (Bạn hãy tìm hiểu về Add ins có trên diễn đàn).
dù mình chưa làm nhưng cũng cám ơn bạn rất nhiều.
mình sẽ gửi bài lên diễn đàn và nhờ các bạn kiểm tra nhé.
Chúc các bạn một ngày may mắn.
mình sẽ down về và làm theo hướng dẫn
tmpFile = .GetTempName ---> Tạo 1 file TXT tạm mà ta không cần biết nó nằm ở đâu, tên gì (mỗi lần chạy code là mỗi lần nó có tên khác nhau, dạng ngẫu nhiên) ---> Điều này có cái hay là ta không cần xác định đường dẫn, tên file... Vì biết đâu sẽ bị trùng với 1 file có sẳn trên máy tính
sComm = "DIR " & Folder & "*" & Search & "* /ON /B /A-D " & IIf(InSub, "/S", " ") & " >" & tmpFile ---> Đây chỉ là câu lệnh DOS mà thôi (hôm trước em có gữi 1 file, bên trong file, ở sheet2 có giải thích rõ và lệnh DIR này rồi)... Kết quả cuối cùng của lệnh trên sẽ được lưu vào tmpFile
CreateObject("Wscript.Shell").Run "cmd /c " & sComm, 0, True ---> Dùng VBA để chạy lệnh DOS ở trên... Giá trị True chổ này khá quan trọng, nó sẽ chờ cho lệnh thực thi xong thì mới làm tiếp câu lệnh bên dưới (Nếu không, tmpFile chưa kịp hình thành thì ta sẽ chẳng có gì để lấy cả)
GetListFile = Split(.OpenTextFile(tmpFile, 1).ReadAll, vbCrLf) ---> Mở file TXT, đọc toàn bộ nội dung, đưa vào mảng bằng cách dùng hàm Split. cắt theo từ khóa xuống dòng
Kill tmpFile ---> Làm xong mọi thứ, xóa luôn tmpFile
---------------------------------------
Nói chung, code ở trên là em biến đổi sau khi thắc mắc tại topic này: http://www.giaiphapexcel.com/forum/showthread.php?37051-L%C3%A0m-sao-%E1%BA%A9n-c%E1%BB%ADa-s%E1%BB%95-Command-Prompt-khi-th%E1%BB%B1c-thi-l%E1%BB%87nh-DOS-trong-VBA
Anh mở đường link trên, đọc kỹ từng bài sẽ thấy mọi thứ đều có trong đó, chẳng hạn: - Làm sao để chạy lệnh DOS trong VBA - Làm sao để ẩn cửa sổ DOS khi lệnh này chạy trong VBA
- Làm sao để lưu kết quả của lệnh DOS trong 1 file text
- Làm sao để chắc chắn rằng file text lưu kết quả của DOS đã được hình thành (để không phải "bắt" hụt)
- vân vân... --------------------------------------- Em nói thêm: nếu anh cảm thấy DOS có thể làm được điều anh cần thì hãy dùng nó, vì DOS luôn cho tốc độ "khủng" nhất ---> Với code anh đưa ở trên, em tin chắc không có code nào khác có thể qua mặt được về việc lấy tên file trong thư mục
Sub Enumerate_Refs()
For Each ref In Application.VBE.ActiveVBProject.References
Debug.Print ref.Name & " " & ref.GUID
Next ref
End Sub
Sao có máy chạy được, có máy thì báo lỗi ngay dòng For Each ref In Application.VBE.ActiveVBProject.References
(các máy đều dùng WinXP và Office2003)
Thông báo lỗi nh] sau:
Sub Enumerate_Refs()
For Each ref In Application.VBE.ActiveVBProject.References
Debug.Print ref.Name & " " & ref.GUID
Next ref
End Sub
Sao có máy chạy được, có máy thì báo lỗi ngay dòng For Each ref In Application.VBE.ActiveVBProject.References
(các máy đều dùng WinXP và Office2003)
Thông báo lỗi nh] sau:
Nhờ các Bạn chỉ cho nguyên nhân. Thanks
Rất chính xác, mình cũng vừa tìm ra (vì đã quên), vậy tốt nhất là thêm vào như thế này cho khỏi quên (hoặc khi đưa file cho người khác dùng):
PHP:
Sub Enumerate_Refs()
On Error Resume Next
For Each ref In Application.VBE.ActiveVBProject.References
Debug.Print ref.Name & " " & ref.GUID
'------------------------
Next ref
Dim vbp As Object ' as VBProject
If Val(Application.Version) >= 10 Then
Set vbp = ActiveWorkbook.VBProject
If Err.Number <> 0 Then
MsgBox "Your security settings do not allow this procedure to run." _
& vbCrLf & vbCrLf & "To change your security setting:" _
& vbCrLf & vbCrLf & " 1. Select Tools - Macro - Security." & vbCrLf _
& " 2. Click the 'Trusted Sources' tab" & vbCrLf _
& " 3. Place a checkmark next to 'Trust access to Visual Basic Project.'", _
vbCritical
Exit Sub
End If
End If
End Sub
Rất chính xác, mình cũng vừa tìm ra (vì đã quên), vậy tốt nhất là thêm vào như thế này cho khỏi quên (hoặc khi đưa file cho người khác dùng):
PHP:
Sub Enumerate_Refs()
On Error Resume Next
For Each ref In Application.VBE.ActiveVBProject.References
Debug.Print ref.Name & " " & ref.GUID
'------------------------
Next ref
Dim vbp As Object ' as VBProject
If Val(Application.Version) >= 10 Then
Set vbp = ActiveWorkbook.VBProject
If Err.Number <> 0 Then
MsgBox "Your security settings do not allow this procedure to run." _
& vbCrLf & vbCrLf & "To change your security setting:" _
& vbCrLf & vbCrLf & " 1. Select Tools - Macro - Security." & vbCrLf _
& " 2. Click the 'Trusted Sources' tab" & vbCrLf _
& " 3. Place a checkmark next to 'Trust access to Visual Basic Project.'", _
vbCritical
Exit Sub
End If
End If
End Sub
Trời má ơi! Không ngờ anh thanhlanh giờ toàn nghiên cứu các vụ "độc chiêu"
Không ngại xấu hổ mà khai thiệt rằng: Code anh ghi ở trên (cái vụ ref.Name & " " & ref.GUID) từ trước đến giờ em... CHƯA TỪNG BIẾT ĐẾN luôn
Ẹc... Ẹc.. Quá ngầu luôn
Nhân tiện anh bật mí luôn đi: Anh dùng code trên để làm gì vậy? (hổng lẽ chỉ để xem có bao nhiều mục được check trong References thôi sao?)
Trời má ơi! Không ngờ anh thanhlanh giờ toàn nghiên cứu các vụ "độc chiêu"
Không ngại xấu hổ mà khai thiệt rằng: Code anh ghi ở trên (cái vụ ref.Name & " " & ref.GUID) từ trước đến giờ em... CHƯA TỪNG BIẾT ĐẾN luôn
Ẹc... Ẹc.. Quá ngầu luôn
Nhân tiện anh bật mí luôn đi: Anh dùng code trên để làm gì vậy? (hổng lẽ chỉ để xem có bao nhiều mục được check trong References thôi sao?)
Là mình đang nghiên cứu về thư viện liên kết ngoài và biên dịch thành dll, kiểm tra xem thư viện được check, nếu chưa check thì code tự động check luôn đó mà.
Nếu muốn kiểm tra các References kỹ hơn thì như sau:
PHP:
Sub Get_References_In_This_Project()
Dim refIsBroken As String
For Each ref In Application.VBE.ActiveVBProject.References
refIsBroken = "OK"
refName = ref.Name
refDesc = ref.Description
refPath = ref.FullPath
refGUID = ref.GUID
If ref.IsBroken = True Then
refIsBroken = "***Missing/Broken***"
Else
refIsBroken = "OK"
End If
Debug.Print refName & ": " & refDesc & " - " & refGUID & " - " & refPath & " -> " & refIsBroken
Next ref
End Sub
(Mình chỉ là sưu tầm được thôi chớ cao siêu gì đâu. Khà khà ...)
Code chỉ có 1 dòng. Vậy chắc là lỗi xảy ra do sheet KM không có dữ liệu.
Còn mấy dòng có dấu nháy (') đầu tiên. Không biết bạn có sử dụng không. Ai lại làm kỳ cục như thế.
Các cậu ơi, không biết có ai ghi giúp mình 1 đoạn code ví dụ như
Có 2 cột A1 và B1
Côt A1 để diền số và B1 để hiện thị thời gian tại lúc điền or thay đổi số ở cột A1 ( thời gian này chỉ và củng chỉ thay đổi nếu A1 thay đổi)
đại loại như thế này