下記は
フォーマットというシートをコピーして、
管理者というシートのA列のセル名から一括でシート名にしていくVBAです。
Sub 管理者()
Dim Data As Worksheet
Dim ws As Worksheet
Dim i As Long
Dim LastRow As Long
Set Data = Sheets("管理者")
Data.Select
LastRow = Data.Cells(Rows.Count, 2).End(xlUp).Row
Application.ScreenUpdating = False
For i = 2 To LastRow
Sheets("フォーマット").Copy Before:=Data
ActiveSheet.Name = Data.Cells(i, 2)
Set ws = ActiveSheet
ws.Range("B1") = Data.Cells(i, 1).Value
ws.Range("B2") = Data.Cells(i, 2).Value
ws.Range("B3") = Data.Cells(i, 3).Value
ws.Range("D1") = Data.Cells(i, 4).Value
ws.Range("D2") = Data.Cells(i, 5).Value
ws.Range("D3") = Data.Cells(i, 6).Value
ws.Range("D4") = Data.Cells(i, 7).Value
Next i
Application.ScreenUpdating = True
End Sub
フォーマットというシートには数式が入っています。
シート作成後に、下記範囲の数式は値で貼り付けしたいのですがどのようにすればよいでしょうか。
値で貼り付けしたいセル範囲
A1:P4
A44:B46
A48:B50
ご教授いただければ幸いです。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
#1 です
間違ってしまいました
ws.Range("B1").Resize(3).Value = Data.Cells(i, 1).Resize(3).Value
ws.Range("D1").Resize(4).Value = Data.Cells(i, 4).Resize(4).Value
ご質問部分でないので忘れて頂くか、下記のように訂正します
ws.Range("B1").Resize(3).Value = Application.Transpose(Data.Cells(i, 1).Resize(, 3).Value)
ws.Range("D1").Resize(4).Value = Application.Transpose(Data.Cells(i, 4).Resize(, 4).Value)
あと、: P4などの変な半角スペースも削除して・・・
ありがとうございます、やりたいことができました
結合してたせいか、うまくいかなかったので下記のようにしました
'値で貼り付ける
ws.Range("A1:R8").Value = ws.Range("A1:R8").Value
ws.Range("A44:B46").Value = ws.Range("A44:B46").Value
No.3
- 回答日時:
>結合してたせいか・・
なるほど、取敢えず良かったです
>そうなんです、同名シートがある場合があるので、最初に消しています
範囲にある値の シートを削除するコードなどを加える事も可能かと・・
ただ、同名でないシートがどんどん増える状況が困るなら
管理者シートと 例えばフォーマットシートの間のシートを
インデックスですべて削除するコードとか・・・
要件、使用によって変わってくるところですね
実行ブックでなく新規ブックにシートを出力、作るとか、
シート別に別ブックを作るとか・・なんて方法も考えられますね
もし加える又は要件を変更するなどで判らなく躓いた時は
私などより高いスキルの方がいらっしゃいますので良いアドバイスをしてくれると思います。また質問を建ててください
No.1
- 回答日時:
こんにちは
ご質問を間違って解釈していたら忘れてください
Sheets("フォーマット").Copy Before:=Data
ActiveSheet.Name = Data.Cells(i, 2)
Set ws = ActiveSheet
ws.Range("A1: P4,A44: B46,A48: B50").Value = ws.Range("A1: P4,A44: B46,A48: B50").Value
ws.Range("B1").Resize(3).Value = Data.Cells(i, 1).Resize(3).Value
ws.Range("D1").Resize(4).Value = Data.Cells(i, 4).Resize(4).Value
ちなみにないとは思いますが
ActiveSheet.Name = Data.Cells(i, 2)
同名シートがあるとエラーになりそうですね・・・
ActiveSheet.Name = Data.Cells(i, 2)
そうなんです、同名シートがある場合があるので、最初に消しています
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
【VBA】色のついたシート名を取得
-
セルの値によって、シート見出...
-
ブック名、シート名を他のモジ...
-
別のシートを参照して計算する方法
-
XL:BeforeDoubleClickが動かない
-
VBAで同じシート名のコピー時は...
-
マクロを使って、シート印刷完...
-
ExcelのVBAのマクロで他のシー...
-
VBA 存在しないシートを選...
-
VBA 最終行まで数式をコピーする
-
特定の文字を含むシートだけマ...
-
【Excel VBA】Worksheets().Act...
-
Access エクセルシート名変更
-
ExcelVBA シート名を複数セルか...
-
エクセルVBA 別シートからのコ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報