首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vba将特定列从非活动工作表复制到excel工作表

使用vba将特定列从非活动工作表复制到excel工作表
EN

Stack Overflow用户
提问于 2018-04-03 19:53:51
回答 1查看 217关注 0票数 0

我的excel工作簿有下列工作表:

  1. 概述-由描述和按钮组成,应该导出组织中学生的数据。
  2. 九月入学-九月入学的学生详细资料
  3. 简录取-一月份被录取的学生详细资料
  4. 五月入学-五月入学的学生

第二、第三和第四页包括所有的学术和个人信息。目标是复制和创建一个只有列名、学生Id和词条的excel。为此,有一个按钮放在工作表“概述”中,单击该按钮将生成excel工作表。

以下是用于宏的代码:

代码语言:javascript
复制
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 概述的列复制到新的工作簿中。我该怎么纠正呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 20:44:42

始终记住用Range()对象的工作表和/或工作簿对其进行限定。正如评论中指出的那样:

你有Column(t.Column).Copy。没有给出工作表,所以它使用的是活页。

你想做一些像Ws.Column(t.Column).Copy这样的事情。

类似地,当您粘贴到仅Sheets(ts)时,没有提到工作簿,因此您需要确保首先添加新工作簿的引用,即wb.Sheets(ts)...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49638137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档