Code VBA định dạng border và tính tổng ở cuối vùng có dữ liệu (1 người xem)

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

baquang1984

Thành viên tiêu biểu
Tham gia
3/6/10
Bài viết
429
Được thích
44
Nghề nghiệp
Kỹ sư Lâm nghiệp
Em có chương trình như file đính kèm
Nhờ các thầy, các cô và các anh chị trên diễn đàn giaiphapexcel viết giúp Code VBA
- Định dạng đường Border cho các dòng có dữ liệu từ cột A7 đến cột H Sheets"Bieu_05"
- Tính tổng ở dòng cuối cùng có dữ liệu ở cột diện tích Sheets"Bieu_05" như file đính kèm
- Thêm phần ký tên của Chủ quản lý vào cuối biểu được định dạng, như file đính kèm
Em cảm ơn mọi người trên diễn đàn
 

File đính kèm

Lần chỉnh sửa cuối:
Mong được các thầy, cô và các bạn trên diễn đàn giúp đỡ với chương trình ở trên ạ
EM cảm ơn nhiều!
 
Upvote 0
Mong được các thầy, cô và các bạn trên diễn đàn giúp đỡ với chương trình ở trên ạ
EM cảm ơn nhiều!

tôi chỉ viết thêm vào code của bạn
Mã:
Public Sub LOC_BIEU1()
[COLOR=#0000ff]On Error GoTo thoat
Application.EnableEvents = False[/COLOR]

Dim sArr(), dArr(1 To 1, 1 To 1), dArr2(1 To 65536, 1 To 8), I As Long, j As Long, DK As String, SoTrang As Double, le As Boolean
Dim K As Long, Ong As String, Ba As String, Kem_theo As String

With Sheets("DATA")
    sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 44).Value
End With

With Sheets("Bieu_05")
DK = .[J3].Value: Ong = .[AA3].Value: Ba = [AA4].Value: Kem_theo = .[AA2].Value
For I = 1 To UBound(sArr, 1)
    If sArr(I, 5) = DK Then
         'Dien thong tin CQL1
        If sArr(I, 26) = 1 Then
                dArr(1, 1) = "(" & Kem_theo & Ong & sArr(I, 2) & ")"
            ElseIf sArr(I, 26) = 2 Then
                dArr(1, 1) = "(" & Kem_theo & Ba & sArr(I, 2) & ")"
            Else
                dArr(1, 1) = vbNullString
        End If
        Exit For
    End If
Next I
For N = I To UBound(sArr, 1)
    If sArr(N, 5) = DK Then
        K = K + 1
            dArr2(K, 1) = K: dArr2(K, 2) = sArr(N, 13): dArr2(K, 3) = sArr(N, 14)
            If sArr(N, 3) <> "" And sArr(N, 17) <> "" Then
                    dArr2(K, 4) = sArr(N, 17) & ", " & sArr(N, 3)
                ElseIf sArr(N, 3) <> "" And sArr(N, 17) = "" Then
                    dArr2(K, 4) = sArr(N, 3)
                ElseIf sArr(N, 3) = "" And sArr(N, 17) <> "" Then
                    dArr2(K, 4) = sArr(N, 17)
                Else
                dArr2(K, 4) = vbNullString
             End If
            dArr2(K, 5) = sArr(N, 15)
            [COLOR=#0000ff]tong = tong + dArr2(K, 5)[/COLOR]
    End If
Next N
 [COLOR=#0000cd]dArr2(K + 1, 5) = tong
 dArr2(K + 1, 1) = "T" & Chr(63) & "ng"
 dArr2(K + 3, 6) = "Tân Viet, ngay..........thang.............nam 2014"
  dArr2(K + 4, 6) = "Nguoi Viet Don"
   dArr2(K + 5, 6) = "Ky ten, ghi ro ho ten, dong dau neu co"
 If K Then
    .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K, 8).Borders.Value = 1
End If
thoat:
Application.EnableEvents = True[/COLOR]
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
tôi chỉ viết thêm vào code của bạn
Mã:
Public Sub LOC_BIEU1()
[COLOR=#0000ff]On Error GoTo thoat
Application.EnableEvents = False[/COLOR]

Dim sArr(), dArr(1 To 1, 1 To 1), dArr2(1 To 65536, 1 To 8), I As Long, j As Long, DK As String, SoTrang As Double, le As Boolean
Dim K As Long, Ong As String, Ba As String, Kem_theo As String

With Sheets("DATA")
    sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 44).Value
End With

With Sheets("Bieu_05")
DK = .[J3].Value: Ong = .[AA3].Value: Ba = [AA4].Value: Kem_theo = .[AA2].Value
For I = 1 To UBound(sArr, 1)
    If sArr(I, 5) = DK Then
         'Dien thong tin CQL1
        If sArr(I, 26) = 1 Then
                dArr(1, 1) = "(" & Kem_theo & Ong & sArr(I, 2) & ")"
            ElseIf sArr(I, 26) = 2 Then
                dArr(1, 1) = "(" & Kem_theo & Ba & sArr(I, 2) & ")"
            Else
                dArr(1, 1) = vbNullString
        End If
        Exit For
    End If
Next I
For N = I To UBound(sArr, 1)
    If sArr(N, 5) = DK Then
        K = K + 1
            dArr2(K, 1) = K: dArr2(K, 2) = sArr(N, 13): dArr2(K, 3) = sArr(N, 14)
            If sArr(N, 3) <> "" And sArr(N, 17) <> "" Then
                    dArr2(K, 4) = sArr(N, 17) & ", " & sArr(N, 3)
                ElseIf sArr(N, 3) <> "" And sArr(N, 17) = "" Then
                    dArr2(K, 4) = sArr(N, 3)
                ElseIf sArr(N, 3) = "" And sArr(N, 17) <> "" Then
                    dArr2(K, 4) = sArr(N, 17)
                Else
                dArr2(K, 4) = vbNullString
             End If
            dArr2(K, 5) = sArr(N, 15)
            [COLOR=#0000ff]tong = tong + dArr2(K, 5)[/COLOR]
    End If
Next N
 [COLOR=#0000cd]dArr2(K + 1, 5) = tong
 dArr2(K + 1, 1) = "T" & Chr(63) & "ng"
 dArr2(K + 3, 6) = "Tân Viet, ngay..........thang.............nam 2014"
  dArr2(K + 4, 6) = "Nguoi Viet Don"
   dArr2(K + 5, 6) = "Ky ten, ghi ro ho ten, dong dau neu co"
 If K Then
    .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K, 8).Borders.Value = 1
End If
thoat:
Application.EnableEvents = True[/COLOR]
End With
End Sub
Em cảm ơn bác Let'GâuGâu, khi em dùng Code này và sửa lại cho phù hợp với chương trình của em còn vấn đề nưa là định dạng lại kiểu chữ em chưa làm được mong bác và các thành viên trên diễn đàn giúp là Chữ Tổng và phần tính tổng ở cột 5 cho kiểm chữ là đậm béo được không ạ?
PHP:
Public Sub LOC_BIEU1()
On Error GoTo thoat
Application.EnableEvents = False
Dim sArr(), dArr(1 To 1, 1 To 1), dArr2(), I As Long, j As Long, DK As String, SoTrang As Double, le As Boolean
Dim K As Long, Ong As String, Ba As String, Kem_theo As String, T_Tong As String, Ngay_Thang As String, NguoiVietDon As String
Dim Ky_Ten As String, Nhan_SD As String
With Sheets("DATA")
    sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 44).Value
End With
With Sheets("Bieu_05")
DK = .[J3].Value: Ong = .[AA3].Value: Ba = [AA4].Value: Kem_theo = .[AA2].Value: Nhan_SD = [AA5].Value: T_Tong = [AA6].Value
Ngay_Thang = [AA7].Value: NguoiVietDon = [AA8].Value: Ky_Ten = [AA9].Value
For I = 1 To UBound(sArr, 1)
    If sArr(I, 5) = DK Then
         'Dien thong tin CQL1
        If sArr(I, 26) = 1 Then
                dArr(1, 1) = "(" & Kem_theo & Ong & sArr(I, 2) & ")"
            ElseIf sArr(I, 26) = 2 Then
                dArr(1, 1) = "(" & Kem_theo & Ba & sArr(I, 2) & ")"
            Else
                dArr(1, 1) = vbNullString
        End If
       Exit For
    End If
Next I
ReDim dArr2(1 To UBound(sArr, 1), 1 To 8)
For N = I To UBound(sArr, 1)
    If sArr(N, 5) = DK Then
        K = K + 1
            dArr2(K, 1) = K: dArr2(K, 2) = sArr(N, 13): dArr2(K, 3) = sArr(N, 14)
            If sArr(N, 3) <> "" And sArr(N, 17) <> "" Then
                    dArr2(K, 4) = sArr(N, 17) & ", " & sArr(N, 3)
                ElseIf sArr(N, 3) <> "" And sArr(N, 17) = "" Then
                    dArr2(K, 4) = sArr(N, 3)
                ElseIf sArr(N, 3) = "" And sArr(N, 17) <> "" Then
                    dArr2(K, 4) = sArr(N, 17)
                Else
                dArr2(K, 4) = vbNullString
             End If
            dArr2(K, 5) = sArr(N, 15)
            tong = tong + dArr2(K, 5)
    End If
Next N
dArr2(K + 1, 5) = tong "Định dạng chữ kiểu B"
dArr2(K + 1, 1) = T_Tong "Định dạng chữ kiểu B"
dArr2(K + 2, 7) = Ngay_Thang
dArr2(K + 3, 7) = NguoiVietDon "Định dạng chữ kiểu I nghiêng"dArr2(K + 4, 7) = Ky_Ten
[A7:H65536].ClearContents
[A7:H65536].Borders.LineStyle = xlNone
If K Then
   .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
End If
thoat:
Application.EnableEvents = True
End With
End Sub
Em cảm ơn anh và mọi người nhiều ạ!
 
Upvote 0
bạn nên tập quya macro, và thử làm xem

Mã:
[a60000].end(3).Font.Italic = True ' dong cuoi cung cua cot A
để in đậm
Font.Bold = True
 
Upvote 0
bạn nên tập quya macro, và thử làm xem

Mã:
[a60000].end(3).Font.Italic = True ' dong cuoi cung cua cot A
để in đậm
Font.Bold = True
Vâng em cảm ơn anh, em chỉ biết ứng dụng các Code VBA do mọi người viết cho em, còn về trình độ viết code của em thì không biết gì anh ạ, mong anh thông cảm giúp và hướng dẫn giúp em đưa đoạn code trên vào vị trí nào trong Sub ạ
Em cảm ơn anh!
 
Upvote 0
Vâng em cảm ơn anh, em chỉ biết ứng dụng các Code VBA do mọi người viết cho em, còn về trình độ viết code của em thì không biết gì anh ạ, mong anh thông cảm giúp và hướng dẫn giúp em đưa đoạn code trên vào vị trí nào trong Sub ạ
Em cảm ơn anh!
Mã:
[COLOR=#000000][COLOR=#007700]Public [/COLOR][COLOR=#0000BB]Sub LOC_BIEU1[/COLOR][COLOR=#007700]()
........................
[/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000]If K Then
   .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
[COLOR=#000000][COLOR=#DD0000].[A60000].[/COLOR][/COLOR]end(3).Font.Italic = True[COLOR=#000000][COLOR=#DD0000]
[COLOR=#000000][COLOR=#DD0000].[A60000].[/COLOR][/COLOR]end(3).offset(,7)[/COLOR][/COLOR][/COLOR][/COLOR].Font.Bold = True[COLOR=#000000][COLOR=#DD0000]
End If
[/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000][COLOR=#000000][COLOR=#DD0000]
[/COLOR][/COLOR]
thoat:
Application.EnableEvents = True
End With
End Sub  [/COLOR][/COLOR]




đại khái là vậy, tương như vậy bạn có thể thay font size, hay gì đó, tùy ý
 
Upvote 0
Vâng em cảm ơn anh, em chỉ biết ứng dụng các Code VBA do mọi người viết cho em, còn về trình độ viết code của em thì không biết gì anh ạ, mong anh thông cảm giúp và hướng dẫn giúp em đưa đoạn code trên vào vị trí nào trong Sub ạ
Em cảm ơn anh!
Mã:
[COLOR=#000000][COLOR=#007700]Public [/COLOR][COLOR=#0000BB]Sub LOC_BIEU1[/COLOR][COLOR=#007700]()
........................
[/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000]If K Then
   .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
[COLOR=#000000][COLOR=#DD0000].[A60000].[/COLOR][/COLOR]end(3).Font.Italic = True[COLOR=#000000][COLOR=#DD0000]
[COLOR=#000000][COLOR=#DD0000].[A60000].[/COLOR][/COLOR]end(3).offset(,7)[/COLOR][/COLOR][/COLOR][/COLOR].Font.Bold = True[COLOR=#000000][COLOR=#DD0000]
End If
[/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000][COLOR=#000000][COLOR=#DD0000]
[/COLOR][/COLOR]
thoat:
Application.EnableEvents = True
End With
End Sub  [/COLOR][/COLOR]




đại khái là vậy, tương như vậy bạn có thể thay font size, hay gì đó, tùy ý
Nếu sử dụng Code như thế này thì khi ta chạy cho các số thứ tự khác thì nó không mất đi định dạng cũ anh Let'GâuGâu ạ
Bởi vì em không chạy cho 1 chủ quản lý mà chạy cho nhiều chủ quản lý theo số thứ tự ở cột M sheets"Bieu_05" anh có thể kiểm tra giúp bằng cách là đánh số thứ tự mốn kiểm tra ở cột M vào cell J2 sheets"Bieu_05".
Mong anh giúp đỡ. Chúc anh sức khỏe!
Thanks
 
Upvote 0
Vâng em cảm ơn anh, em chỉ biết ứng dụng các Code VBA do mọi người viết cho em, còn về trình độ viết code của em thì không biết gì anh ạ, mong anh thông cảm giúp và hướng dẫn giúp em đưa đoạn code trên vào vị trí nào trong Sub ạ
Em cảm ơn anh!
Mã:
[COLOR=#000000][COLOR=#007700]Public [/COLOR][COLOR=#0000BB]Sub LOC_BIEU1[/COLOR][COLOR=#007700]()
........................
[/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000]If K Then
   .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
[COLOR=#000000][COLOR=#DD0000].[A60000].[/COLOR][/COLOR]end(3).Font.Italic = True[COLOR=#000000][COLOR=#DD0000]
[COLOR=#000000][COLOR=#DD0000].[A60000].[/COLOR][/COLOR]end(3).offset(,7)[/COLOR][/COLOR][/COLOR][/COLOR].Font.Bold = True[COLOR=#000000][COLOR=#DD0000]
End If
[/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000]thoat:
Application.EnableEvents = True
End With
End Sub  [/COLOR][/COLOR]

đại khái là vậy, tương như vậy bạn có thể thay font size, hay gì đó, tùy ý
Nếu sử dụng Code như thế này thì khi ta chạy cho các số thứ tự khác thì nó không mất đi định dạng cũ anh Let'GâuGâu ạ
Bởi vì em không chạy cho 1 chủ quản lý mà chạy cho nhiều chủ quản lý theo số thứ tự ở cột M sheets"Bieu_05" anh có thể kiểm tra giúp bằng cách là đánh số thứ tự mốn kiểm tra ở cột M vào cell J2 sheets"Bieu_05".
Mong anh giúp đỡ. Chúc anh sức khỏe!
Thanks
 
Upvote 0
Vâng em cảm ơn anh, em chỉ biết ứng dụng các Code VBA do mọi người viết cho em, còn về trình độ viết code của em thì không biết gì anh ạ, mong anh thông cảm giúp và hướng dẫn giúp em đưa đoạn code trên vào vị trí nào trong Sub ạ
Em cảm ơn anh!
Nếu sử dụng Code như thế này thì khi ta chạy cho các số thứ tự khác thì nó không mất đi định dạng cũ anh Let'GâuGâu ạ
Bởi vì em không chạy cho 1 chủ quản lý mà chạy cho nhiều chủ quản lý theo số thứ tự ở cột M sheets"Bieu_05" anh có thể kiểm tra giúp bằng cách là đánh số thứ tự mốn kiểm tra ở cột M vào cell J2 sheets"Bieu_05".
Mong anh giúp đỡ. Chúc anh sức khỏe!
Thanks

thì bạn xóa nó đi, tôi thấy bạn biết cách xóa định dạn mà
Mã:
[COLOR=#000000][A7:H65536].ClearContents
[A7:H65536].Borders.LineStyle = xlNone
[/COLOR]


bạn sửa nó thành như vậy

Mã:
with[/COLOR][COLOR=#000000][COLOR=#DD0000][COLOR=#000000][COLOR=#DD0000][COLOR=#000000] [A7:H65536]
.ClearContents 
.Borders.LineStyle = xlNone[/COLOR] [/COLOR][/COLOR][/COLOR][/COLOR][COLOR=#000000] [/COLOR][COLOR=#000000][COLOR=#DD0000]
[/COLOR][/COLOR].Font.Italic = false[COLOR=#000000][COLOR=#DD0000]
[COLOR=#000000][COLOR=#DD0000][/COLOR][/COLOR][/COLOR][/COLOR].Font.Bold = false
end with
 
Lần chỉnh sửa cuối:
Upvote 0
bạn sửa nó thành như vậy
Mã:
with
Mã:
[COLOR=#000000][COLOR=#DD0000][COLOR=#000000][COLOR=#DD0000][COLOR=#000000] [A7:H65536]
.ClearContents 
.Borders.LineStyle = xlNone[/COLOR] [/COLOR][/COLOR][/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000]
[/COLOR][/COLOR].Font.Italic = false[COLOR=#000000][COLOR=#DD0000]
[/COLOR][/COLOR].Font.Bold = false
end with
Em cảm ơn anh tuy nhiên khi em đưa Code theo hướng dẫn của anh vào thì báo lỗi không chạy được anh có thể kiểm tra giúp em được không ạ
Cảm ơn anh nhiều
Mã:
Public Sub LOC_BIEU1()
............................
 [A7:H65536]
.ClearContents
.Borders.LineStyle = xlNone
.Font.Italic = False
.Font.Bold = False
End With
If K Then
    .[A2:G2].Value = dArr [B]"Dòng này bị báo lỗi"[/B]
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
    .[A60000].End(3).Font.Bold = True
    .[E60000].End(3).Font.Bold = True
    .[G60000].End(3).Offset(, 7).Font.Italic = True
End If
thoat:
Application.EnableEvents = True
End Sub
 

File đính kèm

Upvote 0
Em cảm ơn anh tuy nhiên khi em đưa Code theo hướng dẫn của anh vào thì báo lỗi không chạy được anh có thể kiểm tra giúp em được không ạ
Cảm ơn anh nhiều
Mã:
Public Sub LOC_BIEU1()
............................
 [COLOR=#0000cd] with [A7:H65536][/COLOR]
.ClearContents
.Borders.LineStyle = xlNone
.Font.Italic = False
.Font.Bold = False
[COLOR=#ff0000]End With[/COLOR]
If K Then
    .[A2:G2].Value = dArr [B]"Dòng này bị báo lỗi"[/B]
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
    .[A60000].End(3).Font.Bold = True
    .[E60000].End(3).Font.Bold = True
    .[G60000].End(3).Offset(, 7).Font.Italic = True
End If
[COLOR=#0000ff]End With[/COLOR]
thoat:
Application.EnableEvents = True
End Sub

cái màu đỏ thì bạn có rồi, thêm 2 dòng màu xanh,

 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn anh Let'GâuGâu hai cột đã định dạng được nhưng còn cột G định dạng phần "(Ký và ghi rõ họ tên, đóng dấu nếu có)" kiểu định dạng là .Font.Italic thì chưa định dạng được ạ, mong anh giúp đỡ ạ
Em cảm ơn anh!
 
Upvote 0
Em cảm ơn anh Let'GâuGâu hai cột đã định dạng được nhưng còn cột G định dạng phần "(Ký và ghi rõ họ tên, đóng dấu nếu có)" kiểu định dạng là .Font.Italic thì chưa định dạng được ạ, mong anh giúp đỡ ạ
Em cảm ơn anh!

tôi thấy bạn xài code thứ dữ không à, sao ko tìm hiểu căn bản??!!!
Mã:
If K Then
    .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
    .[A60000].End(3).Font.Bold = True
    .[E60000].End(3).Font.Bold = True
[COLOR=#ff0000]    .[G60000].End(3).Font.Italic = True[/COLOR]
End If
tại vì lúc tôi làm tôi lấy cột A làm mốc nên khi tôi muốn dời nó qua cột G thì tôi phải offset nó đi 7 cột.
còn bạn đã xác định ở cột G rồi thì ofset chi nữa???
 
Upvote 0
tôi thấy bạn xài code thứ dữ không à, sao ko tìm hiểu căn bản??!!!
Mã:
If K Then
    .[A2:G2].Value = dArr
    .[A7].Resize(K + 5, 8).Value = dArr2
    .[A7].Resize(K + 1, 8).Borders.LineStyle = xlContinuous
    .[A60000].End(3).Font.Bold = True
    .[E60000].End(3).Font.Bold = True
[COLOR=#ff0000]    .[G60000].End(3).Font.Italic = True[/COLOR]
End If
tại vì lúc tôi làm tôi lấy cột A làm mốc nên khi tôi muốn dời nó qua cột G thì tôi phải offset nó đi 7 cột.
còn bạn đã xác định ở cột G rồi thì ofset chi nữa???
Vâng em cảm ơn anh. Em đã là được rồi anh ạ theo như hướng dẫn của anh, tại bài em đã đăng lên rồi không hủy được anh ạ. Em xin lỗi anh nhé.
 
Upvote 0

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

Back
Top Bottom