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:
Sau khi nhờ thầy @Ba Tê viết code cho file mà em muốn sử dụng. nó có 1 vài vấn đề mà em mong muốn nhờ các anh chị tìm cách giúp với.

Ở file đính kèm và hình ảnh

Hiện tại các kết quả trả về cho các cột F, N ( bôi vàng) đều Ok.

Em muốn nhờ các anh chị, thầy cô xem có viết được 1 đoạn code thỏa mãn yêu cầu như sau của em:

Khi em nhập sản phẩm vào ô C11. ở file “sau khi viet code” thì ô C12, C13 nó cũng sẽ nhảy theo. è giờ em muốn là: Khi nhập ở C11 thì các ô sau liền kề tiếp theo có giá trị giống thì ẩn đi hoặc được bôi màu trắng để khi in không thấy ( như file “ nhập tay”

Và khi nhập số lượng tại ô D11 thì số lượng bên cột I11-I12-I13 sẽ thay đổi luôn theo công thức đã định sẵn không ạ.

Xin cám ơn ạ. ( do file của em đính kèm lên. Thấy thầy @Ba Tê nói có vi rút với nhiều file rác nên em mới đính kèm hình ảnh). Mong các anh chị, thầy cô thông cảm ạ.
code của thầy ấy đây ạ:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sArr(), dArr(), tArr(), I As Long, K As Long, R As Long, Txt As String
Application.EnableEvents = False
If Not Intersect(Target, Range("C11:C5000")) Is Nothing Then
    If Target.Count = 1 Then
        sArr = Sheets("Data").Range("A3", Sheets("Data").Range("A3").End(xlDown)).Resize(, 6).Value
        R = UBound(sArr)
        K = -1
        With Target
            Txt = .Value
            For I = 1 To R
                If sArr(I, 2) = Txt Then
                    K = K + 1
                    .Offset(K) = Txt
                    .Offset(K, -1) = sArr(I, 1)
                    .Offset(K, 3) = sArr(I, 3)
                    .Offset(K, 4) = sArr(I, 6)
                    .Offset(K, 6) = "=RC[-5]*RC[-3]+(RC[-5]*RC[-3]*RC[-1])"
                    .Offset(K, 7) = sArr(I, 6)
                    .Offset(K, 9) = sArr(I, 6)
                    .Offset(K, 10) = sArr(I, 5)
                    .Offset(K, 11) = sArr(I, 4)
                End If
            Next I
        End With
    End If
End If
Application.EnableEvents = True
End Sub
 

File đính kèm

  • Nhap tay.png
    Nhap tay.png
    171.2 KB · Đọc: 11
  • Sau khi viet code.png
    Sau khi viet code.png
    158.7 KB · Đọc: 10
  • form chung.xlsm
    57.1 KB · Đọc: 10
Lần chỉnh sửa cuối:
Upvote 0
Sau khi nhờ thầy @Ba Tê viết code cho file mà em muốn sử dụng. nó có 1 vài vấn đề mà em mong muốn nhờ các anh chị tìm cách giúp với.

Ở file đính kèm và hình ảnh

Hiện tại các kết quả trả về cho các cột F, N ( bôi vàng) đều Ok.

Em muốn nhờ các anh chị, thầy cô xem có viết được 1 đoạn code thỏa mãn yêu cầu như sau của em:

Khi em nhập sản phẩm vào ô C11. ở file “sau khi viet code” thì ô C12, C13 nó cũng sẽ nhảy theo. è giờ em muốn là: Khi nhập ở C11 thì các ô sau liền kề tiếp theo có giá trị giống thì ẩn đi hoặc được bôi màu trắng để khi in không thấy ( như file “ nhập tay”

Và khi nhập số lượng tại ô D11 thì số lượng bên cột I11-I12-I13 sẽ thay đổi luôn theo công thức đã định sẵn không ạ.

Xin cám ơn ạ. ( do file của em đính kèm lên. Thấy thầy @Ba Tê nói có vi rút với nhiều file rác nên em mới đính kèm hình ảnh). Mong các anh chị, thầy cô thông cảm ạ.
Code đâu làm gì thấy cái code nào bạn.Thấy rồi bạn nhé.Nhưng không hiểu nên không sửa.:D.
 
Lần chỉnh sửa cuối:
Upvote 0
Đã VBA lại còn ứng dụng công thức nữa (vì #N/A thường là do công thức hàm excel trả về)
Nếu vẫn thích thế, thì để kiểm #N/A trong VBA thì xem gợi ý sau sẽ hiểu (bài này sưu tầm từ internet làm ví dụ)
Mã:
Public Function checkCells(Rg As Range) As Boolean
    Dim result As Boolean, r
    result = False
    For Each r In Rg
        If Application.WorksheetFunction.IsNA(r) Then
            result = True
            Exit For
        End If
    Next
    checkCells = result
End Function

Cảm ơn anh đã trả lời, ý tưởng ở đây của em là vlookup từ rất nhiều file khác nhau vào một file gốc, nếu có dữ liệu => nó thuộc production đó, không có dữ liêu( tức là bị #N/A) thì vlookup file của bộ phận khác đến khi hết #N/A thì thôi
 
Upvote 0
Cảm ơn anh đã trả lời, ý tưởng ở đây của em là vlookup từ rất nhiều file khác nhau vào một file gốc, nếu có dữ liệu => nó thuộc production đó, không có dữ liêu( tức là bị #N/A) thì vlookup file của bộ phận khác đến khi hết #N/A thì thôi
Đã VBA thì tìm hiểu Find của Range xem sao, dùng Vlookup làm chi cho rối và chậm
 
Upvote 0
Thầy nào viết giúp em đoạn code nào mà xóa được dữ lieu nhập trước đó không ạ.
Trước đó có 1 đoạn code. Khi em nhập. Nó tự động nhảy ra rất nhiều dữ liệu ở các cột khác.
Nếu em nhập sai dữ liệu đầu vào. Mà em muốn xóa đi. Thì các ô được nhảy dữ liệu trước đó sẽ cũng được xóa.
 
Upvote 0
Thầy nào viết giúp em đoạn code nào mà xóa được dữ lieu nhập trước đó không ạ.
Trước đó có 1 đoạn code. Khi em nhập. Nó tự động nhảy ra rất nhiều dữ liệu ở các cột khác.
Nếu em nhập sai dữ liệu đầu vào. Mà em muốn xóa đi. Thì các ô được nhảy dữ liệu trước đó sẽ cũng được xóa.
Vậy bạn xác định lại các vùng bạn ghi thêm vào đó rồi xóa nó đi.Ghi vào được chắc xác định vị trí cũng được chứ nhỉ.
 
Upvote 0

File đính kèm

  • huong.xlsm
    37.2 KB · Đọc: 5
Upvote 0
Bây giờ bạn muốn xóa dữ liệu ở sheets nào.
Ban đầu là khi em nhập dữ liệu từ cột C11 ( sheet Form) thì các ô B11,E11,F11,G11,H,J,L,M,N11 tự động nhảy theo. Nếu giờ em xóa C11 đi thì các ô còn lại cũng tự động xóa được không ạ
 
Upvote 0
Web KT

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

Back
Top Bottom