【问题标题】:Excel VBA copy and paste within loopExcel VBA在循环内复制和粘贴
【发布时间】:2017-05-23 19:29:59
【问题描述】:

第一篇文章在这里。谢谢你的帮助。我有现有的 VBA 循环,它遍历名称列表并创建一个 PDF,其中包含特定于员工(名称)的信息“声明”。我想从选项卡 A 捕获循环内每个员工的信息,并将其粘贴到另一个工作表(相同的工作簿,不同的选项卡)选项卡 B。请参阅包含的图像。我还粘贴了我当前的循环。非常感谢您的帮助。我想我需要在现有代码中的“下一步”之前插入一些函数或其他内容。只是不确定。在这方面有点新意。再次非常感谢。

Sub Loop_Through_List()

Dim cell                  As Excel.Range
Dim rgDV                  As Excel.Range
Dim DV_Cell               As Excel.Range

Set DV_Cell = Range("B4")

Set rgDV = Application.Range(Mid$(DV_Cell.Validation.Formula1, 2))
For Each cell In rgDV.Cells
    DV_Cell.Value = cell.Value
    Call PDFActiveSheet
Next
End Sub

Function GetFolder() As String
Dim dlg                   As FileDialog
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
dlg.InitialFileName = ThisWorkbook.Path & "\"
dlg.Title = "Select folder to save PDFs"
If dlg.Show = -1 Then
    GetFolder = dlg.SelectedItems(1)
End If
End Function

【问题讨论】:

  • 你有什么问题?您当前的循环是否有效,只需要调整一些东西吗?它不工作吗?等等...你能澄清一下吗?
  • 是的,当前循环工作正常。只需要按照我最初的帖子中的描述让它做其他事情。
  • 我确实注意到我在上面粘贴的代码中遗漏了一部分。因此,这里缺少 Sub PDFActiveSheet。否则,当前代码很好。我只需要在现有代码中添加一些功能即可进行上述复制/粘贴。

标签: vba excel


【解决方案1】:

要在工作表之间移动数据,您可以使用如下方式:

Dim TabA as Worksheet, TabB as Worksheet
Set TabA = ThisWorkbook.Worksheets("Tab A")
Set TabB = ThisWorkbook.Worksheets("Tab B")

TabB.Range("C2")=TabA.Range("I21").Value2

要解决将总数放在右行的问题,您可以使用 .Find 方法:

Dim SearchText as String
Dim datarow as Long
SearchText=TabA.Range("B4")
datarow = TabB.Cells.Find(What:SearchText, After:=Range("A1"), LookIn:=xlValues, LookAt:=xlWhole, searchorder:xlByColumns, searchdirection:=xlNext).Row
TabB.Cells(datarow, 3)=TabA.Range("I21").Value2

您可以扩展上述内容以动态选择列。

【讨论】:

  • 谢谢,这是非常好的帮助。我可以按照您的说明进行操作,以动态选择合适的行来放置数据。我正在尝试根据您的代码找出/复制行和列的动态选择。这将帮助我学习。我将在此处发布进度或寻求更多帮助。非常感谢。
  • 很高兴我能帮上忙。我自己还是一个 VBA 新手,并且在 stackoverflow 上学到了很多东西。我匹配该季度的第一直觉是使用.Find 搜索TabA.Range("B2")。您可以在我的回答中使用大部分相同的命令,但将 searchorder 更改为 xlByRows
  • 再次感谢。我进行了扩展以选择列,效果很好。就像我问的那样。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 2020-08-10
相关资源
最近更新 更多