Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 VBA循环复制、粘贴和执行其他VBA_Excel_Vba_Loops_Copy_Paste - Fatal编程技术网

Excel VBA循环复制、粘贴和执行其他VBA

Excel VBA循环复制、粘贴和执行其他VBA,excel,vba,loops,copy,paste,Excel,Vba,Loops,Copy,Paste,我比较新的循环,并试图学习我现有的宏。我甚至很难从一开始就觉得自己是一个简单化的方法。我有一系列的数据从B6上的一个工作簿开始,这个列表可能会一直存在下去。我想让我的循环做的是: 副本B6 转到其他工作簿将其粘贴到单元格中 运行另一个VBA 将使用#2值的#3踢出数据复制并粘贴到#1工作簿的另一张工作表中 循环并转到B7,从头开始。一个变化是在B7完成后,它将粘贴到之前已粘贴在#4中的数据下方 我不知道为什么您需要在一个工作簿中使用多个VBA过程来执行此操作 在工作簿#1中,我将有一个如下开始的

我比较新的循环,并试图学习我现有的宏。我甚至很难从一开始就觉得自己是一个简单化的方法。我有一系列的数据从B6上的一个工作簿开始,这个列表可能会一直存在下去。我想让我的循环做的是:

  • 副本B6
  • 转到其他工作簿将其粘贴到单元格中
  • 运行另一个VBA
  • 将使用#2值的#3踢出数据复制并粘贴到#1工作簿的另一张工作表中
  • 循环并转到B7,从头开始。一个变化是在B7完成后,它将粘贴到之前已粘贴在#4中的数据下方

  • 我不知道为什么您需要在一个工作簿中使用多个VBA过程来执行此操作

    在工作簿#1中,我将有一个如下开始的子程序:

    Dim wb1 as Workbook, wb2 as Workbook, wb3 as workbook
    Dim iRow1 as Long, iRow2 as Long, iRow3 as long
    Dim data1 as Variant, ws1 as Worksheet, ws2 as Worksheet, ws3 as Worksheet
    
    set wb1 = ThisWorkbook
    set wb2 = ThisWorkbook.Application.Workbooks.Open  <Your workbook filename>
    set wb3 = ThisWorkbook.Application.Workbooks.Open  <Your other workbook filename>
    set ws1 = wb1.Worksheets("MySheet1")
    set ws2 = wb2.Worksheets("MySheet2")
    set ws3 = wb3.Worksheets("MySheet3")
    
    iRow1 = 6
    iRow2 = 1
    Do while len(ws1.cells(iRow1, 2)) > 0
        data1 = ws1.cells(iRow1, 2)
        ws2.cells(iRow2, 1) = data1
        iRow2 = iRow2 + 1
    
        [Rest of Your Code]
    
        iRow = iRow + 1
    Loop
    
    Dim wb1作为工作簿,wb2作为工作簿,wb3作为工作簿
    调暗iRow1为长,iRow2为长,iRow3为长
    Dim data1作为变量,ws1作为工作表,ws2作为工作表,ws3作为工作表
    设置wb1=ThisWorkbook
    设置wb2=thiswoolk.Application.Workbooks.Open
    设置wb3=ThisWorkbook.Application.Workbooks.Open
    设置ws1=wb1.工作表(“MySheet1”)
    设置ws2=wb2.工作表(“MySheet2”)
    设置ws3=wb3.工作表(“MySheet3”)
    iRow1=6
    iRow2=1
    Do while len(ws1.cells(iRow1,2))>0
    data1=ws1.cells(iRow1,2)
    ws2.cells(iRow2,1)=数据1
    iRow2=iRow2+1
    [代码的其余部分]
    iRow=iRow+1
    环
    
    所有工作簿都已打开,所有内容都已明确引用,因此无需运行多个VBA过程,也无需担心复制或使用了哪些数据


    我知道Python的人喜欢它的弱类型,但是如果你利用VBA强大的类型和对象关联,那么编程将是一件轻而易举的事,之后来维护你的程序的人会更高兴。

    所以我在发布我的原始帖子时打算粘贴我的VBA。这就是我想到的。没有你的漂亮,邋遢。我所面临的问题是,如果我的值以“0”开头,或者其中有一个“E”,那么它会弄乱数据。“0”被截断,“E”值转换为科学格式。如果您直接从一个单元格复制到另一个单元格,Excel可能会尝试找出您的数据是什么,并且错误地认为它是一个数字,而不是一个字符串。但是,如果将字符串变量调暗并将该变量设置为第一个单元格的内容,然后使用字符串变量设置第二个单元格的内容,则Excel不会试图比您更聪明,并将其作为一个数字复制到另一个工作表。“运行值循环并粘贴到所有i=1所做的数据,直到工作簿(“MAIN”).Sheets(“MAIN”).Range(“值”).Offset(i,0)=“Cusips=workbook(“MAIN”)。Sheets(“MAIN”)。Range(“value”)。Offset(i,0)workbook(“RUN”)。激活Sheets(“RUN”)。激活Range(“F1VALUE”)=值数据alllv Range(“A11:X11”)。选择Range(Selection,Selection.End(xlDown))。选择Selection。复制工作簿(“DATA ALL”)。使用Sheets(“DATA ALL”)。Range(“A”和rows.count)激活。结束(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues.PasteSpecial Paste:=xlPasteFormats以i=i+1循环结束