
下記は
フォーマットというシートをコピーして、
管理者というシートの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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
Excel VBA 大量のレコードからある列の重複数をカウントする方法?拡張編
Visual Basic(VBA)
-
エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい
Visual Basic(VBA)
-
Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、
Visual Basic(VBA)
-
4
セルの値からファイルを複数作りたい2
Visual Basic(VBA)
-
5
【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。
Visual Basic(VBA)
-
6
指定文字を太字にするVBAを別シートのセルを指定する構文(改良について)
Visual Basic(VBA)
-
7
以前シートを集めて1シートへ繋げる下記コードをご教授いただき作成しました。 今回すでに集めてある「ま
Visual Basic(VBA)
-
8
シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要
Visual Basic(VBA)
-
9
【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい
Excel(エクセル)
-
10
【至急】 当方初心者です。 マクロについて知恵をお貸しください。 ★したい動作 ①リストE列2行目か
Visual Basic(VBA)
-
11
追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し
Visual Basic(VBA)
-
12
VBAで出力したCSVファイルの先頭にカンマを挿入したい
Visual Basic(VBA)
-
13
ExcelVBA 日付変更
Visual Basic(VBA)
-
14
【ご教示ください】VBAの記述方法がわかりません。
Visual Basic(VBA)
-
15
【VBA】印刷マクロのループ処理が反映されません
Visual Basic(VBA)
-
16
VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「"」付にならないよ
Visual Basic(VBA)
-
17
Excel マクロで For 文のインデックスを先に宣言する理由
Excel(エクセル)
-
18
パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる
Visual Basic(VBA)
-
19
【マクロ】フォルダを3つ、POモニター上に、決まった並べ方をしたい
Excel(エクセル)
-
20
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
別のシートから値を取得するとき
-
5
【ExcelVBA】全シートのセルの...
-
6
VBA 存在しないシートを選...
-
7
【VBA】指定した検索条件に一致...
-
8
excelのマクロで該当処理できな...
-
9
XL:BeforeDoubleClickが動かない
-
10
ユーザーフォームに入力したデ...
-
11
【VBA】特定の文字が入っている...
-
12
【Excel】指定したセルの名前で...
-
13
VBA 検索して一致したセル...
-
14
C#でExcelのシートを選択する方法
-
15
Excel VBA での計算について…
-
16
エクセルVBA Ifでシート名が合...
-
17
ExcelのVBAのマクロで他のシー...
-
18
指定文字が含まれるシートを削...
-
19
エクセル VBA 特定文字がある行...
-
20
SheetsクラスのSelectメソッド...
おすすめ情報
公式facebook
公式twitter