Bạn đưa cả file và mục đích làm gì lên xem sao?Em muốn đưa danh sách các SHeet vo 1 mảng. Em viết như bên dưới nhưng bị sai
Dsach = Sheets(Array("Cty_Luong", "NF_Luong", "SP_Luong"))
Nhờ các anh chị giúp em điều chỉnh lại
Trân trọng
Sheets(Array("Cty_Luong", "NF_Luong", "SP_Luong")).Copy
Sheets(Array("....")) nó là 1 Object mà bạn, sao lại gán kiểu đó được. Phải vầy:Em muốn đưa danh sách các SHeet vo 1 mảng. Em viết như bên dưới nhưng bị sai
Dsach = Sheets(Array("Cty_Luong", "NF_Luong", "SP_Luong"))
Nhờ các anh chị giúp em điều chỉnh lại
Trân trọng
Dim [COLOR=#ff0000]Dsach As Sheets[/COLOR]
[COLOR=#ff0000]Set[/COLOR] Dsach = Sheets(Array("Cty_Luong", "NF_Luong", "SP_Luong"))
Em đã chỉnh như của anh mà không đượcSheets(Array("....")) nó là 1 Object mà bạn, sao lại gán kiểu đó được. Phải vầy:
Mã:Dim [COLOR=#ff0000]Dsach As Sheets[/COLOR] [COLOR=#ff0000]Set[/COLOR] Dsach = Sheets(Array("Cty_Luong", "NF_Luong", "SP_Luong"))
Bạn nói xem mục đích của bạn là gì! Bạn đã làm gì và giờ muốn thay đổi như thế nào?Em đã chỉnh như của anh mà không được
Hiện tai thì đoạn code này em đang sử dụng
Dsach = Sheets("DS-ATM").Range("H1:H" & Sheets("DS-ATM").Range("H1").End(xlDown).Row).Value
Nay em muốn đổi lại đưa danh sách tên Các sheet vô code luôn. Nhưng không được
Dùng vòng lặp:Mục đích của mình là copy có chọn lọc từ 3 sheet đó (Cty_Luong", "NF_Luong", "SP_Luong )về sheet DS-ATM
Mục đích của mình là copy có chọn lọc từ 3 sheet đó (Cty_Luong", "NF_Luong", "SP_Luong )về sheet DS-ATMBạn nói xem mục đích của bạn là gì! Bạn đã làm gì và giờ muốn thay đổi như thế nào?
Option Explicit
Public Sub TH_ATM()
Dim sArr(), tArr(), Dsach(), I As Long, J As Long, K As Long, N As Long, CoL As Long, R As Long
Dim Cll As Range, dArr(1 To 10000, 1 To 7), STT As Long
Dim Sou As Range
Application.ScreenUpdating = False
[COLOR=#b22222]Dsach = Sheets("DS-ATM").Range("H1:H" & Sheets("DS-ATM").Range("H1").End(xlDown).Row).Value[/COLOR]
On Error Resume Next
For N = 1 To UBound(Dsach, 1)
With Worksheets(Dsach(N, 1))
CoL = .[XFD3].End(xlToLeft).Column
R = .[C12].End(xlDown).Row - 2
sArr = .[A3].Resize(R, CoL).Value
For I = 6 To R '4
K = K + 1
For J = 1 To CoL
If sArr(1, J) <> Empty Then
dArr(K, sArr(1, J)) = sArr(I, J)
End If
Next J
Next I
End With
Next N
With Sheets("DS-ATM")
.[A7:XFD1000].ClearContents
.[A7:XFD1000].Font.Bold = False
.[A7:XFD1000].Borders.LineStyle = 0
.[A7:XFD1000].Font.Color = 0
.[A7:XFD1000].Font.Size = 12
.[A7].Resize(K, 7) = dArr
.[A7].Resize(K, 7).Borders.LineStyle = 1
.[A7].Resize(K, 7).Borders.LineStyle = xlContinuous
.[A7].Resize(K, 7).Borders(xlInsideVertical).Weight = 2
.[A7].Resize(K, 7).Borders(xlInsideHorizontal).Weight = xlHairline
.[A7].Resize(K, 7).RowHeight = 18
.[D7].Resize(K, 1).Font.Size = 7
.[F7].Resize(K, 1).NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
.[D7].Resize(K).Font.Bold = False
.[D7].Offset(, -2).Resize(K, 7).HorizontalAlignment = xlCenter
For Each Cll In .Range(.[C7], .[C7].End(xlDown))
If Cll.Offset(, -2) = Empty Then
Cll.Resize(, 5).Font.Bold = True
Cll.Resize(, 5).Font.Color = -3407872
Cll.Resize(, 6).VerticalAlignment = xlBottom
Cll.Resize(, 6).HorizontalAlignment = xlCenter
Cll.Resize(, 3).ShrinkToFit = True
Else
STT = STT + 1: Cll.Offset(, -1) = STT
Cll.Resize(, 1).HorizontalAlignment = xlLeft
End If
Next Cll
For Each Cll In Sheets("DS-ATM").[A7:A10000].SpecialCells(2)
Set Sou = Sheets("Data").[A4:A10000].Find(Cll.Text, , , xlWhole)
If Not Sou Is Nothing Then Cll.Offset(, 4) = Sou.Offset(, 24)
Next
End With
Application.ScreenUpdating = True
End Sub
Theo tôi bạn không nên dẫn người khác đi theo hướng của mình. Tốt nhất bạn nên mở 1 topic khác và nêu yêu cầu của bạn ở đó. Hướng giải quyết thế nào để người giúp tự lo.Mục đích của mình là copy có chọn lọc từ 3 sheet đó (Cty_Luong", "NF_Luong", "SP_Luong )về sheet DS-ATM
Mã:Option Explicit Public Sub TH_ATM() Dim sArr(), tArr(), Dsach(), I As Long, J As Long, K As Long, N As Long, CoL As Long, R As Long Dim Cll As Range, dArr(1 To 10000, 1 To 7), STT As Long Dim Sou As Range Application.ScreenUpdating = False [COLOR=#b22222]Dsach = Sheets("DS-ATM").Range("H1:H" & Sheets("DS-ATM").Range("H1").End(xlDown).Row).Value[/COLOR] On Error Resume Next For N = 1 To UBound(Dsach, 1) With Worksheets(Dsach(N, 1)) CoL = .[XFD3].End(xlToLeft).Column R = .[C12].End(xlDown).Row - 2 sArr = .[A3].Resize(R, CoL).Value For I = 6 To R '4 K = K + 1 For J = 1 To CoL If sArr(1, J) <> Empty Then dArr(K, sArr(1, J)) = sArr(I, J) End If Next J Next I End With Next N With Sheets("DS-ATM") .[A7:XFD1000].ClearContents .[A7:XFD1000].Font.Bold = False .[A7:XFD1000].Borders.LineStyle = 0 .[A7:XFD1000].Font.Color = 0 .[A7:XFD1000].Font.Size = 12 .[A7].Resize(K, 7) = dArr .[A7].Resize(K, 7).Borders.LineStyle = 1 .[A7].Resize(K, 7).Borders.LineStyle = xlContinuous .[A7].Resize(K, 7).Borders(xlInsideVertical).Weight = 2 .[A7].Resize(K, 7).Borders(xlInsideHorizontal).Weight = xlHairline .[A7].Resize(K, 7).RowHeight = 18 .[D7].Resize(K, 1).Font.Size = 7 .[F7].Resize(K, 1).NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)" .[D7].Resize(K).Font.Bold = False .[D7].Offset(, -2).Resize(K, 7).HorizontalAlignment = xlCenter For Each Cll In .Range(.[C7], .[C7].End(xlDown)) If Cll.Offset(, -2) = Empty Then Cll.Resize(, 5).Font.Bold = True Cll.Resize(, 5).Font.Color = -3407872 Cll.Resize(, 6).VerticalAlignment = xlBottom Cll.Resize(, 6).HorizontalAlignment = xlCenter Cll.Resize(, 3).ShrinkToFit = True Else STT = STT + 1: Cll.Offset(, -1) = STT Cll.Resize(, 1).HorizontalAlignment = xlLeft End If Next Cll For Each Cll In Sheets("DS-ATM").[A7:A10000].SpecialCells(2) Set Sou = Sheets("Data").[A4:A10000].Find(Cll.Text, , , xlWhole) If Not Sou Is Nothing Then Cll.Offset(, 4) = Sou.Offset(, 24) Next End With Application.ScreenUpdating = True End Sub
Mình gởi File lên, nhờ các a chị giúp đỡCứ dần dần đi bạn. Vì người đọc code ko thấy file cứ như đi vào rừng rậm ý.
cứ cho cái file và kq mong muốn tôi nghĩ sẽ có nhiều code hay để tham khảo.
Option Explicit
Public Sub TH_ATM()
Dim sArr(), tArr(), Dsach(), I As Long, J As Long, K As Long, N As Long, CoL As Long, R As Long
Dim Cll As Range, dArr(1 To 10000, 1 To 7), STT As Long
Dim Sou As Range
Application.ScreenUpdating = False
Dsach = Sheets("DS-ATM").Range("H1:H" & Sheets("DS-ATM").Range("H1").End(xlDown).Row).Value
Mình gởi File lên, nhờ các a chị giúp đỡ
http://www.mediafire.com/view/ka23ewhbz7fpx5g/ATM.xlsb
Public Sub TH_ATM()
Application.ScreenUpdating = False
Dim sArr(), dArr(1 To 1000, 1 To 7), tArr(), Dsach()
Dim I As Long, J As Long, K As Long, N As Long
With Sheets("DS-ATM")
Dsach = .Range(.[H1], .[H1].End(xlDown)).Value
tArr = .Range("A5:F5").Value
For N = 1 To UBound(Dsach, 1)
With Sheets(Dsach(N, 1))
sArr = .Range(.[A9], .[A9].End(xlDown)).Resize(, 20).Value
For I = 1 To UBound(sArr, 1)
K = K + 1
dArr(K, 2) = K
For J = 1 To UBound(tArr, 2)
If tArr(1, J) <> Empty Then dArr(K, J) = sArr(I, tArr(1, J))
Next J
Next I
End With
Next N
.[A7:G1000].ClearContents
.[A7:G1000].Borders.LineStyle = 0
.[A7].Resize(K, 7).Value = dArr
.[A7].Resize(K, 7).Borders.LineStyle = 1
End With
End Sub