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ào anh chị GPE,
Em có đoạn code muốn copy giá trị sheets như bên dưới, khi chạy báo lỗi dòng
PHP:
Sheets(j).Range("C1:S500").Select
anh chị kiểm tra giúp em nhé. em cám ơn ạ
PHP:
Sub copygiatri()
Dim j As Integer
Application.DisplayAlerts = False
    For j = 8 To Sheets.Count
        Sheets(j).Range("C1:S500").Select
        Selection.copy
    Selection.PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
    Next j
Application.DisplayAlerts = True
End Sub
 
Upvote 0
Báo lỗi ra sao?
(tôi có thể đoán lỗi; nhưng bạn là người tập viết code thì cũng nên tập chú ý đến cách VBA báo lỗi)

Gợi ý: có một số trường hợp, thâu macro xong rồi chỉ việc bỏ vào vòng lặp là xong. Nhưng cũng có một số trường hợp code đó chỉ hoạt động được 1 lần (điển hình là chỉ trên 1 sheet). Muốn làm nhiều lần thì phải thâu macro trong lúc làm 2 hay 3 sheets.
 
Upvote 0
Báo lỗi ra sao?
(tôi có thể đoán lỗi; nhưng bạn là người tập viết code thì cũng nên tập chú ý đến cách VBA báo lỗi)

Gợi ý: có một số trường hợp, thâu macro xong rồi chỉ việc bỏ vào vòng lặp là xong. Nhưng cũng có một số trường hợp code đó chỉ hoạt động được 1 lần (điển hình là chỉ trên 1 sheet). Muốn làm nhiều lần thì phải thâu macro trong lúc làm 2 hay 3 sheets.
Em gửi hình lỗi
upload_2017-7-20_9-14-57.png
record macro nhiều sheets em sẽ chú ý.
 

File đính kèm

  • upload_2017-7-20_9-14-55.png
    upload_2017-7-20_9-14-55.png
    6.8 KB · Đọc: 1
Upvote 0
Bạn nhận xét sai rồi. Tuy nhiên, tập nhận xét nhiều sẽ quen.
Với 1 sheet, phương thức Select mặc định là sheet đang active (activated)
Với nhiều sheets, trước khi select, bạn phải activate sheet
Code của bạn chỉ cần thêm
Sheets(j).Activate
Trước dòng
Sheets(j).Range("C1:S500").Select
 
Upvote 0
Bạn nhận xét sai rồi. Tuy nhiên, tập nhận xét nhiều sẽ quen.
Với 1 sheet, phương thức Select mặc định là sheet đang active (activated)
Với nhiều sheets, trước khi select, bạn phải activate sheet
Code của bạn chỉ cần thêm
Sheets(j).Activate
Trước dòng
Sheets(j).Range("C1:S500").Select
Em làm được rồi, em sẽ chú ý hơn những lần sau. Cám ơn anh nhiều
 
Upvote 0
Chào anh chị GPE,
Em có đoạn code muốn copy giá trị sheets như bên dưới, khi chạy báo lỗi dòng
PHP:
Sheets(j).Range("C1:S500").Select
anh chị kiểm tra giúp em nhé. em cám ơn ạ
PHP:
Sub copygiatri()
Dim j As Integer
Application.DisplayAlerts = False
    For j = 8 To Sheets.Count
        Sheets(j).Range("C1:S500").Select
        Selection.copy
    Selection.PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
    Next j
Application.DisplayAlerts = True
End Sub
Về phần tại sao báo lỗi thì các bài trên đã nói rồi. Tôi chỉ gợi ý bạn cách khác để rút gọn
1>
Mã:
Sub copygiatri()
  Dim j As Integer
  For j = 8 To Sheets.Count
       With Sheets(j).Range("C1:S500")
          .copy
          .PasteSpecial Paste:=xlPasteValues
       End With
    Next j
End Sub
Hoặc
2>
Mã:
Sub copygiatri()
  Dim j As Integer
  For j = 8 To Sheets.Count
       With Sheets(j).Range("C1:S500")
          .Value = .Value
       End With
    Next j
End Sub
 
Upvote 0
cho mình ké top chút nha, mình tạo macro trong excel mấy hôm trước tạo bình thường, nhưng bây giờ thị bị lỗi rồi, mình chỉ tạo được macro cho từng file excel thôi, không tao được macro dùng cho nhiều file excel. mọi người giúp mình nha, mình xài bản tiếng trung nên không biết nó thông báo gi, minh chọn 2 dòng dưới thì tạo được macro, còn chọn dòng trên cùng thì không tạo được.
 

File đính kèm

  • hinh.jpg
    hinh.jpg
    276.1 KB · Đọc: 6
  • hinh1.jpg
    hinh1.jpg
    280 KB · Đọc: 4
Upvote 0
cho mình ké top chút nha, mình tạo macro trong excel mấy hôm trước tạo bình thường, nhưng bây giờ thị bị lỗi rồi, mình chỉ tạo được macro cho từng file excel thôi, không tao được macro dùng cho nhiều file excel. mọi người giúp mình nha, mình xài bản tiếng trung nên không biết nó thông báo gi, minh chọn 2 dòng dưới thì tạo được macro, còn chọn dòng trên cùng thì không tạo được.
Đang hỏi bên đây cơ mà?
http://www.giaiphapexcel.com/dienda...g-mọi-người-giúp-mình-với.128044/#post-802102
 
Upvote 0
Cho em hỏi sao tên Macro của em bị dài thế nhỉ? có cách nào sửa không? lắm lúc nhìn hoa hết cả mắt! em xin cảm ơn
 

File đính kèm

  • 2.png
    2.png
    104.5 KB · Đọc: 21
Upvote 0
Có thể do copy cái "nút" (đối tượng shape) nào đó được gắn macro từ file khác tới thôi.
em gỡ hẳn đi xong add lại macro nó vẫn bị dài thế! giống như kiểu bật file khác có marco file, nhưng em mở 1 file thôi ạ!
 
Upvote 0
em gỡ hẳn đi xong add lại macro nó vẫn bị dài thế! giống như kiểu bật file khác có marco file, nhưng em mở 1 file thôi ạ!
cứ nhấn vào chạy thử đi bạn, vẫn chạy được là được rồi, không ảnh hưởng gì đến hòa bình thế giới đâu:D:p
 
Upvote 0
sẵn mọi người cho mình hỏi vấn đề này
mình nhớ hình như có 1 cách sắp xếp theo thứ tự tăng dần hoặc giảm dần dùng lệnh XXX.sort (mảng 1 chiều) mà quên mất chỗ XXX đó là cái gì, mong mọi người chỉ lại
mình nhớ mang máng nó là crep... hay con... gì gì đấy mà tìm google hoài chả ra
 
Upvote 0
sẵn mọi người cho mình hỏi vấn đề này
mình nhớ hình như có 1 cách sắp xếp theo thứ tự tăng dần hoặc giảm dần dùng lệnh XXX.sort (mảng 1 chiều) mà quên mất chỗ XXX đó là cái gì, mong mọi người chỉ lại
mình nhớ mang máng nó là crep... hay con... gì gì đấy mà tìm google hoài chả ra

Cái XXX dó là một object của một class bên trong có ít nhất là một cái mảng và một phương thức tên là sort
 
Upvote 0
Web KT
Back
Top Bottom