テーブルをインポートして、エンドユーザーに関係のない列を非表示にするコードがあります。VBA - 表示されている列に貼り付けをコピーする
フォーマットプロセスの一環として、Excelの差し込み印刷されたセルと結合されていないセルで構成されるヘッダーをExcelに追加する必要があります。
私の問題は、いくつかの列が隠されていることを考慮すると、ヘッダーをインポートすることが不可能であることが証明されています。ヘッダーは、多数の非連続列に貼り付ける必要があります。それを行う方法はありますか?
参考のために、最初に列を非表示にするために使用するコードをコピーして貼り付けました。私は代わりに列を削除する方法を見つける必要があると推測しています。その問題は、私がColumns(I).deleteを実行すると、最初の列を削除した後にループが終了するということです。
注:コード内のcountaは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コードにヘッダーを挿入できますか?つまり、**列を非表示にしない場合は、次のヘッダー(どこに格納されているか)を取得し、処理している列の適切な行に挿入します。 (ワークシート変数をいくつか作成し、使用しているワークシートにそれらの変数を 'Set'しておくと、もっと簡単になります。例えば' Set wsSrc = ActiveSheet'を最初に設定し、 'Set wsTempView = ActiveSheet'新しいシートを追加した後、 'Set wsHeaders = Worksheets(" Headers ")'がヘッダシートを指すようにしてください) – YowE3K
なぜ列を削除すると、削除後にコードが終了するのかわかりません。私は**あなたが質問に貼り付けられていない他のコードに応じて、あなたが削除した列の処理をスキップすることができます。あなたのコードはそれが既に処理されていると思う) - しかし、それは単に処理を完全に止めることとは全く異なる問題です。 – YowE3K
さらに調査すると、あなたの言うことが起こっているようです。私はこの問題を間違って解釈していました。あなたは修正として何を提案しますか?私は、列が削除されたかどうかを追跡するための条件を認識していません。 – Adit2789