Excel宏在循环未编译时执行
这是一个简单的代码,可以转到工作表拉一行,返回到第一张工作表并粘贴它,然后重复,直到库存a列中的值发生变化(新员工),此时需要创建一个新工作表来开始存储新数据。然后重复,直到完成Excel宏在循环未编译时执行,excel,vba,Excel,Vba,这是一个简单的代码,可以转到工作表拉一行,返回到第一张工作表并粘贴它,然后重复,直到库存a列中的值发生变化(新员工),此时需要创建一个新工作表来开始存储新数据。然后重复,直到完成 Dim i As Integer Dim j As Integer Set i = 2 Set j = 1 Do While i < 6 Sheets("Inventory").Select If Cells("i,1").Value = Cells("i-1,1").Value Then
Dim i As Integer
Dim j As Integer
Set i = 2
Set j = 1
Do While i < 6
Sheets("Inventory").Select
If Cells("i,1").Value = Cells("i-1,1").Value Then
Cells("i:i").Select
Selection.Copy
Sheets("Sheetj").Select
Cells("i,1").Select
Selection.Paste
i = i + 1
Else
Sheets.Add After:=Sheets(Sheets.Count)
j = j + 1
Sheets("Inventory").Select
Cells("i:i").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheetj").Select
Range("A3").Select
ActiveSheet.Paste
i = i + 1
End If
End Sub
Dim i作为整数
作为整数的Dim j
集合i=2
设置j=1
我6岁以下的时候去做
工作表(“库存”)。选择
如果单元格(“i,1”).值=单元格(“i-1,1”).值,则
单元格(“i:i”)。选择
选择,复制
图纸(“图纸J”)。选择
单元格(“i,1”)。选择
选择。粘贴
i=i+1
其他的
Sheets.Add After:=工作表(Sheets.Count)
j=j+1
工作表(“库存”)。选择
单元格(“i:i”)。选择
Application.CutCopyMode=False
选择,复制
图纸(“图纸J”)。选择
范围(“A3”)。选择
活动表。粘贴
i=i+1
如果结束
端接头
添加以下内容:
Loop
在结束sub之前,如果您引用的是i应该是什么数字,i也不应该有双引号。如果是像细胞(i,1)或细胞(i,i),我会让你来解决其余的问题
对不起,误读了你原来的帖子。已修复。子测试()
Sub test()
Dim i As Integer
Dim j As Integer
i = 2 ' got rid of set
j = 1 ' got rid of set
Do While i < 6
Sheets("Inventory").Select
If Cells("i,1").Value = Cells("i-1,1").Value Then
Cells("i:i").Select
Selection.Copy
Sheets("Sheetj").Select
Cells("i,1").Select
Selection.Paste
i = i + 1
Else
Sheets.Add After:=Sheets(Sheets.Count)
j = j + 1
Sheets("Inventory").Select
Cells("i:i").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheets" & j).Select ' for completeness...
Range("A3").Select
ActiveSheet.Paste
i = i + 1
End If
Loop ' missing this
End Sub
作为整数的Dim i
作为整数的Dim j
i=2'已摆脱设置
j=1'已摆脱设置
我6岁以下的时候去做
工作表(“库存”)。选择
如果单元格(“i,1”).值=单元格(“i-1,1”).值,则
单元格(“i:i”)。选择
选择,复制
图纸(“图纸J”)。选择
单元格(“i,1”)。选择
选择。粘贴
i=i+1
其他的
Sheets.Add After:=工作表(Sheets.Count)
j=j+1
工作表(“库存”)。选择
单元格(“i:i”)。选择
Application.CutCopyMode=False
选择,复制
工作表(“工作表”&j)。选择“完整性…”。。。
范围(“A3”)。选择
活动表。粘贴
i=i+1
如果结束
循环“缺少这个”
端接头
我会这样做,为每个数据组添加新的工作表
更新:减少我的代码现在你的“sheetj”部分已清除
代码
Sub-Other()
变暗rng1 As范围
变暗rng2 As范围
将ws设置为工作表
设置rng1=板材(“库存”)。范围(“I2:i6”)
设置ws=Sheets.Add
对于rng1中的每个rng2
如果rng2 rng2.Offset(-1,0),则设置ws=Sheets.Add
rng2.EntireRow.Copy ws.Rows(rng2.Row)
下一个
端接头
未经测试,但我认为您使用了太多的选项(尝试了.activate?)
Dim i As long“long”对于循环更快
Dim j尽可能长
i=2'不需要设置
j=1
我6岁以下的时候去做
带工作表(“库存”)
如果.Cells(i,1).Value=.Cells(i-1,1).Value,则“我删除了单元格中的引号
.范围(“i:i”).复印页(“表格J”).单元格(i,1)
i=i+1
其他的
Sheets.Add After:=工作表(Sheets.Count)
j=j+1
.单元格(“i:i”).复印页(“表格J”).范围(“A3”)
i=i+1
如果结束
以
Application.CutCopyMode=False
循环'你忘了一个结束循环
您是否尝试删除将i
作为变量值的双引号?像单元格(“i:i”)
。。。。将其更改为单元格(i&“:”&i)
@PankajJaju,这是一种非常礼貌的表达方式。我相信这会非常有帮助:)。请看下面我的答案。不需要设置来初始化整数。我粘贴的代码没有编译错误。我没有数据来检查它是否符合你的意图。我会让你来考虑的out@PankajJaju,单元格(“A1”)
语法不正确,范围(“A1”)
语法正确。其他选项有:单元格(i,1)
或单元格(i-1,1)
,等等。也可以使用大量ups来搜索Alpha。非常感谢!还有一个问题-Cells(“A1”)
语法不正确,Range(“A1”)
语法正确。已将其更新为Cells使用它的方式。我不停地说,哈哈。工作了一整天。谢谢你的帮助哈!这仍然会复制到SheetJ,而不是新的工作表??我想它会基于这一行“Sheets(“SheetJ”)。选择”。如果您需要此代码,您可以随时根据需要进行自定义。我的目标是帮助解决OP的编译错误。我相信他可以根据自己的需要进行定制。请随意回答您认为正确的问题。这是一个开放的社区;)是,工作6小时后,现在出现了一个问题。Sheets(“Sheetj”)。选择
确实需要变成Sheets(“Sheets”)和
进入工作表,尽管协助OP并解决了他的问题……是否愿意评论为什么我应该被否决?@SeekingAlpha否决投票应保留用于代码问题。如果您看到错误,请随时指出错误。
Sub Other()
Dim rng1 As Range
Dim rng2 As Range
Dim ws As Worksheet
Set rng1 = Sheets("Inventory").Range("I2:i6")
Set ws = Sheets.Add
For Each rng2 In rng1
If rng2 <> rng2.Offset(-1, 0) Then Set ws = Sheets.Add
rng2.EntireRow.Copy ws.Rows(rng2.Row)
Next
End Sub
Dim i As long 'long is faster for loops
Dim j As long
i = 2 'dont need set
j = 1
Do While i < 6
with Sheets("Inventory")
If .Cells(i,1).Value = .Cells(i-1,1).Value Then 'i removed the quotes in cells
.range("i:i").Copy Sheets("Sheetj").Cells(i,1)
i = i + 1
Else
Sheets.Add After:=Sheets(Sheets.Count)
j = j + 1
.Cells("i:i").copy Sheets("Sheetj").Range("A3")
i = i + 1
End If
end with
Application.CutCopyMode = False
loop 'you forgot a ending loop