Giúp sửa code chọn tài khoản để in

Liên hệ QC

Hongha0412

Thành viên mới
Tham gia
28/8/17
Bài viết
20
Được thích
8
Giới tính
Nam
Tôi có file dùng để in sổ kế toán cần sửa code do có tình huống phát sinh mới.
Ví dụ: cần in sổ TK642 (TK chi tiết là 6421,6422), thì trong dữ liệu chỉ có 6421,6422, nên chưa thể in TK642 được.
Yêu cầu cụ thể trong file đính kèm.
 

File đính kèm

Lần chỉnh sửa cuối:
Mới Edit lại
Mã:
Sub InSoCai()
    Dim sArr(), dArr(), I As Long, J As Long
    Dim SoTK As Long, TKno As Long, TKco As Long, Er As Long
SoTK = Sheets("So").Range("D4").Value
With Sheets("T01")
    Er = .Range("D" & Rows.Count).End(xlUp).Row
    If Er < 7 Then Exit Sub
    sArr = .Range("D7:D" & Er).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 6)
For I = 1 To UBound(sArr)
    If sArr(I, 5) <> Empty Then TKno = Left(sArr(I, 5), 3)
    If sArr(I, 6) <> Empty Then TKco = Left(sArr(I, 6), 3)
    If TKno = SoTK Or TKco = SoTK Then
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        If TKno = SoTK Then dArr(K, 5) = sArr(I, 7)
        If TKco = SoTK Then dArr(K, 6) = sArr(I, 7)
    End If
Next I
With Sheets("So")
    .Range("A13:F5000").Clear
    If K Then
        With .Range("A13").Resize(K, 6)
            .Value = dArr
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
        Er = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A13:A" & Er).HorizontalAlignment = xlCenter
        .Range("C13:C" & Er).HorizontalAlignment = xlLeft
        Union(.Range("B13:B" & Er), .Range("E13:F" & Er)).HorizontalAlignment = xlRight
        .Range("E13:F" & Er).NumberFormat = "#,##0"
        .Range("C" & Er + 1) = .Range("J4")
        .Range("E" & Er + 1) = "=Sum(E13:E" & Er & ")"
        .Range("F" & Er + 1) = "=Sum(F13:F" & Er & ")"
        With .Range("A" & Er + 1 & ": F" & Er + 1)
            .Borders.LineStyle = xlContinuous
            .Font.Bold = True
        End With
        .Range("D" & Er + 3) = .Range("J3")
        .Range("A" & Er + 4) = .Range("J2"):  .Range("A" & Er + 9) = .Range("J5")
        .Range("D" & Er + 4) = .Range("J4"):  .Range("D" & Er + 9) = .Range("J6")
        .Range("A" & Er + 4 & ": C" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        .Range("D" & Er + 3 & ": F" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
    End If
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$4" Or Target.Address = "$G$1" Then Call SoCai
End Sub
Public Sub SoCai()
Dim sArr(), dArr(), R As Long, I As Long, J As Long, K As Long, TK As Long, Col As Long, Sh As String, col2 As Long
Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = Tk
        Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
            For J = 1 To 3
                dArr(K, J) = sArr(I, J)
            Next J
                dArr(K, Col) = sArr(I, 7)
                dArr(K, 4) = sArr(I, IIf(sArr(I, 5) = TK, 6, 5))
        End If
    Next I
   
        TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
                dArr(K, J) = sArr(I, J)
            Next J
           
            Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
            Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
           
            Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
            Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
                dArr(K, Col) = sArr(I, 7)
                dArr(K, 4) = sArr(I, IIf(sArr(I, 5) = TK, 6, 5))
        End If
        Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String
Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If sArr(I, 5) = TK Or sArr(I, 6) = TK Then
            K = K + 1
            Col = IIf(sArr(I, 5) = TK, 5, 6)
            For J = 1 To 3
    Next I
    .[A13:H1000].ClearContents
    .[A13:H1000].Borders.LineStyle = xlNone
    .[A13:H1000].Font.Bold = False
    .[F13:F1000].HorizontalAlignment = xlGeneral
    If K Then
        .[A13].Resize(K, 6) = dArr
        .[A13].Resize(K + 1, 6).Borders.LineStyle = xlContinuous
        .[A13].Resize(K, 6).Borders(xlInsideHorizontal).Weight = xlHairline
        .[C13].Offset(K) = Str1
        .[E13].Offset(K + 2) = Str3
        .[D13].Offset(K).Resize(, 4).Font.Bold = True
        .[E13:F13].Offset(K) = "=SUM(R13C:R[-1]C)" 'Cong tong Thu, Chi)
        .[B13].Offset(K + 3) = Str2
        .[B13].Offset(K + 8) = Str5
        .[E13].Offset(K + 3) = Str4
        .[E13].Offset(K + 8) = Str6
        .[E13].Offset(K + 2).Resize(7).HorizontalAlignment = xlCenter
        Else
        End If
    With Sheets("So")
        col2 = [k1].Value
        ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & col2
        End With
End With
End Sub
Sao Dim str... nhiều vạy
 
Upvote 0
Em cũng thắc mắc sao anh ấy dim lại nhiều lần thế với mục đích gì vậy nhỉ
Thà xử lầm không tha lầm
Tôi có file dùng để in sổ kế toán cần sửa code do có tình huống phát sinh mới.
Ví dụ: cần in sổ TK642 (TK chi tiết là 6421,6422), thì trong dữ liệu chỉ có 6421,6422, nên chưa thể in TK642 được.
Yêu cầu cụ thể trong file đính kèm.
Chỉnh lại các dòng đầu
Mã:
Public Sub SoCai()
Dim sArr(), dArr(), R As Long, I As Long, J As Long, K As Long, Col As Long, Sh As String, col2 As Long
Dim TK As String, Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String

Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value & "*"
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If CStr(sArr(I, 5)) Like TK Or CStr(sArr(I, 6)) Like TK Then
            K = K + 1
            Col = IIf(CStr(sArr(I, 5)) Like TK, 5, 6)
            For J = 1 To 3
                dArr(K, J) = sArr(I, J)
            Next J
                dArr(K, Col) = sArr(I, 7)
                dArr(K, 4) = sArr(I, IIf(CStr(sArr(I, 5)) Like TK, 6, 5))
        End If
    Next I
....
 
Upvote 0
Upvote 0
Thà xử lầm không tha lầm

Chỉnh lại các dòng đầu
Mã:
Public Sub SoCai()
Dim sArr(), dArr(), R As Long, I As Long, J As Long, K As Long, Col As Long, Sh As String, col2 As Long
Dim TK As String, Str1 As String, Str2 As String, Str3 As String, Str4 As String, Str5 As String, Str6 As String

Sh = [G1].Value
With Sheets(Sh)
    sArr = .Range(.[D7], .[D7].End(xlDown)).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 6)
With Sheets("So")
    TK = .Range("D4").Value & "*"
    Str1 = .[J1].Value: Str2 = .[J2].Value
    Str3 = .[J3].Value: Str4 = .[J4].Value
    Str5 = .[J5].Value: Str6 = .[J6].Value
    For I = 1 To UBound(sArr, 1)
        If CStr(sArr(I, 5)) Like TK Or CStr(sArr(I, 6)) Like TK Then
            K = K + 1
            Col = IIf(CStr(sArr(I, 5)) Like TK, 5, 6)
            For J = 1 To 3
                dArr(K, J) = sArr(I, J)
            Next J
                dArr(K, Col) = sArr(I, 7)
                dArr(K, 4) = sArr(I, IIf(CStr(sArr(I, 5)) Like TK, 6, 5))
        End If
    Next I
....
Cảm ơn mọi người đã quan tâm và giúp đỡ.
Sau khi test lại, code đã hoạt động đúng ý.
Còn cái code cũ, cũng do mọi người chỉnh sửa giùm, nhưng sau đó mình có sửa thêm cho phù hợp, nên có thể nó hơi lung củng
 

File đính kèm

Upvote 0
Cảm ơn mọi người đã quan tâm và giúp đỡ.
Sau khi test lại, code đã hoạt động đúng ý.
Còn cái code cũ, cũng do mọi người chỉnh sửa giùm, nhưng sau đó mình có sửa thêm cho phù hợp, nên có thể nó hơi lung củng
Cài hoa lá cành sao nó lại dài thế :p:p:p
Mã:
Sub InSoCai()
    Dim sArr(), dArr(), I As Long, J As Long
    Dim SoTK As Long, TKno As Long, TKco As Long, Er As Long
SoTK = Sheets("So").Range("D4").Value
With Sheets("T01")
    Er = .Range("D" & Rows.Count).End(xlUp).Row
    If Er < 7 Then Exit Sub
    sArr = .Range("D7:D" & Er).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 6)
For I = 1 To UBound(sArr)
    If sArr(I, 5) <> Empty Then TKno = Left(sArr(I, 5), 3)
    If sArr(I, 6) <> Empty Then TKco = Left(sArr(I, 6), 3)
    If TKno = SoTK Or TKco = SoTK Then
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        If TKno = SoTK Then dArr(K, 5) = sArr(I, 7)
        If TKco = SoTK Then dArr(K, 6) = sArr(I, 7)
    End If
Next I
With Sheets("So")
    .Range("A13:F5000").Clear
    If K Then
        With .Range("A13").Resize(K, 6)
            .Value = dArr
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
        Er = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A13:A" & Er).HorizontalAlignment = xlCenter
        .Range("C13:C" & Er).HorizontalAlignment = xlLeft
        Union(.Range("B13:B" & Er), .Range("E13:F" & Er)).HorizontalAlignment = xlRight
        .Range("E13:F" & Er).NumberFormat = "#,##0"
        .Range("C" & Er + 1) = .Range("J4")
        .Range("E" & Er + 1) = "=Sum(E13:E" & Er & ")"
        .Range("F" & Er + 1) = "=Sum(F13:F" & Er & ")"
        With .Range("A" & Er + 1 & ": F" & Er + 1)
            .Borders.LineStyle = xlContinuous
            .Font.Bold = True
        End With
        .Range("D" & Er + 3) = .Range("J3")
        .Range("A" & Er + 4) = .Range("J2"):  .Range("A" & Er + 9) = .Range("J5")
        .Range("D" & Er + 4) = .Range("J4"):  .Range("D" & Er + 9) = .Range("J6")
        .Range("A" & Er + 4 & ": C" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        .Range("D" & Er + 3 & ": F" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
    End If
End With
End Sub
Bài đã được tự động gộp:

chết cha rồi Cô giáo. Mình bị Ctrl V bị lố rồi. Xin lỗi cô giáo
Còn nữa kìa người ơi. Chưa xong được đâu (2 cái For I=.........) :p:p:p
 
Lần chỉnh sửa cuối:
Upvote 0
Cài hoa lá cành sao nó lại dài thế :p:p:p
Mã:
Sub InSoCai()
    Dim sArr(), dArr(), I As Long, J As Long
    Dim SoTK As Long, TKno As Long, TKco As Long, Er As Long
SoTK = Sheets("So").Range("D4").Value
With Sheets("T01")
    Er = .Range("D" & Rows.Count).End(xlUp).Row
    If Er < 7 Then Exit Sub
    sArr = .Range("D7:D" & Er).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 6)
For I = 1 To UBound(sArr)
    If sArr(I, 5) <> Empty Then TKno = Left(sArr(I, 5), 3)
    If sArr(I, 6) <> Empty Then TKco = Left(sArr(I, 6), 3)
    If TKno = SoTK Or TKco = SoTK Then
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        If TKno = SoTK Then dArr(K, 5) = sArr(I, 7)
        If TKco = SoTK Then dArr(K, 6) = sArr(I, 7)
    End If
Next I
With Sheets("So")
    .Range("A13:F5000").Clear
    If K Then
        With .Range("A13").Resize(K, 6)
            .Value = dArr
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
        Er = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A13:A" & Er).HorizontalAlignment = xlCenter
        .Range("C13:C" & Er).HorizontalAlignment = xlLeft
        Union(.Range("B13:B" & Er), .Range("E13:F" & Er)).HorizontalAlignment = xlRight
        .Range("E13:F" & Er).NumberFormat = "#,##0"
        .Range("C" & Er + 1) = .Range("J4")
        .Range("E" & Er + 1) = "=Sum(E13:E" & Er & ")"
        .Range("F" & Er + 1) = "=Sum(F13:F" & Er & ")"
        With .Range("A" & Er + 1 & ": F" & Er + 1)
            .Borders.LineStyle = xlContinuous
            .Font.Bold = True
        End With
        .Range("D" & Er + 3) = .Range("J3")
        .Range("A" & Er + 4) = .Range("J2"):  .Range("A" & Er + 9) = .Range("J5")
        .Range("D" & Er + 4) = .Range("J4"):  .Range("D" & Er + 9) = .Range("J6")
        .Range("A" & Er + 4 & ": C" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        .Range("D" & Er + 3 & ": F" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
    End If
End With
End Sub
Code chạy ok quá. Mà giờ muốn đổi cái font chữ sang times new roman thì sửa chỗ nào vậy bạn.
 
Upvote 0
Cài hoa lá cành sao nó lại dài thế :p:p:p
Mã:
Sub InSoCai()
    Dim sArr(), dArr(), I As Long, J As Long
    Dim SoTK As Long, TKno As Long, TKco As Long, Er As Long
SoTK = Sheets("So").Range("D4").Value
With Sheets("T01")
    Er = .Range("D" & Rows.Count).End(xlUp).Row
    If Er < 7 Then Exit Sub
    sArr = .Range("D7:D" & Er).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 6)
For I = 1 To UBound(sArr)
    If sArr(I, 5) <> Empty Then TKno = Left(sArr(I, 5), 3)
    If sArr(I, 6) <> Empty Then TKco = Left(sArr(I, 6), 3)
    If TKno = SoTK Or TKco = SoTK Then
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        If TKno = SoTK Then dArr(K, 5) = sArr(I, 7)
        If TKco = SoTK Then dArr(K, 6) = sArr(I, 7)
    End If
Next I
With Sheets("So")
    .Range("A13:F5000").Clear
    If K Then
        With .Range("A13").Resize(K, 6)
            .Value = dArr
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
        Er = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A13:A" & Er).HorizontalAlignment = xlCenter
        .Range("C13:C" & Er).HorizontalAlignment = xlLeft
        Union(.Range("B13:B" & Er), .Range("E13:F" & Er)).HorizontalAlignment = xlRight
        .Range("E13:F" & Er).NumberFormat = "#,##0"
        .Range("C" & Er + 1) = .Range("J4")
        .Range("E" & Er + 1) = "=Sum(E13:E" & Er & ")"
        .Range("F" & Er + 1) = "=Sum(F13:F" & Er & ")"
        With .Range("A" & Er + 1 & ": F" & Er + 1)
            .Borders.LineStyle = xlContinuous
            .Font.Bold = True
        End With
        .Range("D" & Er + 3) = .Range("J3")
        .Range("A" & Er + 4) = .Range("J2"):  .Range("A" & Er + 9) = .Range("J5")
        .Range("D" & Er + 4) = .Range("J4"):  .Range("D" & Er + 9) = .Range("J6")
        .Range("A" & Er + 4 & ": C" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        .Range("D" & Er + 3 & ": F" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
    End If
End With
End Sub
Bài đã được tự động gộp:


Còn nữa kìa người ơi. Chưa xong được đâu (2 cái For I=.........) :p:p:p
Mã:
Sub InSoCai()
    Dim sArr(), dArr(), I As Long, J As Long
    Dim SoTK As Long, TKno As Long, TKco As Long, Er As Long
SoTK = Sheets("So").Range("D4").Value
With Sheets("T01")
    Er = .Range("D" & Rows.Count).End(xlUp).Row
    If Er < 7 Then Exit Sub
    sArr = .Range("D7:D" & Er).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 6)
For I = 1 To UBound(sArr)
    If sArr(I, 5) <> Empty Then TKno = Left(sArr(I, 5), 3)
    If sArr(I, 6) <> Empty Then TKco = Left(sArr(I, 6), 3)
    If TKno = SoTK Or TKco = SoTK Then
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        If TKno = SoTK Then dArr(K, 5) = sArr(I, 7)
        If TKco = SoTK Then dArr(K, 6) = sArr(I, 7)
    End If
Next I
With Sheets("So")
    .Range("A13:F5000").Clear
    If K Then
        With .Range("A13").Resize(K, 6)
            .Value = dArr
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
        Er = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A13:A" & Er).HorizontalAlignment = xlCenter
        .Range("C13:C" & Er).HorizontalAlignment = xlLeft
        Union(.Range("B13:B" & Er), .Range("E13:F" & Er)).HorizontalAlignment = xlRight
        .Range("E13:F" & Er).NumberFormat = "#,##0"
        .Range("C" & Er + 1) = .Range("J4")
        .Range("E" & Er + 1) = "=Sum(E13:E" & Er & ")"
        .Range("F" & Er + 1) = "=Sum(F13:F" & Er & ")"
        With .Range("A" & Er + 1 & ": F" & Er + 1)
            .Borders.LineStyle = xlContinuous
            .Font.Bold = True
        End With
        .Range("D" & Er + 3) = .Range("J3")
        .Range("A" & Er + 4) = .Range("J2"):  .Range("A" & Er + 9) = .Range("J5")
        .Range("D" & Er + 4) = .Range("J4"):  .Range("D" & Er + 9) = .Range("J6")
        .Range("A" & Er + 4 & ": C" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        .Range("D" & Er + 3 & ": F" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
    End If
End With
End Sub
Bài đã được tự động gộp:

Code chạy ok quá. Mà giờ muốn đổi cái font chữ sang times new roman thì sửa chỗ nào vậy bạn.
bạn thử code này
Mã:
Sub InSoCai()
    Dim sArr(), dArr(), I As Long, J As Long
    Dim SoTK As Long, TKno As Long, TKco As Long, Er As Long
SoTK = Sheets("So").Range("D4").Value
With Sheets("T01")
    Er = .Range("D" & Rows.Count).End(xlUp).Row
    If Er < 7 Then Exit Sub
    sArr = .Range("D7:D" & Er).Resize(, 7).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 6)
For I = 1 To UBound(sArr)
    If sArr(I, 5) <> Empty Then TKno = Left(sArr(I, 5), 3)
    If sArr(I, 6) <> Empty Then TKco = Left(sArr(I, 6), 3)
    If TKno = SoTK Or TKco = SoTK Then
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        If TKno = SoTK Then dArr(K, 5) = sArr(I, 7)
        If TKco = SoTK Then dArr(K, 6) = sArr(I, 7)
    End If
Next I
With Sheets("So")
    .Range("A13:F5000").Clear
    If K Then
        With .Range("A13").Resize(K, 6)
            .Value = dArr
            .Borders.LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).Weight = xlHairline
        End With
        Er = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A13:A" & Er).HorizontalAlignment = xlCenter
        .Range("C13:C" & Er).HorizontalAlignment = xlLeft
        Union(.Range("B13:B" & Er), .Range("E13:F" & Er)).HorizontalAlignment = xlRight
        .Range("E13:F" & Er).NumberFormat = "#,##0"
        .Range("C" & Er + 1) = .Range("J4")
        .Range("E" & Er + 1) = "=Sum(E13:E" & Er & ")"
        .Range("F" & Er + 1) = "=Sum(F13:F" & Er & ")"
        With .Range("A" & Er + 1 & ": F" & Er + 1)
            .Borders.LineStyle = xlContinuous
            .Font.Bold = True
        End With
        .Range("D" & Er + 3) = .Range("J3")
        .Range("A" & Er + 4) = .Range("J2"):  .Range("A" & Er + 9) = .Range("J5")
        .Range("D" & Er + 4) = .Range("J4"):  .Range("D" & Er + 9) = .Range("J6")
        .Range("A" & Er + 4 & ": C" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        .Range("D" & Er + 3 & ": F" & Er + 9).HorizontalAlignment = xlCenterAcrossSelection
        ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
    End If
End With
End Sub
 
Upvote 0
Code chạy ok quá. Mà giờ muốn đổi cái font chữ sang times new roman thì sửa chỗ nào vậy bạn.
Bạn thêm dòng
Mã:
  .Range("A13: F" & Er + 9).Font.Name = "Times New Roman"
vào trước dòng
Mã:
ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
 
Upvote 0
Code chạy ok quá. Mà giờ muốn đổi cái font chữ sang times new roman thì sửa chỗ nào vậy bạn.

Mã:
You add row

  .Range("A13: F" & Er + 9).Font.Name = "Times New Roman"

in front of the line

ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
 
Upvote 0
Mã:
You add row

  .Range("A13: F" & Er + 9).Font.Name = "Times New Roman"

in front of the line

ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
before, NOT "in front of"
in front means:
.Range("A13: F" & Er + 9).Font.Name = "Times New Roman" ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
And,
"You add row" is rather rude, and grammatically incorrect.
"Add the following line" would be more appropriate.
 
Upvote 0
before, NOT "in front of"
in front means:
.Range("A13: F" & Er + 9).Font.Name = "Times New Roman" ActiveSheet.PageSetup.PrintArea = "$A$1:$F" & Er + 9
And,
"You add row" is rather rude, and grammatically incorrect.
"Add the following line" would be more appropriate.
OK I understand. because I'm using google translate. Responsible then google
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Trời đất ạ. Người Việt Nam nói chuyện với người Việt Nam lại nhờ google translate từ tiếng Việt sang tiếng Anh.
Hậu quả bị mắng là xứng đáng rồi

I'm happy to make the story humorous. I'm sorry teacher. Hope the teacher forgive me hihi
 
Upvote 0
Tôi chỉ chỉnh sửa cho các bạn khác biết thôi. Không thấy gì trào lộng trong tiếng Anh sai ngữ pháp cả.
Nếu trào lộng thì nó phải thật cố tình sai, để người khác biết, ví dụ:
You increase row
Enter before row
 
Upvote 0
Web KT

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

Back
Top Bottom