最初のものが最初です - 私は完全なVBAの初心者です。私がまとめたコードは完全な試行錯誤でした。Excel vbaは水平リストに基づいて既存のワークシートをコピーします
「統計」ワークシートの行6の部門名の水平リストに基づいて、既存のワークシート(「テンプレート」という名前の)のコピーを作成できるようにするコードを作成しようとしています(セルF6)。ドキュメントに含める必要のある新しい部門については、ユーザーは次のセル(G6、H6など)に新しいタイトルを追加するだけで、ボタンを押してvbaを実行すると、新しいタイトルが表示された新しいワークシートが表示されますワークシートのタイトル。
私がこれを行うために必要な理由は、部門データに基づいてパーセンテージを計算するためにINDIRECT関数を使用していて、今後何かを変更する方法を知っているブックを使用する人には頼りたくはありません。 Excel(つまり、既存のワークシートをコピーして貼り付け、名前を変更してリストを適切に更新する)。
私が一緒に置かれているコードは、このです:
Sub New_worksheet()
Dim j As Integer
Dim ws As Worksheet
Dim sh As Worksheet
Set ws = Sheets("Template")
Set sh = Sheets("Statistics")
Set Rng = Cells(6, Columns.Count).End(xlToLeft)
Application.ScreenUpdating = 0
For j = 5 To Rng.Column
Sheets("Template").Copy Before:=sh
ActiveSheet.Name = sh.Range("6" & j).Value
Next j
End Sub
しかし、私はActiveSheet.Name = sh.Range( "6" & J).Valueの一部の問題を取得します。私はコードの残りの部分で問題を整理したと思いますが、デバッグを続けるので、わかりません。
誰でも助けてください。
マクロレコーダをすばやく使用すると、「範囲」は列の形式である必要があります。 'Range(" A1 ")'となります。 'Range'ではなく' Cells'を使用して既存の処方を維持することができます。 – SJR