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ỉ là gửi link tham khảo:
http://www.giaiphapexcel.com/diendan/threads/nhờ-chỉnh-code-tạo-dãy-số-ngẫu-nhiên-không-trùng.125815/page-3

http://www.giaiphapexcel.com/diendan/threads/nhờ-giúp-làm-hàm-tự-động-sắp-xếp-tăng-dần-trong-1-cell.98151/

So sánh nhanh chậm phải vào trường hợp cụ thể, xét nhiều trường hợp của dữ liệu mới đánh giá được. (Ví dụ: so sánh tốc độ mổ gà / mổ trâu của 2 con dao, không tính các yếu tố khác ngoài dao).

Chính MS cảnh báo rằng ScriptControl là cái đặc biệt chỉ nên dùng cho dân làm Web. So sánh cái quái gì nữa. Chả biết ngừoi hỏi câu này lấy ở đâu ra để mà thắc mắc. Lượm lặt code thì chịu khó sử dụng chúng mọt thời gian cho quen rồi hãy nghĩ đến việc so sánh. Ít nhất khi đó ngừoi ta có cái cơ sở để benchmark.
 
Upvote 0
Nhờ các anh xem hộ em code hidesheet bị lỗi debug
----------------------------------------------------------
Sub HideSheets()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
For Each ws In ThisWorkbook.Worksheets
If InStr(1, ws.Name, "Sheet17", vbTextCompare) = 0 Then
ws.Visible = xlVeryHidden
End If
Next ws
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub
 

File đính kèm

Upvote 0
Nhờ các anh xem hộ em code hidesheet bị lỗi debug
----------------------------------------------------------
Sub HideSheets()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
For Each ws In ThisWorkbook.Worksheets
If InStr(1, ws.Name, "Sheet17", vbTextCompare) = 0 Then
ws.Visible = xlVeryHidden
End If
Next ws
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub
1. ws.CodeName, "Sheet17"
hoặc:
2. ws.Name, "Thong tin"
 
Upvote 0
Nhờ các anh xem hộ em code hidesheet bị lỗi debug
----------------------------------------------------------
Sub HideSheets()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
For Each ws In ThisWorkbook.Worksheets
If InStr(1, ws.Name, "Sheet17", vbTextCompare) = 0 Then
ws.Visible = xlVeryHidden
End If
Next ws
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub
Sao không so sánh bằng mà dùng hàm InStr?
 
Upvote 0
e chỉ biết sử dụng code thôi anh à! lỗi này bác Befaint sửa rồi ạ
biết sử dụng chứ không biết viết sao bạn (thông cảm! chỉ thắc mắc thôi chứ không có ý khác, tại thấy mấy bài trước có code nhìn kinh vãi)
à! sẵn gửi cho bạn code FixRowHight ở mấy bài trước bạn nhờ sửa lỗi
mình có xem và phát hiện ra code sẽ lỗi nếu ngay trên trang tính của bạn có lỗi
ví dụ #VALUE hoặc tương tự.... có lỗi là nó tèo ngay
code này bạn chỉ cần truyền vùng cần fix vào thôi, hoặc lười thì nó tự tìm vùng mà chỉnh cho bạn
tốt nhất nên cho code này vào Addins rồi dùng. tại vì trong quá trình sử dụng code sẽ tạo 1 sheet tạm để chạy code
 

File đính kèm

Upvote 0
So sánh chuỗi trong VBA người ta thường dùng Like
Và trước khi so sánh thì cần chuyển về cùng kiểu chữ in hoa hay chữ thường.
Trong trường hợp này tên sheet là do mình đặt nên tôi nghĩ so sánh bằng trực tiếp không cần chuyển chữ hoa-thường cũng không vấn đề gì.
 
Upvote 0
Chào mọi người,

Hiện tại e có useform này, em muốn paste dữ liệu đã copy sẵn bên cột clipboard sang useform, nhưng không được, mọi người có code nào có thể hỗ trợ giùm em với ạ
 

File đính kèm

  • Book1.xlsm
    Book1.xlsm
    232.6 KB · Đọc: 7
  • Untitled.png
    Untitled.png
    187.6 KB · Đọc: 11
Upvote 0
Chào mọi người,

Hiện tại e có useform này, em muốn paste dữ liệu đã copy sẵn bên cột clipboard sang useform, nhưng không được, mọi người có code nào có thể hỗ trợ giùm em với ạ

Sao bạn làm phức tạp vấn đề thế.
- Bạn hãy nêu lại câu hỏi rõ ràng, mục đích , có đầu đuôi xem nào?
 
Upvote 0
Hi bạn,

Mục đích của mình là copy từ những trang web hoặc ứng dụng bên ngoài, sử dụng chế độ clipboar để có thể copy cùng lúc nhiều thứ như trong hình, sau đó sẽ mở useform và paste những thứ đã copy được vào useform này , bạn hiểu ý mình không ?
 
Upvote 0
Cho em hỏi? em mở file cell lên bị báo lỗi như này làm thế nào ạ:
lỗi mở excel Error desciption: open method of workbooks class faied
 
Upvote 0
Các bạn giúp mình với.
Mình muốn copy sheet1 từ một workbook khác vào workbook đang mở. Nhưng trước khi copy, kiểm tra workbook đang mở xem đã có sheet1 đó chưa. Nếu đã có, chỉ copy dữ liệu đè vào thôi (không xoá sheet1 đã có). Còn nếu sheet1 đó chưa có, thì copy nguyên cả sheet1 vào.
Các bạn xem và chỉ giúp mình với. Mình cảm ơn nhiều!!!
 
Upvote 0
Các bạn giúp mình với.
Mình muốn copy sheet1 từ một workbook khác vào workbook đang mở. Nhưng trước khi copy, kiểm tra workbook đang mở xem đã có sheet1 đó chưa. Nếu đã có, chỉ copy dữ liệu đè vào thôi (không xoá sheet1 đã có). Còn nếu sheet1 đó chưa có, thì copy nguyên cả sheet1 vào.
Các bạn xem và chỉ giúp mình với. Mình cảm ơn nhiều!!!
Bạn thử nghiên cứu ADO xem. Có thể giúp bạn đó.
Hoặc nghiên cứu Macro 4 xem sao.
 
Upvote 0
Các bác giúp cháu với ạ! File cháu đính kèm rồi.
Sheet dữ liệu là dữ liệu đầu vào.
Sheet thang điểm là căn cứ để tính điểm.
Làm thế nào để tạo ra sheet kết quả từ dữ liệu căn cứ vào thang điểm chuẩn ạ.

Các bác cho cháu phương hướng giải quyết vấn đề như thế nào để tối ưu nhất ạ?
Cháu định lặp từng dòng 1 nhưng cháu thấy nó không ổn vì tốc độ có thể rất chậm và có khi phải lặp mấy lần mới được.
 

File đính kèm

Upvote 0
Cho em hỏi? em mở file cell lên bị báo lỗi như này làm thế nào ạ:
lỗi mở excel Error desciption: open method of workbooks class faied
- Thông báo lỗi đã nêu khá trực quan: Chi tiết lỗi là Phương thức Open của Workbooks bị lỗi, bạn xem lại Tên file bạn mở, đường dẫn trong tham số Open.
 
Upvote 0
Các bạn giúp mình với.
Mình muốn copy sheet1 từ một workbook khác vào workbook đang mở. Nhưng trước khi copy, kiểm tra workbook đang mở xem đã có sheet1 đó chưa. Nếu đã có, chỉ copy dữ liệu đè vào thôi (không xoá sheet1 đã có). Còn nếu sheet1 đó chưa có, thì copy nguyên cả sheet1 vào.
Các bạn xem và chỉ giúp mình với. Mình cảm ơn nhiều!!!
- Mình có ý này, bạn tham khảo nhé. Đầu tiên bạn kiểm tra workbook đang mở có sheet1 như bạn mong muốn hay không. Có thể dùng vòng lặp for each để duyệt qua các sheet, và kiểm tra tên của Sheet có hay không.
- Nếu Có sheet1 thì chỉ copy vùng.
- Nếu không có thì tiến hành Move sheet bên kia qua luôn hoặc Copy toàn bộ dữ liệu.
 
Upvote 0
Web KT

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

Back
Top Bottom