我有一個代碼導入一個表,然後繼續隱藏與最終用戶無關的列。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