huevantran
Thành viên chính thức
- Tham gia
- 27/4/22
- Bài viết
- 55
- Được thích
- 42
Chào tất cả các Anh Chị thành viên GPE,
Em mới tập viết Code VBA gần đây, hiện tại em có nhu cầu muốn tách 1 file tổng thành nhiều file nhỏ hơn có điều kiện, em còn 1 số vấn đề chưa mày mò được, nhờ các Anh Chị chỉ giúp:
1. Em chưa biết cách đánh lại số thứ tự cho các sheet con sau khi tách
2. Giá trị lớn nhất của biến j hiện tại em đang thiết lập cố định là 22 tương ứng với hàng cuối cùng chứa dữ liệu trong bảng của sheet Tong. Làm thế nào để có thể lấy được giá trị này tự động.
3. Làm sao để tắt thông báo khi delete sheet.
Mong nhận được sự giúp đỡ từ các Anh Chị, em cảm ơn.
Sub ABC()
Dim i As Integer
Dim j As Integer
Dim nsd As String
Dim bp As String
For Each Worksheet In ThisWorkbook.Worksheets
If Worksheet.Name <> "Tong" And Worksheet.Name <> "DS" Then
Worksheet.Delete
End If
Next
For i = 1 To WorksheetFunction.CountA(ThisWorkbook.Sheets("DS").Range("A2:A100"))
nsd = ThisWorkbook.Sheets("DS").Range("A" & i + 1).Value
bp = ThisWorkbook.Sheets("DS").Range("B" & i + 1).Value
Sheets("Tong").Copy After:=Sheets(i + 1)
For j = 22 To 15 Step -1
If Cells(j, 4) <> nsd Then
Rows(j).Delete
End If
Next j
Range("A2") = bp
ActiveSheet.Name = nsd
Next i
End Sub
Em mới tập viết Code VBA gần đây, hiện tại em có nhu cầu muốn tách 1 file tổng thành nhiều file nhỏ hơn có điều kiện, em còn 1 số vấn đề chưa mày mò được, nhờ các Anh Chị chỉ giúp:
1. Em chưa biết cách đánh lại số thứ tự cho các sheet con sau khi tách
2. Giá trị lớn nhất của biến j hiện tại em đang thiết lập cố định là 22 tương ứng với hàng cuối cùng chứa dữ liệu trong bảng của sheet Tong. Làm thế nào để có thể lấy được giá trị này tự động.
3. Làm sao để tắt thông báo khi delete sheet.
Mong nhận được sự giúp đỡ từ các Anh Chị, em cảm ơn.
Sub ABC()
Dim i As Integer
Dim j As Integer
Dim nsd As String
Dim bp As String
For Each Worksheet In ThisWorkbook.Worksheets
If Worksheet.Name <> "Tong" And Worksheet.Name <> "DS" Then
Worksheet.Delete
End If
Next
For i = 1 To WorksheetFunction.CountA(ThisWorkbook.Sheets("DS").Range("A2:A100"))
nsd = ThisWorkbook.Sheets("DS").Range("A" & i + 1).Value
bp = ThisWorkbook.Sheets("DS").Range("B" & i + 1).Value
Sheets("Tong").Copy After:=Sheets(i + 1)
For j = 22 To 15 Step -1
If Cells(j, 4) <> nsd Then
Rows(j).Delete
End If
Next j
Range("A2") = bp
ActiveSheet.Name = nsd
Next i
End Sub