[HỎI] If với 3 điều kiện thì làm sao? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

quoc_huy1702

Thành viên hoạt động
Tham gia
9/6/11
Bài viết
132
Được thích
20
Nghề nghiệp
NVVP
Chào mọi người, e hơi gà khi hỏi câu này;
e có đoạn code sau dùng để copy dữ liệu từ sheet "TONG HOP" sang 3 sheet, cụ thể sheet "ANS" , sheet "BDE", Sheet "KFF".

do e chưa rành VBA nên em biết là trong câu lệnh e sai; nhưng ko biết sửa sao cho đúng. xin mọi người giúp

private Sub Worksheet_Deactivate()Dim Rng(), Arr1(), Arr2(), Arr3(), I As Long, J As Long, K1 As Long, K2 As Long, K3 As Long
Rng = Sheets("TONG HOP").Range(Sheets("TONG HOP").[B8], Sheets("TONG HOP").[B65000].End(xlUp)).Resize(, 14).Value
ReDim Arr1(1 To UBound(Rng, 1), 1 To 14)
ReDim Arr2(1 To UBound(Rng, 1), 1 To 14)
ReDim Arr3(1 To UBound(Rng, 1), 1 To 14)
For I = 1 To UBound(Rng, 1)
If Rng(I, 1) = "ANS" Then
K1 = K1 + 1
For J = 1 To 14
Arr1(K1, J) = Rng(I, J)
Next J
Else: Rng(I, 1) = "BDE"
K2 = K2 + 1
For J = 1 To 14
Arr2(K2, J) = Rng(I, J)
Next J
If Rng(I, 1) = "KFF" Then
K3 = K3 + 1
For J = 1 To 14
Arr3(K2, J) = Rng(I, J)
Next J
End If
Next I
Sheets("ANS").[G5:T65000].ClearContents
Sheets("BDE").[G5:T65000].ClearContents
Sheets("KFF").[G5:T65000].ClearContents
Sheets("ANS").[G5].Resize(K1, 14).Value = Arr1
Sheets("BDE").[G5].Resize(K2, 14).Value = Arr2
Sheets("KFF").[G5].Resize(K3, 14).Value = Arr3
End Sub
e nghĩ chỗ sai là chỗ màu đỏ
 

File đính kèm

Mình sửa lại câu lệnh if của bạn 1 chút

Mã:
Dim Rng(), Arr1(), Arr2(), Arr3(), I As Long, J As Long, K1 As Long, K2 As Long, K3 As Long
Rng = Sheets("TONG HOP").Range(Sheets("TONG HOP").[B8], Sheets("TONG HOP").[B65000].End(xlUp)).Resize(, 14).Value
ReDim Arr1(1 To UBound(Rng, 1), 1 To 14)
ReDim Arr2(1 To UBound(Rng, 1), 1 To 14)
ReDim Arr3(1 To UBound(Rng, 1), 1 To 14)
    For I = 1 To UBound(Rng, 1)
        If Rng(I, 1) = "ANS" Then
            K1 = K1 + 1
            For J = 1 To 14
                Arr1(K1, J) = Rng(I, J)
            Next J
        ElseIf Rng(I, 1) = "BDE" Then
            K2 = K2 + 1
            For J = 1 To 14
                Arr2(K2, J) = Rng(I, J)
            Next J
        Else: Rng(I, 1) = "KFF"
            K3 = K3 + 1
            For J = 1 To 14
                Arr3(K2, J) = Rng(I, J)
            Next J
        End If
    
    Next I
                Sheets("ANS").[G5:T65000].ClearContents
                Sheets("BDE").[G5:T65000].ClearContents
                Sheets("KFF").[G5:T65000].ClearContents
                Sheets("ANS").[G5].Resize(K1, 14).Value = Arr1
                Sheets("BDE").[G5].Resize(K2, 14).Value = Arr2
                Sheets("KFF").[G5].Resize(K3, 14).Value = Arr3
Bạn chép lại nhen
 
Upvote 0
Chào mọi người, e hơi gà khi hỏi câu này;
e có đoạn code sau dùng để copy dữ liệu từ sheet "TONG HOP" sang 3 sheet, cụ thể sheet "ANS" , sheet "BDE", Sheet "KFF".

do e chưa rành VBA nên em biết là trong câu lệnh e sai; nhưng ko biết sửa sao cho đúng. xin mọi người giúp


e nghĩ chỗ sai là chỗ màu đỏ
Thử với Sub này xem sao:
PHP:
Public Sub GPE()
Application.ScreenUpdating = False
Dim Rng(), Arr(), I As Long, J As Long, K As Long, Ws As Worksheet, Tem As String
    Rng = Sheets("TONG HOP").Range(Sheets("TONG HOP").[B8], Sheets("TONG HOP").[B65000].End(xlUp)).Resize(, 14).Value
ReDim Arr(1 To UBound(Rng, 1), 1 To 14)
    For Each Ws In Worksheets
        If Ws.Name <> "TONG HOP" Then
            Tem = Ws.Name: K = 0
            For I = 1 To UBound(Rng, 1)
                If Rng(I, 1) = Tem Then
                    K = K + 1
                    For J = 1 To 14
                        Arr(K, J) = Rng(I, J)
                    Next J
                End If
            Next I
                Ws.[G5:T1000].ClearContents
                If K Then Ws.[G5].Resize(K, 14).Value = Arr
        End If
    Next
Application.ScreenUpdating = True
End Sub
 
Upvote 0
cho e hỏi giữa code cũ và code của chú Ba tê thấy có 2 sự khác nhau
Code cũ thì screen tự động update khi nhấn qua lại các sheet;
Code chú Ba tê thì phải nhấn chạy thì mới cập nhật; Ko có tự động!
Vậy câu code nào thể hiện việc đó?
 
Upvote 0
cho e hỏi giữa code cũ và code của chú Ba tê thấy có 2 sự khác nhau
Code cũ thì screen tự động update khi nhấn qua lại các sheet;
Code chú Ba tê thì phải nhấn chạy thì mới cập nhật; Ko có tự động!
Vậy câu code nào thể hiện việc đó?
Bạn xem tiêu đề của sub xem:
Private Sub Worksheet_Deactivate() nằm ở sheet TONG HOP
Public Sub GPE() Nằm ở Module
Muốn xài Sub GPE() "tự động" thì bạn đưa nó vào nội dung Sub trên:
PHP:
Private Sub Worksheet_Deactivate()
GPE
End Sub
 
Upvote 0
Sẵn e xin hỏi; muốn làm ngược lại thì code thế nào?
 
Upvote 0
Web KT

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

Back
Top Bottom