chisinhvnn
Thành viên tiêu biểu

- Tham gia
- 7/3/08
- Bài viết
- 479
- Được thích
- 104
Định dạng file của mình gồm có các kiểu:Sao mấy cái tính tổng mục nhỏ không đúng. Còn định dạng thì mình chưa hiểu (hay là cứ đến mục nhỏ thì định dạng đường liên và chữ đậm nhỉ)
Vậy bạn thử cái này xem saoĐịnh dạng file của mình gồm có các kiểu:
1. Ở cột ĐVT
- đối với đơn vị tính: cái, cây, bụi, đ/bụi, đ/cây, đồng/thuêbao, gốc, suất: định dạng cột khối lượng là kiểu số nguyên (không có dấu thập phân)
- các đơn vị còn lại là dấu thập phân 2 đơnvị, #.###,##
2. Cột STT:
- Đối với dòng trống, định dạng Viền liền theo cột, viền nét đứt theo hàng, các kiểu chữ thường, cỡ chữ13
- Đỡi dòng số >o, định dạng in đậm, viền liền. cỡ chữ 13.
Còn tổng mục nhỏ nó không đúng là do mình xóa dữ liệu nên vậy đó mà.
Sub Dinhdang()
Dim Er As Long, I As Long
Application.ScreenUpdating = False
With Sheet3
Er = .Range("B65535").End(3).Row
.Range("G5", "G" & Er).NumberFormat = "#,##0"
With .Range("A5", "A" & Er).Resize(, 8)
.Font.Bold = False
.Borders.LineStyle = xlContinuous
.Borders(xlInsideHorizontal).Weight = xlHairline
End With
For I = 5 To Er
If .Range("A" & I) <> Empty Then
With .Range("A" & I).Resize(, 8)
.Borders(xlEdgeTop).Weight = xlThin
.Font.Bold = True
End With
.Range("G" & I).NumberFormat = "#,##0.00"
End If
Next I
End With
Application.ScreenUpdating = True
End Sub
Sub Dinhdang1()
Dim Er As Long, Rng As Range
Application.ScreenUpdating = False
With Sheet3
Er = .Range("B65535").End(3).Row
.Range("G5", "G" & Er).NumberFormat = "#,##0"
With .Range("A5", "A" & Er).Resize(, 8)
.Font.Bold = False
.Borders.LineStyle = xlContinuous
.Borders(xlInsideHorizontal).Weight = xlHairline
End With
Set Rng = .Range("A5", "A" & Er).SpecialCells(xlCellTypeConstants, 23)
For Each Cll In Rng
With Cll.Resize(, 8)
.Font.Bold = True
.Borders(xlEdgeTop).Weight = xlThin
End With
Cll.Offset(, 6).NumberFormat = "#,##0.00"
Next
End With
Application.ScreenUpdating = True
End Sub
Sao bạn không dùng Conditional Formatting cho đơn giản.Mình có ghi macro để định dạng dữ liệu, nhưng có điều kiện dữ liệu bằng tiếng việt nên VBA không hiểu. Nhờ GPE hoàn thiện giúp mình với
Hình như chỉ Resize được đối với Range có 1 Area. Trường hợp này tôi thường làm thế này:Nhân đây em có vấn đề mong các Anh chị giải thích hộ
Ví dụ em chọn vùng Set Rng = .Range("A5", "A" & Er).SpecialCells(xlCellTypeConstants, 23) sau đó lấy sang 8 cột như thế này Set Rng = .Range("A5", "A" & Er).SpecialCells(xlCellTypeConstants, 23).Resize(, 8) lại không được
Set Rng = Intersect(.Range("A5:A" & Er).SpecialCells(xlCellTypeConstants, 23).EntireRow, .Range("A5:H" & Er))
Cám ơn Thầy nhiều. Phương thức này sẽ bỏ được vòng For tốc tộ Code nhanh hơn thầy ạSao bạn không dùng Conditional Formatting cho đơn giản.
Hình như chỉ Resize được đối với Range có 1 Area. Trường hợp này tôi thường làm thế này:
PHP:Set Rng = Intersect(.Range("A5:A" & Er).SpecialCells(xlCellTypeConstants, 23).EntireRow, .Range("A5:H" & Er))
Cảm ơn cậu, nhưng hình như cậu chưa hiểu ý của mình. Như mình nói bài bài #3, mình muốn định dạng ở cột C (cột đơn vị tính), nếu đơn vị tính nó nằm trong các đơn vị này ( cái, cây, bụi, đ/bụi, đ/cây, đồng/thuêbao, gốc, suất) thì cột khối lượng định dạng tương ứng là số nguyên không có dấu thập phân)Vậy bạn thử cái này xem sao
Mã:Sub Dinhdang() Dim Er As Long, I As Long Application.ScreenUpdating = False With Sheet3 Er = .Range("B65535").End(3).Row .Range("G5", "G" & Er).NumberFormat = "#,##0" With .Range("A5", "A" & Er).Resize(, 8) .Font.Bold = False .Borders.LineStyle = xlContinuous .Borders(xlInsideHorizontal).Weight = xlHairline End With For I = 5 To Er If .Range("A" & I) <> Empty Then With .Range("A" & I).Resize(, 8) .Borders(xlEdgeTop).Weight = xlThin .Font.Bold = True End With .Range("G" & I).NumberFormat = "#,##0.00" End If Next I End With Application.ScreenUpdating = True End Sub
Sao bạn không dùng Conditional Formatting cho đơn giản.
1. Vì em đang tìm hiểu vba tý. Anh viêt đoạn code định dạng bài trên giúp em với. EM dùng ghi macro nhưng tiếng việt nó khỏng hiểu nên chịu àh.
2. Em cũng chưa nghĩ đến cách anh nói.
Vậy bạn đưa cái Array( "cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t") như thế này vào AutoFilter đượcCảm ơn cậu, nhưng hình như cậu chưa hiểu ý của mình. Như mình nói bài bài #3, mình muốn định dạng ở cột C (cột đơn vị tính), nếu đơn vị tính nó nằm trong các đơn vị này ( cái, cây, bụi, đ/bụi, đ/cây, đồng/thuêbao, gốc, suất) thì cột khối lượng định dạng tương ứng là số nguyên không có dấu thập phân)
Còn bài viết trên của cậu mới làm đúng ý 2 bài #3 àh. Nhờ cậu và GPE xem giúp
Không được bạn ơiVậy bạn đưa cái Array( "cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t") như thế này vào AutoFilter được
Mình thay lại Code của bạn thấy chạy được mà:Không được bạn ơi
Sub dinhdang()
'
' Macro8 Macro
'
Dim lr As Long
lr = Sheet3.Cells(Rows.Count, "b").End(xlUp).Row
'lr = Sheet3.Cells(Rows.Count, "B").End(xlUp).Row
Sheet3.Range("D7:D" & lr).End(xlUp).AutoFilter Field:=3, Criteria1:=Array( _
"cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t"), Operator:=xlFilterValues
Sheet3.Range("D7:D" & lr).End(xlUp).Select
Selection.NumberFormat = "#,##0.00"
Sheet3.Range("D7:D" & lr).End(xlUp).AutoFilter Field:=3, Criteria1:=Array( _
"cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t"), Operator:=xlFilterValues
Sheet3.Range("D7:D" & lr).End(xlUp).Select
Selection.NumberFormat = "#,##0"
End Sub
Chịu bạn ơi. nó chạy nhưng lại không đúngMình thay lại Code của bạn thấy chạy được mà:
Mã:Sub dinhdang() ' ' Macro8 Macro ' Dim lr As Long lr = Sheet3.Cells(Rows.Count, "b").End(xlUp).Row 'lr = Sheet3.Cells(Rows.Count, "B").End(xlUp).Row Sheet3.Range("D7:D" & lr).End(xlUp).AutoFilter Field:=3, Criteria1:=Array( _ "cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t"), Operator:=xlFilterValues Sheet3.Range("D7:D" & lr).End(xlUp).Select Selection.NumberFormat = "#,##0.00" Sheet3.Range("D7:D" & lr).End(xlUp).AutoFilter Field:=3, Criteria1:=Array( _ "cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t"), Operator:=xlFilterValues Sheet3.Range("D7:D" & lr).End(xlUp).Select Selection.NumberFormat = "#,##0" End Sub
Pacific, GPE xem giúp mình tý, code nó vẫn chạy, nhựng định dạng lại không đúng àhMình thay lại Code của bạn thấy chạy được mà:
Mã:Sub dinhdang() ' ' Macro8 Macro ' Dim lr As Long lr = Sheet3.Cells(Rows.Count, "b").End(xlUp).Row 'lr = Sheet3.Cells(Rows.Count, "B").End(xlUp).Row Sheet3.Range("D7:D" & lr).End(xlUp).AutoFilter Field:=3, Criteria1:=Array( _ "cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t"), Operator:=xlFilterValues Sheet3.Range("D7:D" & lr).End(xlUp).Select Selection.NumberFormat = "#,##0.00" Sheet3.Range("D7:D" & lr).End(xlUp).AutoFilter Field:=3, Criteria1:=Array( _ "cái", "cây", "b?i", "ð/b?i", "ð/cây", "ð?ng/thuêbao", "g?c, su?t"), Operator:=xlFilterValues Sheet3.Range("D7:D" & lr).End(xlUp).Select Selection.NumberFormat = "#,##0" End Sub
tại sao lại chịu, bỏ ăn bỏ ngủ cũng nên viết tiếpEm chựu thôi. Cái này em không làm được rồi
Em không nghĩ được cách nào anh ạ. Anh ra tay làm giúp anh ấy đi. (mà anh ấy định dạng cột số lượng mà mấy bài trước em lại đị định dạng cột thành tiềntại sao lại chịu, bỏ ăn bỏ ngủ cũng nên viết tiếp
các dấu tiếng Việt code VBA không hổ trợ, bạn dùng hàm Chrw(mã) để thế vào chổ các dấu ?
file mình lấy trên diễn đàn
Bạn dùng hàm Univba này cho nhanhEm không nghĩ được cách nào anh ạ. Anh ra tay làm giúp anh ấy đi. (mà anh ấy định dạng cột số lượng mà mấy bài trước em lại đị định dạng cột thành tiềnhì hì...)