我有一个代码导入一个表,然后继续隐藏与最终用户无关的列。VBA - 复制粘贴到可见列
作为格式化过程的一部分,我需要添加一个标题到由合并和未合并单元组成的excel文档。
我的问题是,考虑到一些列已被隐藏的事实,这是不可能导入标题。标题需要粘贴在许多非顺序列中。有没有办法做到这一点?
仅供参考我已复制粘贴了我用来隐藏列的代码。我猜测我需要找到一种方法来删除列。这样做的问题是,如果我执行Columns(I).delete,则循环在删除第一列后结束。
注意:代码中的计数会产生17列。为了保密,我改变了我在if条件中检查的一些命名和列数。如果有任何其他的信息,你需要请让我知道
编辑:经进一步调查和YowE3K的评论在代码中的问题是,它是跳过给定列的处理一个被删除之后(因为它是现在在专栏中,我将代码认为它已经处理)
Sub NewView()
ActiveWindow.DisplayHeadings = False
Application.ScreenUpdating = False
ActiveSheet.Range("A14:Z14").Copy
ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)
ActiveWorkbook.ActiveSheet.Name = "Temp_View"
ActiveWorkbook.Sheets("Temp_View").Activate
Worksheets("Temp_View").Range("B1").Formula = "=COUNTA($8:$8)"
ActiveSheet.Range("B8").PasteSpecial _
Paste:=xlPasteValues
Dim countUsedCols As Long
countUsedCols = ActiveWorkbook.Sheets("Temp View").Range("B1").Value
Dim currentColName As String
Dim newColName As String
For i = 2 To countUsedCols + 1
currentColName = ActiveSheet.Cells(8, i).Value
If currentColName <> "Salary" and currentColName<>"Net Worth" Then
ActiveSheet.Columns(i).Select
Selection.EntireColumn.Hidden = True
'Selection.EntireColumn.Delete
您可以在VBA代码中插入标头吗?即每次** **不**时隐藏一列,将下一个标题(从您存储的任何位置开始)放入正在处理的列的相应行中。 (如果你创建一些'Worksheet'变量并将其中的每一个变量设置为你正在使用的工作表 - 例如''在开始时设置wsSrc = ActiveSheet',然后'设置wsTempView = ActiveSheet',在添加新工作表后,并将'Set wsHeaders = Worksheets(“Headers”)'指向标题表)。 – YowE3K
我看不出为什么删除列会导致代码在删除后结束。我**可以**看到它会(取决于你有没有被粘贴到问题中的其他代码)在删除之后跳过列处理(因为它现在在列“i”中你的代码认为它已经处理完毕) - 但这完全不同于完全停止处理的问题。 – YowE3K
经过进一步调查,似乎你所说的正在发生。我错误地解释了这个问题。你会建议做什么修复?我不知道有一个条件允许我跟踪列是否被删除或不是 – Adit2789