Excel 复制并粘贴具有相同图纸名称的值
我有一个VBA程序,它需要根据表名复制和粘贴值。Excel 复制并粘贴具有相同图纸名称的值,excel,vba,Excel,Vba,我有一个VBA程序,它需要根据表名复制和粘贴值。 图纸名称将在特定列(Bin列)上提取,并将作为添加工作表的名称基础。是否有一种方法可以复制这些值并根据它们的Bin值粘贴它们 例如,我的bin值是QWE、RTY、UIO,它们在原始工作表上重复,这就是我创建列表的原因。然后在创建列表后,SubCreateSheets()将创建工作表QWE、工作表RTY和工作表UIO。我的问题是如何根据工作表名称和设置编号粘贴值 样本数据表 这是我提取并创建一个箱子列表(删除重复值)的代码 Sub BIN\u
图纸名称将在特定列(Bin列)上提取,并将作为添加工作表的名称基础。是否有一种方法可以复制这些值并根据它们的Bin值粘贴它们 例如,我的bin值是
QWE、RTY、UIO
,它们在原始工作表上重复,这就是我创建列表的原因。然后在创建列表后,SubCreateSheets()
将创建工作表QWE
、工作表RTY
和工作表UIO
。我的问题是如何根据工作表名称和设置编号粘贴值
样本数据表
这是我提取并创建一个箱子列表(删除重复值)的代码
Sub BIN\u value\u List()
暗选择范围
将ws设置为工作表
范围(“F3:F”和范围(“F”和Rows.Count)。结束(xlUp.Row)。选择
设置rSelection=Selection
设置ws=工作表。添加
ws.Name=“BIN列表”
R选择,收到
带ws.Range(“A1”)
.Paste特殊XLPaste值
.Paste特殊XLPaste值
以
ws.UsedRange.RemoveDuplicates列:=数组(1),头:=xlGuess
出错时继续下一步
ws.UsedRange.SpecialCells(xlcelltypebanks)。删除移位:=xlShiftUp
错误转到0
ws.Columns(“A”).AutoFit
Application.CutCopyMode=False
End Sub
这似乎是您要编码的方案:-
循环浏览工作表“BIN列表”中的所有行,并将每个项目复制到“BIN”列指示其名称的工作表中。如果工作表不存在,请将其添加到工作簿中
您已经有了一个调用每一行的循环,但是您需要重新调整它的用途,以便执行所需的操作,即复制数据并粘贴到另一个工作表。使用下面的函数获取工作表。如果工作表不存在,它将以正确的名称创建工作表。我将其设置为Private
,因为它将由您的主过程调用,该过程可能是Public
Private Function CurrentSheet(ByVal SheetName As String) As Worksheet
Dim Fun As Worksheet ' function return object
Dim AppStatus As Boolean ' current setting of ScreenUpdating
Dim Ws As Worksheet ' ActiveSheet
With ThisWorkbook
On Error Resume Next
Set Fun = Worksheets(SheetName)
If Err Then
' the error that occured results from the sheet not being available
With Application
AppStatus = .ScreenUpdating ' remember current setting
.ScreenUpdating = False ' disable updating
End With
Set Ws = ActiveSheet ' remember the current ActiveSheet
' this will create a new sheet and activate it
Set Fun = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
Fun.Name = SheetName
' return the status to what it was
Ws.Activate
Application.ScreenUpdating = AppStatus
End If
End With
Set CurrentSheet = Fun
End Function
而且,更重要的是,您必须绝对避免激活工作表和选择任何内容。您可以读取和写入任何工作表,无论其是否处于活动状态或可见状态。您的工作应该放在保持工作表处于活动状态上,该工作表在用户启动宏时处于活动状态
上述函数将从循环中调用,并从BIN列表中获取所需的参数(工作表名称)。但是为了测试的目的,你可以使用这个小程序,就像我一样
Sub Test_CurrentSheet()
Dim Ws As Worksheet
Set Ws = CurrentSheet("QWE")
Debug.Print Ws.Name
End Sub