Excel VBA-不在我的while循环中循环
因此,我有一个代码,它将数据粘贴到excel列中,然后我尝试循环该列中的数据,并从B列中的每个值的数据创建一个新的工作表,但它在完成此操作一次后停止,而不是循环该列 有什么想法吗Excel VBA-不在我的while循环中循环,excel,vba,Excel,Vba,因此,我有一个代码,它将数据粘贴到excel列中,然后我尝试循环该列中的数据,并从B列中的每个值的数据创建一个新的工作表,但它在完成此操作一次后停止,而不是循环该列 有什么想法吗 i = 4 Do While Cells(i, 2).Value <> "" Worksheets("Front").Cells(5, 3).Value = Cells(i, 2) Worksheets("Front").Se
i = 4
Do While Cells(i, 2).Value <> ""
Worksheets("Front").Cells(5, 3).Value = Cells(i, 2)
Worksheets("Front").Select
Range("C2:M35").Select
Selection.Copy
Sheets("PlaceHolder").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Dim wks As Worksheet
Set wks = ActiveSheet
ActiveSheet.Copy After:=Worksheets(Sheets.Count)
ActiveSheet.Name = wks.Range("C5").Value
i = i + 1
Loop
i=4
执行While单元格(i,2)。值“”
工作表(“正面”)。单元格(5,3)。值=单元格(i,2)
工作表(“正面”)。选择
范围(“C2:M35”)。选择
选择,复制
图纸(“占位符”)。选择
范围(“C2”)。选择
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=假
Selection.Paste特殊粘贴:=xlPasteValuesAndNumberFormats,操作:=_
xlNone,SkipBlanks:=False,转置:=False
将工作作为工作表
设置wks=ActiveSheet
ActiveSheet.Copy After:=工作表(Sheets.Count)
ActiveSheet.Name=wks.Range(“C5”).Value
i=i+1
环
代码中的“单元格”和“范围”都指的是活动工作表,它可能以工作表(“前”)开头,然后您可以使用工作表(“占位符”)将活动工作表更改为工作表(“占位符”)。选择语句。我不确定创建新工作表是否会将ActiveWorksheet设置为新工作表,我不需要知道如何使代码正常工作。您不应该依赖于对ActiveWorksheet的隐式引用,而应该像这样使用显式引用
'Style note: Always put Option Explict at the top of the module
'and declare all your variables at the top of the subroutine.
Dim wsFront As Worksheet
Dim wsPlaceholder As Worksheet
Dim wsNewSheet As Worksheet
Dim i As Integer
Set wsFront = Worksheets("Front")
Set wsPlaceholder = Worksheets("Placeholder")
i = 4
Do While wsFront.Cells(i, 2).Value <> ""
' Copy data from Worksheets("Front")
wsFront.Cells(5, 3).Value = Cells(i, 2)
wsFront.Select
wsFront.Range("C2:M35").Select
Selection.Copy
' Paste data to Worksheets("Placeholder")
wsPlaceholder.Select
wsPlaceholder.Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
' Copy Worksheets("Placeholder") to new worksheet
wsPlaceholder.Copy After:=Worksheets(Sheets.Count)
'Get a reference to the new worksheet
Set wsNewSheet = Worksheets(Worksheets.Count)
wsNewSheet.Name = wsPlaceholder.Range("C5").Value
i = i + 1
Loop
”样式说明:始终将选项Explict放在模块顶部
'并在子例程顶部声明所有变量。
将前视图作为工作表
将占位符设置为工作表
将新闻纸设置为工作表
作为整数的Dim i
设置wsFront=工作表(“Front”)
设置wsPlaceholder=工作表(“占位符”)
i=4
在wsFront.Cells(i,2.Value)时执行此操作“”
'从工作表复制数据(“正面”)
wsFront.Cells(5,3).Value=Cells(i,2)
wsFront。选择
wsFront.范围(“C2:M35”)。选择
选择,复制
'将数据粘贴到工作表(“占位符”)
wsPlaceholder.Select
wsPlaceholder.Range(“C2”)。选择
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=假
Selection.Paste特殊粘贴:=xlPasteValuesAndNumberFormats,操作:=_
xlNone,SkipBlanks:=False,转置:=False
'将工作表(“占位符”)复制到新工作表
wsPlaceholder.Copy After:=工作表(Sheets.Count)
'获取对新工作表的引用
设置wsNewSheet=Worksheets(Worksheets.Count)
wsNewSheet.Name=wsPlaceholder.Range(“C5”).Value
i=i+1
环
在Excel中使用VBA时,通常不需要选择或激活任何内容(尽管宏记录器可能会尝试建议)
如果您计划在Excel中执行大量VBA工作,则强烈建议阅读以下内容:
将wsData设置为工作表、wsFront设置为工作表、wsPH设置为工作表、v
将wb设置为工作簿,我设置为长
设置wb=ThisWorkbook
设置wsData=ActiveSheet'或其他特定的工作表
设置wsFront=wb.工作表(“Front”)
设置wsPH=wb.工作表(“占位符”)
i=4
执行wsData.Cells(i,2.Value)时
v=wsData.Cells(i,2).Value
wsFront.Cells(5,3).Value=v
wsFront.Range(“C2:M35”)。副本
具有wsPH范围(“C2”)
.Paste特殊粘贴:=xlPasteValues
.Paste特殊粘贴:=XLPasteValues和NumberFormats
以
wsPH.Copy After:=wb.Worksheets(Sheets.Count)
wb.工作表(Sheets.Count).Name=v
环
一个单元格可能是空白的,它也在使用活动的工作表,我认为它创建后将是新的工作表。