Giúp câu lệnh macro xử lý lần lượt từng bảng tính

Liên hệ QC

anhbp2018

Thành viên mới
Tham gia
18/1/19
Bài viết
30
Được thích
4
Giới tính
Nam
Em có bảng tính, có các sheet name từ 1 - 31 (từng ngày trong tháng), em có macro sửa từng bảng tính, mà làm thủ công lần lượt từng sheet như vạy thì hơi lâu. Giúp em cách đặt toàn bộ câu lệnh đó trong 1 macro, để khi bấm một phát là chạy lần lượt 31 sheet đó luôn ạ. Em chưa biết gì về VBA, mong ad duyệt bài.
Ví dụ, sửa từng sheet như này:

Sub Macro4()
Range("S23:S32").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End Sub
 
Em có bảng tính, có các sheet name từ 1 - 31 (từng ngày trong tháng), em có macro sửa từng bảng tính, mà làm thủ công lần lượt từng sheet như vạy thì hơi lâu. Giúp em cách đặt toàn bộ câu lệnh đó trong 1 macro, để khi bấm một phát là chạy lần lượt 31 sheet đó luôn ạ. Em chưa biết gì về VBA, mong ad duyệt bài.
Ví dụ, sửa từng sheet như này:
Sub Macro4()
Range("S23:S32").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End Sub
Bảng tính của bạn đang nấp ở đâu vậy?
 
Upvote 0
File của bạn đâu. Chứ hình dung không có ra mục đích của bạn
 
Upvote 0
Em có bảng tính, có các sheet name từ 1 - 31 (từng ngày trong tháng), em có macro sửa từng bảng tính, mà làm thủ công lần lượt từng sheet như vạy thì hơi lâu. Giúp em cách đặt toàn bộ câu lệnh đó trong 1 macro, để khi bấm một phát là chạy lần lượt 31 sheet đó luôn ạ. Em chưa biết gì về VBA, mong ad duyệt bài.
Ví dụ, sửa từng sheet như này:

Sub Macro4()
Range("S23:S32").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End Sub
Làm bằng tay 1 lần cho nhiều sheet cũng được mà.
 
Upvote 0
Em có bảng tính, có các sheet name từ 1 - 31 (từng ngày trong tháng), em có macro sửa từng bảng tính, mà làm thủ công lần lượt từng sheet như vạy thì hơi lâu. Giúp em cách đặt toàn bộ câu lệnh đó trong 1 macro, để khi bấm một phát là chạy lần lượt 31 sheet đó luôn ạ. Em chưa biết gì về VBA, mong ad duyệt bài.
Ví dụ, sửa từng sheet như này:

Sub Macro4()
Range("S23:S32").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End Sub
Mã:
Sub ABC()
Dim ws As Worksheet
For Each ws In Worksheets
    With ws.Range("S23:S32").Font
        .Color = -16776961
        .TintAndShade = 0
    End With
Next
End Sub
Thử cái này coi thế nào
 
Upvote 0
Const TENSHEET = "caigido"
For Each sh In WorkSheets
If sh.Name Like TENSHEET & "*" Then
Select Case Replace(sh.Name, TENSHEET, "")
Case "1" To "31"
With sh.Range("S23:S32").Font
.Color = -16776961
.TintAndShade = 0
End With
End Select
End If
Next sh
 
Upvote 0
Const TENSHEET = "caigido"
For Each sh In WorkSheets
If sh.Name Like TENSHEET & "*" Then
Select Case Replace(sh.Name, TENSHEET, "")
Case "1" To "31"
With sh.Range("S23:S32").Font
.Color = -16776961
.TintAndShade = 0
End With
End Select
End If
Next sh
Em cóp nhặt rồi gắn vào file của em mà không biết sao nó vẫn chưa muốn chạy, chắc do trời lạnh quá hay sao á anh. Giúp em nhé!
 

File đính kèm

  • Mẫu.xlsm
    415.9 KB · Đọc: 11
Upvote 0
Có thể viết theo 2 kiểu.
1. Viết code tổng quát hơn cho trường hợp các tên sheet không nhất thiết là các số tự nhiên liên tiếp từ 1 tới 31.

2. Viết code cho trường hợp cụ thể cho 31 sheet có tên 1, 2, ..., 31
Mã:
Sub Test_All()
Dim chiso As Long
    For chiso = 1 To 31
        With ThisWorkbook.Worksheets(CStr(chiso)).Range("D5:E9")    ' truy cap toi vung D5:E9 tren sheet co ten la chiso
            With .Font
                .Bold = True
                .Color = -16776961
                .TintAndShade = 0
            End With
            With .Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 65535
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
        End With
    Next chiso
End Sub
 
Upvote 0
Bạn chủ bài đăng thử nghiên cứu cái này:
PHP:
Sub DuyetSheets()
 Dim Sh As Worksheet

 For Each Sh In ThisWorkbook.Worksheets
    If Left(Sh.Name, 3) = "GPE" Then
          'Các Lênh Cua Ban Da  Có   '
    End If
 Next Sh
End Sub
 
Upvote 0
Em
Sub DuyetSheets() Dim Sh As Worksheet For Each Sh In ThisWorkbook.Worksheets If Left(Sh.Name, 3) = "GPE" Then 'Các Lênh Cua Ban Da Có ' End If Next Sh
Em thêm mớ câu lệnh vô giữa đoạn ni mà răng hén cũng không có chạy ạ! Hén chớp cái rồi im re.

Sub DuyetSheets()
Dim Sh As Worksheet

For Each Sh In ThisWorkbook.Worksheets
If Left(Sh.Name, 3) = "GPE" Then

'----------Đoạn câu lệnh ví dụ------------------
Range("D5:E9").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.Font.Bold = True
'------------------------------------

End If
Next Sh
End Sub
 
Upvote 0
Em

Em thêm mớ câu lệnh vô giữa đoạn ni mà răng hén cũng không có chạy ạ! Hén chớp cái rồi im re.

Sub DuyetSheets()
Dim Sh As Worksheet

For Each Sh In ThisWorkbook.Worksheets
If Left(Sh.Name, 3) = "GPE" Then

'----------Đoạn câu lệnh ví dụ------------------
Range("D5:E9").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.Font.Bold = True
'------------------------------------

End If
Next Sh
End Sub
Có đợi đến mùng thất cũng không thể chạy được.
Người ta có thể viết trong lúc say, nhưng nếu không phát hiện ra mà làm theo thì có cho thêm tiền code cũng sẽ không chạy đâu.
 
Upvote 0
Em

Em thêm mớ câu lệnh vô giữa đoạn ni mà răng hén cũng không có chạy ạ! Hén chớp cái rồi im re.

Sub DuyetSheets()
Dim Sh As Worksheet

For Each Sh In ThisWorkbook.Worksheets
If Left(Sh.Name, 3) = "GPE" Then
'------------------------------------
End If
Next Sh
End Sub
Thế bạn có các trang tính GPE01,GPE02,. . . . ,GPE30, GPE31 chưa?
 
Upvote 0
Thế bạn có các trang tính GPE01,GPE02,. . . . ,GPE30, GPE31 chưa?
Vấn đề quá rõ ràng mà.

Bài #1
Em có bảng tính, có các sheet name từ 1 - 31 (từng ngày trong tháng), em có macro sửa từng bảng tính, mà làm thủ công lần lượt từng sheet như vạy thì hơi lâu. Giúp em cách đặt toàn bộ câu lệnh đó trong 1 macro, để khi bấm một phát là chạy lần lượt 31 sheet đó luôn ạ. Em chưa biết gì về VBA, mong ad duyệt bài.

Bài #7 có tập tin đính kèm.
-------
Mà hướng dẫn kiểu
For Each Sh In ThisWorkbook.Worksheets
If Left(Sh.Name, 3) = "GPE" Then
'Các Lênh Cua Ban Da Có '
End If
Next Sh

Thì người mù tịt về VBA không làm được đâu. Người ta có vd. Range("D5:E9").Select, vậy khi 'Các Lênh Cua Ban Da Có thì làm sao chọn được vùng trên Sh? "Em gà lắm" thì làm sao em tự sửa được?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn quên chỉ thớt:
- Bấm chọn 31 sheets
- Chạy cái ma cơ rô ở bài #1 (bản nguyên thuỷ)
Đúng cái em cần, chả cần phải câu lệnh chi nhiều, em cứ record mác cờ rô 1 sheet, sau đó chọn 30 còn lại là cha con họ hàng nhà Bill Gate xúm vô lo phần còn lại. Cảm ơn các bác nhiều!!!
 
Upvote 0
Đúng cái em cần, chả cần phải câu lệnh chi nhiều, em cứ record mác cờ rô 1 sheet, sau đó chọn 30 còn lại là cha con họ hàng nhà Bill Gate xúm vô lo phần còn lại. Cảm ơn các bác nhiều!!!
Vậy thì có cần thiết phải dùng macro không?
 
Upvote 0
Vậy thì có cần thiết phải dùng macro không?
Dạ có chứ ạ, vì mỗi khi phải sửa từng sheet với nhiều nội dung khác nhau, mà phải lặp đi lặp lại trên 30 sheet giống nhau như vậy thì hết ngày mất. Có mác cờ rô mẫu rồi, chọn cả làng và bấm hự phát rồi đi đốt điếu thuốc. Khỏe!!!
 
Upvote 0
Web KT
Back
Top Bottom