我的excel工作簿有下列工作表:
第二、第三和第四页包括所有的学术和个人信息。目标是复制和创建一个只有列名、学生Id和词条的excel。为此,有一个按钮放在工作表“概述”中,单击该按钮将生成excel工作表。
以下是用于宏的代码:
Private Sub CommandButton1_Click()
Dim t As Range
Dim Ws1 As Worksheet
Dim Ws As Worksheet
Dim ts As String
Dim nc As Integer
Dim i As Range
Dim j As Integer
Dim LASTROW As Integer
Dim k As Integer
Dim wb As Workbook
Dim valuessheet As Worksheet
Set Ws1 = Sheets(CStr(ActiveSheet.Range("D3").Value)) 'change control from Overview to Jan Intake
Ws1.Activate
Set Ws = ActiveSheet
Set valuesheet = ThisWorkbook.Sheets("Ref") 'Ref is a hidden sheet that consists the required column name listed in range K3 to K5
Set wb = Workbooks.Add
ts = wb.ActiveSheet.Name
nc = 2
j = 3
For Each i In valuesheet.Range("K3:K5").Cells 'Change range
Set t = Ws.Range("A3:X50").Find(What:=i.Value, lookat:=xlWhole, LookIn:=xlValues, _
MatchCase:=False)
If Not t Is Nothing Then
Columns(t.Column).Copy _
Destination:=Sheets(ts).Cells(1, nc)
nc = nc + 1
Else: MsgBox "Title Not Found"
End If
Next i
End Sub我正在正确地获得t的值,但是宏一直在将sheet 概述的列复制到新的工作簿中。我该怎么纠正呢?
发布于 2018-04-03 20:44:42
始终记住用Range()对象的工作表和/或工作簿对其进行限定。正如评论中指出的那样:
你有Column(t.Column).Copy。没有给出工作表,所以它使用的是活页。
你想做一些像Ws.Column(t.Column).Copy这样的事情。
类似地,当您粘贴到仅Sheets(ts)时,没有提到工作簿,因此您需要确保首先添加新工作簿的引用,即wb.Sheets(ts)...
https://stackoverflow.com/questions/49638137
复制相似问题