excel宏代码怎么写?

如何让下面这些代码循环执行,直到B列和C列单元格内无数据为止
Range("B2:C2").Select
Selection.Copy
Sheets("放样").Select
Range("O7").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("监抽").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("台账录入").Select
Range("B3:C3").Select
Selection.Copy
Sheets("放样").Select
Range("O7").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("监抽").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("台账录入").Select
End Sub

看下图:

代码如下:

Sub 俺要打印()

Sheets("台账录入").Select '选中"台账录入"表

Dim i As Long, r As Long

r = Range("B" & Rows.Count).End(xlUp).Row '获取B列最大行号

If r < 2 Then Exit Sub '最大行号<2时退出sub

For i = 2 To r

Range("O7:P7") = Range("B" & i).Resize(1, 2).Value '将B:C两格的值赋值给"放样"表的O7:P7

Sheets("放样").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False '打印"放样"表

Sheets("监抽").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False '打印"监抽"表

Next

MsgBox "打印完毕", 64 '结束时弹出提示

End Sub

追问

不对,我是要把“台账录入“表里面的B2,C2开始的每行数据循环的复制到“放样”表的O7,P7,然后打印放样和监抽两张表,放样表的O7,P7是固定的,每复制打印一次,台账录入表自动往下循环一列,或者删除台账录入表的第2行,直至台账录入表无B列和C列数据为止,像下图这样的3个表

追答

已经循环了呀,For i ...... Next,这不就是循环语句嘛。

你是说,我没有写上删除数据的代码呗?

在倒数第二行的前边,

就是说在Msgbox弹出提示的前边添加一行代码,

Range("B2:C" & r).ClearContents '清空内容

追问

算了,有可能跟我其他的代码有冲突,运行不起来,会影响我其他的代码运算,这代码一运行我其他有个地方就出错了,运算不出结果了,代码太多了,难得去查了,不能因小失大

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-09-01
建议你可以试试看下面的代码:
Dim TempRow as Long, LastRow as Long
LastRow = Sheets("台账录入").Cells(2,2).End(xlDown).Row '先获得B 列从 B2 向下直到连续有数值的最后一个单元格所在的行号
Sub test()
Dim TempRow As Long, LastRow As Long
LastRow = Sheets("台账录入").Cells(2, 2).End(xlDown).Row '先获得B 列从 B2 向下直到连续有数值的最后一个单元格所在的行号
For TempRow = 2 To LastRow Step 1 '临时的过程行号
Sheets("台账录入").Select
Range(Cells(TempRow, 2), Cells(TempRow, 3)).Copy
Sheets("放样").Select
Range("O7").Paste
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("监抽").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Next TempRow
End Sub
相似回答