【问题标题】:VBA Loop Copy, paste and do other VBAVBA 循环复制、粘贴和执行其他 VBA
【发布时间】:2020-08-25 20:46:40
【问题描述】:

我在循环和尝试学习现有宏方面相对较新。我什至都在努力开始,我觉得自己是一种简单的方法。我从 B6 的一个工作簿中开始有一系列数据,并且该列表可能永远存在。我希望我的循环做的是:

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

【问题讨论】:

  • ' 运行值循环并粘贴到 DATA ALL i = 1 直到 Workbooks("MAIN").Sheets("Main").Range("Values").Offset(i, 0) = "" Cusips = Workbooks("MAIN").Sheets("Main").Range("Values").Offset(i, 0) Workbooks("RUN").Activate Sheets("RUN").Activate Range(" F1VALUE") = Values DATA ALLALLV Range("A11:X11").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Workbooks("DATA ALL").Activate With Sheets("DATA ALL") .Range("A" & rows.count).End(xlUp).Offset(1) .PasteSpecial Paste:=xlPasteValues .PasteSpecial Paste:=xlPasteFormats End With i = i + 1 Loop

标签: excel vba loops copy paste


【解决方案1】:

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

在 Workbook#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

打开所有工作簿并明确引用所有内容后,无需运行多个 VBA 过程或担心正在复制或使用哪些数据。

我知道 Python 人喜欢它的弱类型化,但是如果你利用 VBA 的强类型化和对象关联,那么编程将变得轻而易举,而随后来维护你的程序的人会更快乐。

【讨论】:

  • 所以我打算在发布原始帖子时粘贴我的 VBA。这就是我想出的。不像你的漂亮和邋遢。我面临的问题是,如果我的值以“0”开头或其中包含“E”,则会与数据混淆。 “0”被截断,“E”值变成科学格式。
  • 如果您直接从一个单元格复制到另一个单元格,那么 Excel 可能会尝试找出您的数据是什么,并且当它是一个字符串时错误地认为它是一个数字。但是,如果您 Dim 一个字符串变量并将该变量设置为第一个单元格的内容,然后使用 String 变量设置第二个单元格的内容,那么 Excel 将不会试图超越您并将其复制到另一张表中一个数字。
猜你喜欢
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 2015-12-02
  • 2019-01-23
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
相关资源
最近更新 更多