Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel宏在循环未编译时执行_Excel_Vba - Fatal编程技术网

Excel宏在循环未编译时执行

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

这是一个简单的代码,可以转到工作表拉一行,返回到第一张工作表并粘贴它,然后重复,直到库存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
        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