2017-08-25 202 views
-1

我试图在Excel VBA中创建“Do Until”循环,它复制填充在“SQL”工作表A列中的每个值(从单元格A2开始),将值粘贴到单元格“A2”的“Home”工作表中,运行已存在的“PDF”宏,为每个填充的值继续此过程,并在“SQL”工作表的A列中没有更多值时结束。我对VBA非常陌生,并尝试使用其他帖子/博客。任何帮助将不胜感激。Do直到循环Excel VBA

Dim rngMyRange As Range, rngCell As Range 
Dim sht As Worksheet 
Dim LastRow As Long 
Dim SheetName As String 


With Worksheets("SQL") 
Set rngMyRange = .Range(.Range("a2"), .Range("A1000").End(x1up)) 

Do Until IsEmpty(Cells(rowNo, 1)) 
    For Each rngCell In rngMyRange 
    rngCell.Cells.Select 
    Selection.Copy 
    Sheets("HOME").Select 
    Range("A2").Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Application.Run "'PDF Generator.xlsm'!PDF" 

Loop 
End Sub 
+0

那么,有什么问题呢?这篇文章没有问题。请阅读[问]。 –

回答

1

添加此点:

Do Until IsEmpty(.Cells(rowNo, 1)) 

没有它是指的在activesheet点。

2

你在Do循环中有一个for循环。删除Do循环。

你从来不会使用End With

而且避免使用.Select.Activate它减缓代码:

Dim rngMyRange As Range, rngCell As Range 


With Worksheets("SQL") 
    Set rngMyRange = .Range(.Range("a2"), .Range("A1048576").End(xlup)) 
End With 

For Each rngCell In rngMyRange 
    rngCell.Copy 
    Sheets("HOME").Range("A2").PasteSpecial 
    Application.CutCopyMode = False 
    Application.Run "'PDF Generator.xlsm'!PDF" 
Next rngCell 
+0

嗨斯科特 - 谢谢你的帮助!我想知道你是否可以知道一个更好的方法来定义范围。我得到了应用程序定义的错误或对象定义的错误。我的范围每天都会有所不同,它将基于“SQL”工作表A列中填充行的数量,从单元格“A2”开始。 – SamL

+0

你在哪一行得到错误?另见编辑我看它超出第1000行。 –

+0

当我调试时它指向整个范围线。设置rngMyRange = .Range(.Range(“a2”),.Range(“A1048576”)。结束(x1up)) – SamL