Nhờ hỗ trợ sửa code và làm gọn code! (1 người xem)

Liên hệ QC

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

babyheomoi

Thành viên thường trực
Tham gia
22/9/13
Bài viết
395
Được thích
91
Em có 1 file dữ liệu, mày mò theo kiểu record marco đồn thời với chút kiến thức ít ỏi VBA! tuy nhiên, e sửa code thì nó lại debug!!
Em gửi file và code lên cho mọi nguồi tham khảo và sửa hộ em! Đồng thồi có các cách nào giúp em làm gọn code!
Yeu cầu:
1. Copy all dữ liệu từ data sang sheet kế bền
2. Loc cột E chỉ lấy "BUITHIXUAN" và cột O không lấy "A"
3. Hide các cột không cần thiết đi, chỉ để lại các cột E, F, H, N, O, R, AJ, BB, BD, và BI

Va đây là code e record và sửa lại tí
Mã:
Sub Locdata()'
' Locdata Macro
'
    
    Range("A1:CI5304").Select
    Range("BX5280").Activate
    Selection.Copy
    Sheets("qua han").Select
    Range("A1").Select
    ActiveSheet.Buttons.Add(62.4, 16.8, 110.4, 0).Select
    ActiveSheet.Paste
    Range("$A$1:$CI$10000").AutoFilter Field:=5, Criteria1:= _
        "BUITXUAN"
    Range("$A$1:$CI$10000").AutoFilter Field:=15, Criteria1:=Array( _
        "B", "C", "D", "E", "Blank"), Operator:=xlFilterValues
    Range("A1:CI10000").Copy
    Columns("B:D").ColumnWidth = 6.09
    Columns("E:E").ColumnWidth = 15
    Columns("F:F").ColumnWidth = 25.55
    Columns("I:I").ColumnWidth = 18.55
    Columns("J:M").EntireColumn.Hidden = True
    Columns("Q:AA").EntireColumn.Hidden = True
    Columns("AB:BA").Select
    Range("BA1").Activate
    Selection.EntireColumn.Hidden = True
    Columns("AK:BA").Select
    Range("BA1").Activate
    Selection.EntireColumn.Hidden = True
    Columns("AB:AI").Select
    Selection.EntireColumn.Hidden = True
    Columns("BK:CI").EntireColumn.Hidden = True
    Columns("A:E").EntireColumn.Hidden = True
    Columns("I:I").ColumnWidth = 15.73
    ActiveWindow.FreezePanes = True
    Columns("N:N").ColumnWidth = 4.55
    Columns("O:O").ColumnWidth = 4.18
    Columns("P:P").ColumnWidth = 5.73
    Columns("BE:BG").EntireColumn.Hidden = True
    Columns("BJ:BJ").EntireColumn.Hidden = True
    Range("BI2").Select
    ActiveWindow.ScrollColumn = 36
    Range("BC3").Select
    Columns("AJ:AJ").ColumnWidth = 15
    Columns("AJ:AJ").ColumnWidth = 14.45
    Columns("BB:BB").ColumnWidth = 12.45
    Columns("BC:BC").ColumnWidth = 12.45
    Columns("BD:BD").ColumnWidth = 11.82
    Columns("BH:BH").ColumnWidth = 11.64
    Columns("BB:BD").NumberFormat = "#,##0"
    Columns("BH:BH").EntireColumn.Hidden = True
    Columns("BC:BC").EntireColumn.Hidden = True
Range("A1").Select


End Sub
Tuy nhiên, code bị debug ở dòng thứ 3
Sheets("qua han").Select
Range("A1").Select
Em chưa biết sửa sai cho nó chạy! Mọi người giúp em nhé!
Còn nữa, đây là file e làm!
https://drive.google.com/file/d/0B_nKNXGAOSxaQklZMnVYQVJUMFk/view?usp=sharing

Với yếu cầu như trên, e biết sẽ có nhiều cách code rất ngắn và nhanh!
Nên mong nhận được góp ý của mọi người!
Thanks
 
Không đọc được file, thật tiếc!

Bạn có thể đưa file giả lập lên diễn đàn?
 
Upvote 0
Chưa xem file nhưng có lẽ cần sửa thành sheets("qua han").activate. Ở dưới cần sửa thành "BUITHIXUAN" không phải "BUIITXUAN".
 
Upvote 0
Em có 1 file dữ liệu, mày mò theo kiểu record marco đồn thời với chút kiến thức ít ỏi VBA! tuy nhiên, e sửa code thì nó lại debug!!
Em gửi file và code lên cho mọi nguồi tham khảo và sửa hộ em! Đồng thồi có các cách nào giúp em làm gọn code!
Yeu cầu:
1. Copy all dữ liệu từ data sang sheet kế bền
2. Loc cột E chỉ lấy "BUITHIXUAN" và cột O không lấy "A"
3. Hide các cột không cần thiết đi, chỉ để lại các cột E, F, H, N, O, R, AJ, BB, BD, và BI

Va đây là code e record và sửa lại tí
Mã:
Sub Locdata()'
' Locdata Macro
'
    
    Range("A1:CI5304").Select
    Range("BX5280").Activate
    Selection.Copy
    Sheets("qua han").Select
    Range("A1").Select
    ActiveSheet.Buttons.Add(62.4, 16.8, 110.4, 0).Select
    ActiveSheet.Paste
    Range("$A$1:$CI$10000").AutoFilter Field:=5, Criteria1:= _
        "BUITXUAN"
    Range("$A$1:$CI$10000").AutoFilter Field:=15, Criteria1:=Array( _
        "B", "C", "D", "E", "Blank"), Operator:=xlFilterValues
    Range("A1:CI10000").Copy
    Columns("B:D").ColumnWidth = 6.09
    Columns("E:E").ColumnWidth = 15
    Columns("F:F").ColumnWidth = 25.55
    Columns("I:I").ColumnWidth = 18.55
    Columns("J:M").EntireColumn.Hidden = True
    Columns("Q:AA").EntireColumn.Hidden = True
    Columns("AB:BA").Select
    Range("BA1").Activate
    Selection.EntireColumn.Hidden = True
    Columns("AK:BA").Select
    Range("BA1").Activate
    Selection.EntireColumn.Hidden = True
    Columns("AB:AI").Select
    Selection.EntireColumn.Hidden = True
    Columns("BK:CI").EntireColumn.Hidden = True
    Columns("A:E").EntireColumn.Hidden = True
    Columns("I:I").ColumnWidth = 15.73
    ActiveWindow.FreezePanes = True
    Columns("N:N").ColumnWidth = 4.55
    Columns("O:O").ColumnWidth = 4.18
    Columns("P:P").ColumnWidth = 5.73
    Columns("BE:BG").EntireColumn.Hidden = True
    Columns("BJ:BJ").EntireColumn.Hidden = True
    Range("BI2").Select
    ActiveWindow.ScrollColumn = 36
    Range("BC3").Select
    Columns("AJ:AJ").ColumnWidth = 15
    Columns("AJ:AJ").ColumnWidth = 14.45
    Columns("BB:BB").ColumnWidth = 12.45
    Columns("BC:BC").ColumnWidth = 12.45
    Columns("BD:BD").ColumnWidth = 11.82
    Columns("BH:BH").ColumnWidth = 11.64
    Columns("BB:BD").NumberFormat = "#,##0"
    Columns("BH:BH").EntireColumn.Hidden = True
    Columns("BC:BC").EntireColumn.Hidden = True
Range("A1").Select


End Sub
Tuy nhiên, code bị debug ở dòng thứ 3

Em chưa biết sửa sai cho nó chạy! Mọi người giúp em nhé!
Còn nữa, đây là file e làm!
https://drive.google.com/file/d/0B_nKNXGAOSxaQklZMnVYQVJUMFk/view?usp=sharing

Với yếu cầu như trên, e biết sẽ có nhiều cách code rất ngắn và nhanh!
Nên mong nhận được góp ý của mọi người!
Thanks
- Hide các cột không cần thiết đi, chỉ để lại các cột E, F, H, N, O, R, AJ, BB, BD, và BI
Sao không là chỉ lấy các cột E, F, H, N, O, R, AJ, BB, BD, và BI
- Dùng Advanced Filter, điều kiện lọc đặt ở A1:B2, các cột cần lọc nhập vào dòng 4, như trong hình.
Ad_Filter.jpg
Code chỉ như vầy:
PHP:
Sub GPE()
    Sheets("data").Range(Sheets("data").[A1], Sheets("data").[A65536].End(xlUp)).Resize(, 100).AdvancedFilter _
        Action:=xlFilterCopy, CriteriaRange:=Range("A1:B2"), CopyToRange:=Range("A4:I4")
End Sub
File đính kèm tôi đã xóa dữ liệu sheet "data" chỉ còn khoảng 20 dòng cho nhẹ file. Bạn copy lại dữ liệu hơn 5.000 dòng của bạn xem sao.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bác Bate ơi. sao file bác lại lưu định dạng xlsxb vậy? lưu cái này cũng marco dc hả?
Nó có nhẹ hơn Xlsm ko??
Em đang nghiên cứu file bác làm mà gà wa nên chưa hỉu lăm!Uả
 
Upvote 0
Sub GPE()
Sheets("data").Range(Sheets("data").[A1], Sheets("data").[A65536].End(xlUp)).Resize(, 100).AdvancedFilter _
Action
:=xlFilterCopy, CriteriaRange:=Range("A1:B2"), CopyToRange:=Range("A4:I4")
End Sub

Bác bate ơi, em tập làm giống bác nhưng nó bảo debug là "the extract range is missing or ilegal filed name"
Bác có thể nói rõ ý nghĩa từng dòng lệnh xem e sai chổ nào ko?
Thanks
 
Upvote 0
Em tập làm thì bị 2 lỗi sau:
1. Advanced filter chỉ thực hiện ở active sheet
2. Nếu làm advan fiter ở sheet data thì no hiện all các cột chứ ko phải các cột e định chọn, fai hide từng cái thủ công!
 
Upvote 0
Em tập làm thì bị 2 lỗi sau:
1. Advanced filter chỉ thực hiện ở active sheet
2. Nếu làm advan fiter ở sheet data thì no hiện all các cột chứ ko phải các cột e định chọn, fai hide từng cái thủ công!
Mã:
 [COLOR=#ff0000]Sheet1.Range("A1:CI65536").AdvancedFilter xlFilterCopy[/COLOR], [COLOR=#0000ff]Sheet2.Range("A1:B2")[/COLOR], Sheet2.Range("A4:I4")
Sao khi chạy macro xong vào macro sửa lại điều kiện như sau:
- Sheet1.Range("A1:CI65536") :vùng CSDL cần lọc
- Sheet2.Range("A1:B2") :vùng điều kiện lọc
- Sheet2.Range("A4:I4") :chọn nơi copy kết quả
 
Upvote 0
E đã làm được, thanks mọi người đã giúp đỡ!

Tuy nhiên mấy bữa nay e có vấn đề mà chưa mò ra!
Đó là e format nhiều columns!, dạng :
Mã:
Columns("A:A").numberformat ="%")
cloumns )AI:Ai).numberformat ="%
........
Nhiều columns định dạng như vậy!
Em nghĩ ra cách làm gọn code như sau:
Mã:
Columns("A:A","I;I",.....).numberformat
Hoặc
Mã:
Columns ("A:A" & "I:I" & ...........)>numberformat....
Tuy nhiên đều không được!
Mọi người ai biết code nối columns với nhau ko?
E định dùng chuyển qua dùng range nhưng vẫn chưa biết dùng thế nào!
Mọi người tư vấn giúp em nha!
Thanks
 
Upvote 0
Dùng union là được, ví dụ dùng 1 trong các lệnh sau

PHP:
Union(Columns("A:A"), Columns("I:I")).NumberFormat = "0.00%"

Union(Range("A:A"), Range("I:I")).NumberFormat = "0.00%"

Union(Range("A:A"), Columns("I:I")).NumberFormat = "0.00%"

Nhưng nên cụ thể vùng sử dụng dữ liệu cho nó chuẩn và đơn giản hơn:

PHP:
Union(Range("A2:A101"), Range("I2:I101")).NumberFormat = "0.00%"
 
Upvote 0
E đã làm được, thanks mọi người đã giúp đỡ!

Tuy nhiên mấy bữa nay e có vấn đề mà chưa mò ra!
Đó là e format nhiều columns!, dạng :
Mã:
Columns("A:A").numberformat ="%")
cloumns )AI:Ai).numberformat ="%
........
Nhiều columns định dạng như vậy!
Em nghĩ ra cách làm gọn code như sau:
Mã:
Columns("A:A","I;I",.....).numberformat
Hoặc
Mã:
Columns ("A:A" & "I:I" & ...........)>numberformat....
Tuy nhiên đều không được!
Mọi người ai biết code nối columns với nhau ko?
E định dùng chuyển qua dùng range nhưng vẫn chưa biết dùng thế nào!
Mọi người tư vấn giúp em nha!
Thanks
đừng Format nguyên cột như vậy không nên ....nếu nhiều cột file nó sẽ To Trà Bá Luôn
tham khảo cách sau xài đến đâu thì Format tới đó thôi

PHP:
Public Sub Format_XYZ()
With Range("B7", [B65536].End(3))
    .Offset(, 1).NumberFormat = "#,##0"
    .Offset(, 2).NumberFormat = "0.00%"
    .Offset(, 3).NumberFormat = "#,##0"
    .Offset(, 7).NumberFormat = "dd/mm/yyyy"
   .Offset(, 8).NumberFormat = "hh:mm:ss"
End With
End Sub
 
Upvote 0
đừng Format nguyên cột như vậy không nên ....nếu nhiều cột file nó sẽ To Trà Bá Luôn
tham khảo cách sau xài đến đâu thì Format tới đó thôi

PHP:
Public Sub Format_XYZ()
With Range("B7", [B65536].End(3))
    .Offset(, 1).NumberFormat = "#,##0"
    .Offset(, 2).NumberFormat = "0.00%"
    .Offset(, 3).NumberFormat = "#,##0"
    .Offset(, 7).NumberFormat = "dd/mm/yyyy"
   .Offset(, 8).NumberFormat = "hh:mm:ss"
End With
End Sub
cho em hỏi tí về ý nghĩa code nhé!
Mã:
Range("B7", [B65536].End(3))
Cai1 này có ý nghĩa là chọn từ B7 đến hết bảng luôn phải ko??
Mã:
.Offset(, 1).NumberFormat = "#,##0"
Code này có phải là format cột thứ 1 kể từ cột B không (nghĩa là cột C??)
 
Upvote 0
cho em hỏi tí về ý nghĩa code nhé!
Mã:
Range("B7", [B65536].End(3))
Cai1 này có ý nghĩa là chọn từ B7 đến hết bảng luôn phải ko??
Mã:
.Offset(, 1).NumberFormat = "#,##0"
Code này có phải là format cột thứ 1 kể từ cột B không (nghĩa là cột C??)
Bạn tìm đọc trên GPE thuộc tính của Range, Offset, Resize.... thì Bạn sẽ hiểu hơn về mấy câu đó nha....Giải thích mình kém lắm toàn học mò thôi nên thuật ngữ chuyên nghành ko rành lắm giải thích kiểu : Ngô, khoai, củ, quả ... ngại chết đi mất --=0--=0--=0
 
Upvote 0
cho em hỏi tí về ý nghĩa code nhé!
Mã:
Range("B7", [B65536].End(3))
Cai1 này có ý nghĩa là chọn từ B7 đến hết bảng luôn phải ko??
Mã:
.Offset(, 1).NumberFormat = "#,##0"
Code này có phải là format cột thứ 1 kể từ cột B không (nghĩa là cột C??)
bạn là người mới học, cho nên bạn phải học cái đầy đủ nhất để biết, sau này có nội công rồi muốn cắt xén hay gì gì đó thì tùy
các cách tham chiếu đến 1 range
Range("A1") tham chiếu tới ô có địa chỉ là A1
Range("A1:C1") tham chiếu tới dãy ô có địa chỉ là A1:C1
có khi người ta thích như thế này nữa
Range(cells(1,1), cells(1,3)) tham chiếu tới dãy ô có địa chỉ là A1:C1
chú thích:
cells(1,1) là địa chỉ ô A1
Cells(1,3) là ô C1
hoặc
Range("A1","C1")

người ta có thể ghi như thế này nữa
[A1:C1]tham chiếu tới dãy ô có địa chỉ là A1:C1
phương thức end hiểu nôn na là dùng để tìm dòng cuối hay cột cuối chứa dữ liệu
End(xlup),End(xldown),.. tương đương với bạn nhấn CTRL+các phím mũi tên

thường người ta tìm dòng cuối cột A có dữ liệu người ta ghi đầy đủ
Range("A65000").end(xlup).row // kết quả này trả về số dòng cuối cùng nhất (có dữ liệu) theo số dòng trong excel

suy ra vấn đề của bạn có thể viết đầy đủ như thế này cho dễ hiểu
Range("B7", range("B65536").End(xlup).row)
 
Upvote 0
hic, mấy bác ơi, xem giùm em code này bị sai chỗ nào ko? mà em run thì nó báo
"Compile eroror
User defined typed not defined"
Mã:
Sub Formatdata()
' Format Macro
 
 
    Union(Range("G3", [G65536].End(xlUp)), Range("I3", [I65536].End(xlUp)), Range("S3", [S65536].End(xlUp)), Range("U3", [U65536].End(xlUp)), Range("AO3", [AO65536].End(xlUp)), Range("BJ3", [BL65536].End(xlUp))).NumberFormat = "dd/mm/yyyy"
    Range("BO3", [BP65536].End(xlUp)).NumberFormat = "dd/mm/yy"
    Union(Range("H3", [H65536].End(xlUp)), Range("M3", [M65536].End(xlUp)), Range("T3", [T65536].End(xlUp)), Range("Z3", [Z65536].End(xlUp)), Range("BM3", [BM65536].End(xlUp))).NumberFormat = "@"
 
    Dim r1 As Range, r2 As Range, r3 As Ranger, r4 As Range, r5 As Range, r6 As Range, r7 As Range, r8 As Range, r9 As Range, all As Range
    Sheets("Chung Cu").Active
    Set r1 = Range("BF3", [BF65536].End(xlUp))
        r2 = Range("AI3", [AJ65536].End(xlUp))
        r3 = Range("AP3", [AR65536].End(xlUp))
        r4 = Range("AT3", [AT65536].End(xlUp))
        r5 = Range("AW3", [AY65536].End(xlUp))
        r6 = Range("BH3", [BI65536].End(xlUp))
        r7 = Range("BQ3", [BT65536].End(xlUp))
        r8 = Range("BV3", [BV65536].End(xlUp))
        r9 = Range("CA3", [CD65536].End(xlUp))
        all = Union(r1, r2, r3, r4, r5, r6, r7, r8, r9).NumberFormat = "###0"
    Range("AF3", [AF65536].End(xlUp)).NumberFormat = "#,##0.00"
    Range("AZ3", [BB65536].End(xlUp)).NumberFormat = "0%"
    Range("BM3", [BM65536].End(xlUp)).NumberFormat = "0"
    ActiveWorkbook.Save
End Sub
Nó bị tô vàng ngay dòng sub luôn!
Em không tìm ra lỗi!
hic
 
Upvote 0
nhìn là thấy sợ rồi, không biết lần chỗ nào nữa, nên không tham gia nữa
 
Upvote 0
hic, mấy bác ơi, xem giùm em code này bị sai chỗ nào ko? mà em run thì nó báo
"Compile eroror
User defined typed not defined"
Mã:
Sub Formatdata()
' Format Macro
 
 
    Union(Range("G3", [G65536].End(xlUp)), Range("I3", [I65536].End(xlUp)), Range("S3", [S65536].End(xlUp)), Range("U3", [U65536].End(xlUp)), Range("AO3", [AO65536].End(xlUp)), Range("BJ3", [BL65536].End(xlUp))).NumberFormat = "dd/mm/yyyy"
    Range("BO3", [BP65536].End(xlUp)).NumberFormat = "dd/mm/yy"
    Union(Range("H3", [H65536].End(xlUp)), Range("M3", [M65536].End(xlUp)), Range("T3", [T65536].End(xlUp)), Range("Z3", [Z65536].End(xlUp)), Range("BM3", [BM65536].End(xlUp))).NumberFormat = "@"
 
    Dim r1 As Range, r2 As Range, r3 As Ranger, r4 As Range, r5 As Range, r6 As Range, r7 As Range, r8 As Range, r9 As Range, all As Range
    Sheets("Chung Cu").Active
    Set r1 = Range("BF3", [BF65536].End(xlUp))
        r2 = Range("AI3", [AJ65536].End(xlUp))
        r3 = Range("AP3", [AR65536].End(xlUp))
        r4 = Range("AT3", [AT65536].End(xlUp))
        r5 = Range("AW3", [AY65536].End(xlUp))
        r6 = Range("BH3", [BI65536].End(xlUp))
        r7 = Range("BQ3", [BT65536].End(xlUp))
        r8 = Range("BV3", [BV65536].End(xlUp))
        r9 = Range("CA3", [CD65536].End(xlUp))
        all = Union(r1, r2, r3, r4, r5, r6, r7, r8, r9).NumberFormat = "###0"
    Range("AF3", [AF65536].End(xlUp)).NumberFormat = "#,##0.00"
    Range("AZ3", [BB65536].End(xlUp)).NumberFormat = "0%"
    Range("BM3", [BM65536].End(xlUp)).NumberFormat = "0"
    ActiveWorkbook.Save
End Sub
Nó bị tô vàng ngay dòng sub luôn!
Em không tìm ra lỗi!
hic
Mục đích của bạn chỉ là Format thôi thì xài cái có sẳn của Bác Bill đi ...........Cho Khỏe

Làm gì mà viết Code nhìn thấy chạy mất dép....--=0--=0 code đó không lỗi mới lạ....

Set gì ghê vậy trời
 
Lần chỉnh sửa cuối:
Upvote 0
Hic bởi vì file du liệu e lấy về nó toàn chua format. Và e phải luôn format lai.hic nên e mới làm marco. Xong bập bẹ dc vba e làm gon code.khi đang học hỏi 1it dc union thì em mở help ra thấy cách set r1 r2 nên test thu!
hic h loi ko biet sua sao lun
 
Upvote 0
Hic bởi vì file du liệu e lấy về nó toàn chua format. Và e phải luôn format lai.hic nên e mới làm marco. Xong bập bẹ dc vba e làm gon code.khi đang học hỏi 1it dc union thì em mở help ra thấy cách set r1 r2 nên test thu!
hic h loi ko biet sua sao lun
Bạn viết chữ lại không có dấu nữa như vậy là bài bị phạm quy đó

Đọc chữ không dấu lại còn viết tắt nữa ....lu xu bu như code của Bạn Vậy ...

Đọc thôi mà mệt chết đi mất......Xin chạy thôi phà con ơi ....--=0--=0--=0
 
Upvote 0
hic, mấy bác ơi, xem giùm em code này bị sai chỗ nào ko? mà em run thì nó báo
"Compile eroror
User defined typed not defined"
Mã:
Sub Formatdata()
' Format Macro
 
 
    Union(Range("G3", [G65536].End(xlUp)), Range("I3", [I65536].End(xlUp)), Range("S3", [S65536].End(xlUp)), Range("U3", [U65536].End(xlUp)), Range("AO3", [AO65536].End(xlUp)), Range("BJ3", [BL65536].End(xlUp))).NumberFormat = "dd/mm/yyyy"
    Range("BO3", [BP65536].End(xlUp)).NumberFormat = "dd/mm/yy"
    Union(Range("H3", [H65536].End(xlUp)), Range("M3", [M65536].End(xlUp)), Range("T3", [T65536].End(xlUp)), Range("Z3", [Z65536].End(xlUp)), Range("BM3", [BM65536].End(xlUp))).NumberFormat = "@"
 
    Dim r1 As Range, r2 As Range, r3 As Ranger, r4 As Range, r5 As Range, r6 As Range, r7 As Range, r8 As Range, r9 As Range, all As Range
    Sheets("Chung Cu").Active
    Set r1 = Range("BF3", [BF65536].End(xlUp))
        r2 = Range("AI3", [AJ65536].End(xlUp))
        r3 = Range("AP3", [AR65536].End(xlUp))
        r4 = Range("AT3", [AT65536].End(xlUp))
        r5 = Range("AW3", [AY65536].End(xlUp))
        r6 = Range("BH3", [BI65536].End(xlUp))
        r7 = Range("BQ3", [BT65536].End(xlUp))
        r8 = Range("BV3", [BV65536].End(xlUp))
        r9 = Range("CA3", [CD65536].End(xlUp))
        all = Union(r1, r2, r3, r4, r5, r6, r7, r8, r9).NumberFormat = "###0"
    Range("AF3", [AF65536].End(xlUp)).NumberFormat = "#,##0.00"
    Range("AZ3", [BB65536].End(xlUp)).NumberFormat = "0%"
    Range("BM3", [BM65536].End(xlUp)).NumberFormat = "0"
    ActiveWorkbook.Save
End Sub
Nó bị tô vàng ngay dòng sub luôn!
Em không tìm ra lỗi!
hic

Làm mẫu cho bạn 2 cái dòng Union đầu. Bạn tự nghiên cứu thêm nhá.

PHP:
Sub Formatdata()
Dim Arr1(), Arr2(), i As Long
Arr1 = Array(7, 9, 19, 41, 62)
Arr2 = Array(8, 13, 20, 26, 65)
For i = LBound(Arr1) To UBound(Arr1)
   Range(Cells(3, Arr1(i)), Cells(65536, Arr1(i))).NumberFormat = "dd/mm/yyyy"
Next
For i = LBound(Arr2) To UBound(Arr2)
   Range(Cells(3, Arr2(i)), Cells(65536, Arr2(i))).NumberFormat = "@"
Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Sửa lại chút xíu nha, quên thêm cái end(3)
PHP:
Sub Formatdata()
Dim Arr1(), Arr2(), i As Long
Arr1 = Array(7, 9, 19, 41, 62)
Arr2 = Array(8, 13, 20, 26, 65)
For i = LBound(Arr1) To UBound(Arr1)
   Range(Cells(3, Arr1(i)), Cells(65536, Arr1(i)).End(3)).NumberFormat = "dd/mm/yyyy"
Next
For i = LBound(Arr2) To UBound(Arr2)
   Range(Cells(3, Arr2(i)), Cells(65536, Arr2(i)).End(3)).NumberFormat = "@"
Next
End Sub
 
Upvote 0
hic, mấy bác ơi, xem giùm em code này bị sai chỗ nào ko? mà em run thì nó báo
"Compile eroror
User defined typed not defined"
Mã:
Sub Formatdata()
' Format Macro
 
 
    Union(Range("G3", [G65536].End(xlUp)), Range("I3", [I65536].End(xlUp)), Range("S3", [S65536].End(xlUp)), Range("U3", [U65536].End(xlUp)), Range("AO3", [AO65536].End(xlUp)), Range("BJ3", [BL65536].End(xlUp))).NumberFormat = "dd/mm/yyyy"
    Range("BO3", [BP65536].End(xlUp)).NumberFormat = "dd/mm/yy"
    Union(Range("H3", [H65536].End(xlUp)), Range("M3", [M65536].End(xlUp)), Range("T3", [T65536].End(xlUp)), Range("Z3", [Z65536].End(xlUp)), Range("BM3", [BM65536].End(xlUp))).NumberFormat = "@"
 
    Dim r1 As Range, r2 As Range, r3 As Ranger, r4 As Range, r5 As Range, r6 As Range, r7 As Range, r8 As Range, r9 As Range, all As Range
    Sheets("Chung Cu").Active
    Set r1 = Range("BF3", [BF65536].End(xlUp))
        r2 = Range("AI3", [AJ65536].End(xlUp))
        r3 = Range("AP3", [AR65536].End(xlUp))
        r4 = Range("AT3", [AT65536].End(xlUp))
        r5 = Range("AW3", [AY65536].End(xlUp))
        r6 = Range("BH3", [BI65536].End(xlUp))
        r7 = Range("BQ3", [BT65536].End(xlUp))
        r8 = Range("BV3", [BV65536].End(xlUp))
        r9 = Range("CA3", [CD65536].End(xlUp))
        all = Union(r1, r2, r3, r4, r5, r6, r7, r8, r9).NumberFormat = "###0"
    Range("AF3", [AF65536].End(xlUp)).NumberFormat = "#,##0.00"
    Range("AZ3", [BB65536].End(xlUp)).NumberFormat = "0%"
    Range("BM3", [BM65536].End(xlUp)).NumberFormat = "0"
    ActiveWorkbook.Save
End Sub
Nó bị tô vàng ngay dòng sub luôn!
Em không tìm ra lỗi!
hic

tạm thấy các chỗ sai thế này
1)
Dim r1 As Range, r2 As Range, r3 As Ranger, r4 As Range, r5 As Range, r6 As Range, r7 As Range, r8 As Range, r9 As Range, all As Range

2)
thiếu SET cho r2

Set r1 = Range("BF3", [BF65536].End(xlUp))
r2 = Range("AI3", [AJ65536].End(xlUp))

tương tự cho r3, r4, ... , all -- vì sao thế (y.c có SET ), bạn đọc và ngẫm xem sẽ thấm và hiểu hơn.

3)
Bạn nên tìm hiểu kỹ về RANGE, OFFSET của Range, và trung thành với code của mình sửa dần thì mới hiểu được, đọc các code rút gọn hoặc áp dụng thủ thuật chỉ dễ tẩu hỏa cho người mới tiếp cận (khi bạn đã hiểu sâu và cao thêm nữa thì mới nên đọc các code đó).
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom