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:
Em muốn lấy dữ liệu từ sheet Data sang sheet Bang luong
Ở sheet Bang lương, cột nào cần lấy số liệu, em đã đánh số thứ tự tương ứng với số cột của sheet Data rồi
Bác lưu ý cho em câu hỏi tìm lỗi ở bài trên nhé!
Biểu đọc code của bạn rồi tìm chỗ sai thì thà tôi viết theo ý mình còn "dễ' thở" hơn.
Bạn xem file nhé, có gì thì bàn tiếp.
 

File đính kèm

  • Bang luong.rar
    962 KB · Đọc: 16
Upvote 0
phải bỏ filter mới đếm được
Mã:
    With ws2
        For I = 1 To UBound(Criteria)
            .Range("A2").Parent.AutoFilterMode = False
            J = Application.WorksheetFunction.CountIf(.Range("CF3", .Range("CF3").End(xlDown)), Criteria(I))
            With .Range("A2", .Range("A2").End(xlDown)).Resize(, 87)
                .AutoFilter field:=84, Criteria1:=Criteria(I)
                Set rng = .Parent.AutoFilter.Range.Offset(1).Resize(J, 1)
                With ws1
                    K = .Cells.Find(what:=Criteria(I)).Row + 1
                    .Range("A" & K).Resize(J) = rng.Value2
                End With
            End With
        Next I
    End With
Bác HieuCD cho em hỏi thêm với ah.
Em muốn đặt rng bằng với kết quả lọc có loại bỏ dòng tiêu đề thì em phải làm sao ah.
 
Upvote 0
Bác HieuCD cho em hỏi thêm với ah.
Em muốn đặt rng bằng với kết quả lọc có loại bỏ dòng tiêu đề thì em phải làm sao ah.
lệnh
Set rng = .Parent.AutoFilter.Range.Offset(1).Resize(J, 1)
trong đó Offset(1) là xuống 1 dòng để bỏ dòng tiêu đề
bạn thử code
Mã:
    With ws2
        For I = 1 To UBound(Criteria)
            .Range("A2").Parent.AutoFilterMode = False
            With .Range("A2", .Range("A2").End(xlDown)).Resize(, 87)
                .AutoFilter field:=84, Criteria1:=Criteria(I)
            End With
            Set rng = .Range("A3", .Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible)
            With ws1
                  K = .Cells.Find(what:=Criteria(I)).Row + 1
                  .Range("A" & K).Resize(rng.Rows.Count) = rng.Value2
            End With
        Next I
    End With
 
Upvote 0
Xin chào cả nhà
Mình muốn hỏi nếu mình muốn viết code đổi màu ô dữ liệu trong exel thì làm thế nào
 
Upvote 0
Chào anh chị!
Mình mới gia nhập GPE. Hiện mình muốn học về lập trình(về VBA, macro, access) các bạn có tài liệu nào chia sẻ cho mình với nhé!
Tks!
 
Upvote 0
Chào anh chị!
Mình mới gia nhập GPE. Hiện mình muốn học về lập trình(về VBA, macro, access) các bạn có tài liệu nào chia sẻ cho mình với nhé!
Tks!
Diễn đàn GPE có cả 1 kho tài liệu khổng lồ, chưa đủ để bạn học tập & nghiên cứu à?
 
Upvote 0
Kính gửi anh chị đồng môn yêu thích VBA trong Excel

Mình có một vấn đề nhờ anh chị giúp đở.

Số là mình có làm 1 form nhập liệu bằng với VBA. Khi mình lấy giá trị từ 1 label. Giá trị mình lấy nó ở dạng text. Mình muốn lấy giá trị từ label nhưng ở dạng số number.

Mong các bạn cho xin cao kiến.
 
Upvote 0
Kính gửi anh chị đồng môn yêu thích VBA trong Excel

Mình có một vấn đề nhờ anh chị giúp đở.

Số là mình có làm 1 form nhập liệu bằng với VBA. Khi mình lấy giá trị từ 1 label. Giá trị mình lấy nó ở dạng text. Mình muốn lấy giá trị từ label nhưng ở dạng số number.

Mong các bạn cho xin cao kiến.
Dùng lệnh này thử xem.
Mã:
Val(Label1.Caption)
 
Upvote 0
Số là mình có làm 1 form nhập liệu bằng với VBA. Khi mình lấy giá trị từ 1 label. Giá trị mình lấy nó ở dạng text. Mình muốn lấy giá trị từ label nhưng ở dạng số number.
Mong các bạn cho xin cao kiến.

Kiến lữa của mình là: Sao bạn lại lấy từ Label, mà không là TextBox hay ComboBox?
 
Upvote 0
Kính gửi anh chị đồng môn yêu thích VBA trong Excel

Mình có một vấn đề nhờ anh chị giúp đở.

Số là mình có làm 1 form nhập liệu bằng với VBA. Khi mình lấy giá trị từ 1 label. Giá trị mình lấy nó ở dạng text. Mình muốn lấy giá trị từ label nhưng ở dạng số number.

Mong các bạn cho xin cao kiến.
.value nhé bạn, format của cells bạn muốn nhập data vào phải ở dạng number.
 
Upvote 0
Kính gửi anh chị đồng môn yêu thích VBA trong Excel

Mình có một vấn đề nhờ anh chị giúp đở.

Số là mình có làm 1 form nhập liệu bằng với VBA. Khi mình lấy giá trị từ 1 label. Giá trị mình lấy nó ở dạng text. Mình muốn lấy giá trị từ label nhưng ở dạng số number.

Mong các bạn cho xin cao kiến.

Bạn thử dùng hàm Val để convert từ Số được lưu dưới dạng text sang Number chưa?
 
Upvote 0
Hàm Val có tính rất dễ dãi. Tự bẫy lỗi và tự bỏ đi những chỗ không dịch được.
Vì vậy dùng hàm này nên cẩn thận.

Nếu biết loại số của mình thì dùng hàm CInt, CLng, CDbl và code bẫy lỗi sẽ an toàn hơn.
 
Upvote 0
Em chào A/C!
Em đang tạo code để Clear filter một loạt các sheets trong file, đang ở chế độ filter. Hiện tại nếu các sheet đều filter thì code chạy được. Nhưng nếu sheet nào đó ko filter thì code bị lỗi và dừng lại. A/C sửa hoặc bổ sung giúp Em cách bẫy lỗi trường hợp ko Filter thì next sang các sheet tiếp theo. Cảm ơn A/C nhiều!

Mã:
Sub ClearAllSheet()
On Error Resume Next
Sheet16.Select ActiveSheet.ShowAllData
Sheet2.Select ActiveSheet.ShowAllData
Sheet4.Select ActiveSheet.ShowAllData
Sheet5.Select ActiveSheet.ShowAllData
Sheet6.Select ActiveSheet.ShowAllData
Sheet9.Select ActiveSheet.ShowAllData
Sheet13.Select ActiveSheet.ShowAllData
Sheet14.Select ActiveSheet.ShowAllData
Sheet15.Select ActiveSheet.ShowAllData
Sheet16.Select ActiveSheet.ShowAllData
Sheet17.Select ActiveSheet.ShowAllData
Sheet19.Select ActiveSheet.ShowAllData
Sheet21.Select ActiveSheet.ShowAllData
Sheet22.Select ActiveSheet.ShowAllData
End Sub
 
Upvote 0
Em chào A/C!
Em đang tạo code để Clear filter một loạt các sheets trong file, đang ở chế độ filter. Hiện tại nếu các sheet đều filter thì code chạy được. Nhưng nếu sheet nào đó ko filter thì code bị lỗi và dừng lại. A/C sửa hoặc bổ sung giúp Em cách bẫy lỗi trường hợp ko Filter thì next sang các sheet tiếp theo. Cảm ơn A/C nhiều!

Mã:
Sub ClearAllSheet()
On Error Resume Next
Sheet16.Select ActiveSheet.ShowAllData
Sheet2.Select ActiveSheet.ShowAllData
Sheet4.Select ActiveSheet.ShowAllData
Sheet5.Select ActiveSheet.ShowAllData
Sheet6.Select ActiveSheet.ShowAllData
Sheet9.Select ActiveSheet.ShowAllData
Sheet13.Select ActiveSheet.ShowAllData
Sheet14.Select ActiveSheet.ShowAllData
Sheet15.Select ActiveSheet.ShowAllData
Sheet16.Select ActiveSheet.ShowAllData
Sheet17.Select ActiveSheet.ShowAllData
Sheet19.Select ActiveSheet.ShowAllData
Sheet21.Select ActiveSheet.ShowAllData
Sheet22.Select ActiveSheet.ShowAllData
End Sub
- Nên nghĩ bạn nên dùng vòng lặp For để chạy qua các Sheet.
- Kiểm tra tình trạng bảng tính Có Filter hay không?
- Nếu có thì tiến hành ShowAllData như bạn muốn, còn không thì bỏ qua.
 
Upvote 0
Web KT
Back
Top Bottom