2017-05-23 89 views
0

第一篇文章在这里。谢谢你的帮助。我有一个现有的VBA循环,它运行一个名称列表,并创建一个带有特定于员工(名称)信息的“语句”的PDF。我想从标签A中捕获循环内每个员工的信息,并将其粘贴到另一个工作表(同一工作簿,不同标签)的标签B中。请参阅包含的图像。我也粘贴了我目前的循环。非常感谢您的帮助。我想我需要在我现有的代码中的“Next”之前插入一些函数或其他东西。只是不确定。在这个新的排序。非常感谢。 Image Example of Excel TabsExcel VBA复制并粘贴循环内

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 
+0

你的问题是什么?你目前的循环是否正常工作,只需要调整一些东西?它不起作用吗?等等...你能澄清一下吗? – BruceWayne

+0

是的,电流回路正常工作。只需要让它按照我的初始文章中的描述做其他事情。 –

+0

我注意到我遗留了一部分代码,我粘贴在上面。因此,这里没有Sub PDFActiveSheet。否则,当前的代码很好。我只需要将一些功能投入到上述复制/粘贴的现有代码中即可。 –

回答

0

要在工作表之间移动数据,你可以使用这样的事情:

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 

您可以根据上面的说明来动态选择列。

+0

谢谢,这是非常好的帮助。我可以按照您的说明操作,以动态选择适当的行来放置数据。我正在试图找出/复制根据您的代码动态选择行和列。这将帮助我学习。我会在这里发布进度,或者要求提供额外的帮助。非常感谢。 –

+0

很高兴我能帮到你。我自己还是一个VBA新手,并且在stackoverflow上学到了很多东西。我的第一个本能匹配季度将是使用'.Find'来搜索'TabA.Range(“B2”)'。您可以在我的答案中使用大部分相同的命令,但将searchorder更改为'xlByRows' – MattD

+0

再次感谢。我把扩展选择列,它很好。就像我在问。再次感谢你的帮助。 –