Xin trợ giúp lập chuỗi lệnh lặp lại trong macro

Liên hệ QC

emconnhaxd

Thành viên chính thức
Tham gia
10/1/10
Bài viết
51
Được thích
0
Mình muốn thao tác lặp lại 1 lệnh được giới hạn bởi 1 con số: Ví dụ số giới hạn là 100. Mình có 1 chuỗi câu lệnh
Sub inan()
'
' inan Macro
'

'
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
ActiveCell.FormulaR1C1 = “2”
Range(“I2”).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
ActiveCell.FormulaR1C1 = “3”
Range(“I2”).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
ActiveCell.FormulaR1C1 = “4”
Range(“I2”).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
ActiveCell.FormulaR1C1 = “5”
Range(“I2”).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False

(Thao tác là: đánh số 1 vào I2> in : đánh số 2 vào I2> in......... đến 100 lần)
End Sub
Mình muốn rút lại lệnh này ngắn lại (số 100 mình sẽ để ở 1 ô trong bảng exel (ví dụ ô A1)
bạn nào giúp mình được không
 
Lần chỉnh sửa cuối:
Không biết có phải như vầy không
PHP:
Public Sub test_ChangeCellToPrint()
  Call ChangeCellToPrint(1, 100)
End Sub
Public Sub ChangeCellToPrint( _
                  Optional ByVal startNum& = 2, _
                  Optional ByVal endNum& = 100, _
                  Optional ByVal Ws As Worksheet, _
                  Optional ByVal copies% = 1, _
                  Optional ByVal collate As Boolean = True, _
                  Optional ByVal IgnorePrintAreas As Boolean = False)
  Dim i%
    If Ws Is Nothing Then Set Ws = ActiveSheet
    With Ws
      For i = startNum To endNum
        .Range("I2").Value = i
        .PrintOut copies:=copies, collate:=collate, IgnorePrintAreas:=IgnorePrintAreas
      Next
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Mình muốn thao tác lặp lại 1 lệnh được giới hạn bởi 1 con số: Ví dụ số giới hạn là 100. Mình có 1 chuỗi câu lệnh
Sub Macro1()
'
' Macro1 Macro
'

'
Range("I2:J2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveCell.FormulaR1C1 = "2"
Range("K12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Range("I2:J2").Select
ActiveCell.FormulaR1C1 = "3"
Range("K12").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Range("I2:J2").Select
........................................đến 100
End Sub
Mình muốn rút lại lệnh này ngắn lại (số 100 mình sẽ để ở 1 ô trong bảng exel (ví dụ ô A1)
bạn nào giúp mình được không
Bạn hỏi chẳng có đầu đuôi và chuyện giải thích cũng không rõ ràng.
Theo tôi hiểu là bạn muốn in lặp giá trị bất kỳ, tùy thuộc vào dữ liệu chứa ở sheet nào đó (không biết), nếu đúng vậy thì chỉ cần gõ số bắt đầu vào I2 và số kết thúc vào J2 và chỉ việc in.
Bạn không đính kèm File nên không thể đoán mò để mà phán.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn hỏi chẳng có đầu đuôi và chuyện giải thích cũng không rõ ràng.
Theo tôi hiểu là bạn muốn in lặp giá trị bất kỳ, tùy thuộc vào dữ liệu chứa ở sheet nào đó (không biết), nếu đúng vậy thì chỉ cần gõ số bắt đầu vào I2 và số kết thúc vào J2 và chỉ việc in.
Bạn không đính kèm File nên không thể đón mò để mà phán.
Sub inan()
'
' inan Macro
'

'
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
ActiveCell.FormulaR1C1 = "2"
Range("I9").Select
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
Range("I2").Select
ActiveCell.FormulaR1C1 = "3"
Range("I9").Select
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
Range("I2").Select
ActiveCell.FormulaR1C1 = "4"
Range("I9").Select
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _
IgnorePrintAreas:=False
End Sub

Đúng là mình muốn in. Nhưng không phải mình muốn đánh số 1 đến 100 mà mình muốn nó thao tác thủ công: Chọn Biên bản số 1> in; chọn BB2> in; Chọn BB 3> in
Bài đã được tự động gộp:

Không biết có phải như vầy không
PHP:
Public Sub test_ChangeCellToPrint()
  Call ChangeCellToPrint(1, 100)
End Sub
Public Sub ChangeCellToPrint( _
                  Optional ByVal startNum& = 2, _
                  Optional ByVal endNum& = 100, _
                  Optional ByVal Ws As Worksheet, _
                  Optional ByVal copies% = 1, _
                  Optional ByVal collate As Boolean = True, _
                  Optional ByVal IgnorePrintAreas As Boolean = False)
  Dim i%
    If Ws Is Nothing Then Set Ws = ActiveSheet
    With Ws
      For i = startNum To endNum
        .Range("I2:J2").Value = i
        .PrintOut copies:=copies, collate:=collate, IgnorePrintAreas:=IgnorePrintAreas
      Next
    End With
End Sub
Không được bạn ah
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng là mình muốn in. Nhưng không phải mình muốn đánh số 1 đến 100 mà mình muốn nó thao tác thủ công: Chọn Biên bản số 1> in; chọn BB2> in; Chọn BB 3> in
Gom cái sub của bạn cho gọn lại như vầy thử xem,
PHP:
Sub inan()
Dim I As Long
For I = 1 To 100 'In tu 1 den 100'
    Range("I2").Value = I
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Next I
End Sub
 
Upvote 0
Gom cái sub của bạn cho gọn lại như vầy thử xem,
PHP:
Sub inan()
Dim I As Long
For I = 1 To 100 'In tu 1 den 100'
    Range("I2").Value = I
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Next I
End Sub
Có gì đó sai sai đó Thầy, vậy là in cả 100 tờ rồi, đâu cần nhập vào ô I2 làm gì nhỉ?
PHP:
Sub inan()
Dim I As Long
For I = 1 To Range("I2").Value 'In từ 1 đến số tờ cần in tại I2'
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Next I
End Sub
 
Upvote 0
Có gì đó sai sai đó Thầy, vậy là in cả 100 tờ rồi, đâu cần nhập vào ô I2 làm gì nhỉ?
PHP:
Sub inan()
Dim I As Long
For I = 1 To Range("I2").Value 'In từ 1 đến số tờ cần in tại I2'
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Next I
End Sub
Khi I2 thay đổi, dữ liệu trong sheet có sự thay đổi gì đó liên quan đến I2 rồi mới in.
 
Upvote 0
Mình muốn thao tác lặp lại 1 lệnh được giới hạn bởi 1 con số: Ví dụ số giới hạn là 100. Mình có 1 chuỗi câu lệnh
...
Mình muốn rút lại lệnh này ngắn lại (số 100 mình sẽ để ở 1 ô trong bảng exel (ví dụ ô A1)
bạn nào giúp mình được không
Code thì nhiều mà cái căn bản nhất của yêu cầu chưa thấy.
 
Upvote 0
Web KT

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

Back
Top Bottom