エクセルのマクロの自動記録で作業の効率化を図りたいのですがうまく出来ません、ご教示いただけ無いでしょうか。
(VBAは初心者です。本とネットを検索しながら作成していたのですが、
急きょファイルを作成しなければいけない状況になりました。)
■Excel2010
■ブック詳細
・Sheet"企業一覧" → 行ごとに企業名、シート名が記載された表があります。
A列 企業名
B列 シート名
・Sheet"マスタ" → 見積書のフォーマットがあります。
A4 企業名
■希望作業
シート「企業一覧」の企業ごとにボタンを作り、ボタンを押すと
1."マスタ(Sheet)"のコピーが作成され、
2.コピーされたシートのA4セルに"企業一覧(Sheet)"A列の企業名が記載され、
3.コピーされたシート名に"企業一覧(Sheet)"のB列のシート名が記載され、
4."企業一覧(Sheet)"のB列のシート名に新しいシートへのハイパーリンクを付け
5."企業一覧(Sheet)"に戻る
※下記作業ができません。
・コピーされた新しいシートに、シート名が付けられない。
・"企業一覧(Sheet)"のシート名にコピーされた新しいシートへのハイパーリンクを付けられない。
※シートのコピーは可能なら"企業一覧(Sheet)"の企業名表記順に作成したいと思っています。
※各企業行ごとにボタンを作るのは面倒なのですが、
企業名/シート名の表記がよく変更になるため、入力と同時にマクロが実行されるのではなく、
何かワンクッションを置きたいと思っています。
※シートのコピー作成、企業名の記載までは出来たのですが、
その他の作業ができません。よろしくお願いいたします。
---------------------------
Sub Sheet作成()
'
' Sheet作成 Macro
'
'
Sheets("マスタ").Select
Sheets("マスタ").Copy After:=Sheets("マスタ")
Range("A4:B4").Select
ActiveCell.FormulaR1C1 = "=企業一覧!R8C1"
Range("C4").Select
Exit Sub
End Sub
--------------------------
No.1ベストアンサー
- 回答日時:
変更点:
1.マクロを取り付けるボタンは「1つだけ」用意する事として,「現在選ばれているセル」のシートを作成することにします
(複数セル選択可。不連続セルの選択可。マクロボタンは記号一覧シートに作成すること。)
2.選択されたデータの該当するシートが「既に作成済み」である場合は,既存の該当企業シートを「削除」し,新たに作成することにします
3.新しいシートの「どこへの」ハイパーリンクを付けたいのか不明なのでA4にする
4.リストB列の記載が「不適切なシート名」だった場合は無視して続行する
sub macro1()
dim h as range
application.screenupdating = false
on error resume next
for each h in application.intersect(selection.entirerow, range("A:A"))
if h <> "" then
’既存シートを削除する
application.displayalerts = false
worksheets(h.offset(0, 1).value).delete
application.displayalerts = true
’シートを作成する
worksheets("マスタ").copy after:=worksheets(worksheets.count)
activesheet.name = h.offset(0, 1).value
range("A4").formula = "=企業一覧!" & h.address
h.offset(0, 1).hyperlinks.delete
worksheets("企業一覧").hyperlinks.add anchor:=h.offset(0, 1), address:="", subaddress:= h.offset(0, 1) & "!A4"
end if
next
’シートを並べ替える
worksheets("企業一覧").select
for each h in range("B2:B" & range("B65536").end(xlup).row)
worksheets(h.value).move after:=worksheets(worksheets.count)
next
worksheets("企業一覧").select
application.screenupdating = true
end sub
ありがとうございました。
初歩的な質問で恥ずかしい(申し訳ない)のですが、
1.「現在選ばれているセル」「不連続セルの選択可」とご記載頂いていますが、
セルは企業名のセルをCtrl+マウスの左クリックで選択してからボタンを押せばよいのでしょうか…?
ネットで記載していただいたコードを調べながらやってみたのですがうまくいきません…。
「Entire(全体の)+Row(行)」
2.なお、ハイパーリンクは企業一覧のシート名が書かれたセルに
新しく作成されたシートへのハイパーリンクを付けたいと思っています。
(企業一覧シートは「企業名、シート名」が記載され、
ハイパーリンクで各シートに飛べる目次のようなイメージのシートにしたいと思っています)
No.4
- 回答日時:
こんばんは!
企業一覧SheetのA列セルをダブルクリックの操作ではどうでしょうか?
画面左下の「企業一覧」SheetのSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてA列(企業名)をダブルクリックしてみてください。
アップされている画像通り、「企業一覧」Sheetの企業データは
A8セル以降にあるとしています。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub
If Target.Row > 7 And Target <> "" Then
Cancel = True
Dim i, k As Long
Dim str As String
i = Target.Row
str = Cells(i, 2)
For k = 3 To Worksheets.Count
If Worksheets(k).Name = str Then
Worksheets(k).Cells(4, 1) = Cells(i, 1)
End If
Next k
Worksheets(2).Cells.Copy
Worksheets.Add after:=Worksheets(Worksheets.Count)
On Error GoTo 1
With ActiveSheet
.Cells(1, 1).Select
.Paste
.Name = Cells(i, 2)
.Cells(4, 1) = Cells(i, 1)
End With
ActiveSheet.Cells(1, 1).Select
Application.CutCopyMode = False
Exit Sub
1:
Application.DisplayAlerts = False
Worksheets(Worksheets.Count).Delete
Application.DisplayAlerts = True
Worksheets(str).Activate
ActiveSheet.Cells(1, 1).Select
Exit Sub
End If
End Sub
※ ご希望の方法でなかったらごめんなさいね。m(_ _)m
ありがとうございました。
ほぼ希望の作業だったのですが、2件対応されていませんでした…。
・企業一覧のシート名に新しいシートへのリンクを付ける
・企業一覧のリスト順にシートを並び替える。
ただ、ダブルクリックで動作が行うことができるなど
考えもつかなかったので、次回利用させていただきたいと思います。
ありがとうございました。
No.3
- 回答日時:
マクロの使い方から説明しなきゃダメですか。
何をしたら「どうダメだった」のか具体的な状況のご説明がありませんので,どこを間違っているともどうしたらいいとも,「回答したとおりにちゃんとやれば出来ますよ」としかアドバイスのしようがありません。
次の通りにもう一回やって下さい:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに,回答のマクロを漏れなくコピー貼り付ける
ファイルメニューから終了してエクセルに戻る
企業一覧のシートにオートシェイプの四角形を一個描画する
右クリックしてマクロの登録を行い,さっきコピーしたMacro1を登録する
8行目から15行目までデータを正しく記入しておく。A列に企業名,B列にシート名。
A8,B9:B10,C12などをコントロールキーなどを押しながら飛び飛びで選択する
オートシェイプに取り付けたマクロをクリックして実行する。
ご連絡が遅くなり申し訳ありません。
出来ました!!
感動して何度もボタンを押し、大量にSheetを作成してしましました。
先日はもともと作成してあったボタンに「Macro1」を登録していたのですが、
新規でオートシェイプから四角形を作成したらうまくいきました!
ありがとうございました。
No.2
- 回答日時:
Sheet"企業一覧のシート名のシートがまだ存在しない状態からマクロを実行する事を前提としています。
もし存在していればエラーになります。(エラーの処理はしていません。)
Sub Sheet作成()
Set WS01 = Worksheets("企業一覧")
For i = 1 To WS01.Cells(Rows.Count, 1).End(xlUp).Row
Sheets("マスタ").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Range("A4").FormulaR1C1 = "=企業一覧!R[" & i - 4 & "]C"
Sheets(Sheets.Count).Name = WS01.Range("B" & i)
WS01.Range("B" & i).Hyperlinks.Delete
WS01.Hyperlinks.Add anchor:=WS01.Range("B" & i), Address:="", SubAddress:= _
WS01.Range("B" & i) & "!A4"
Next i
WS01.Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのマクロで指定条件一...
-
シートをコピーして シートに...
-
【マクロ】毎回、ファイル名が...
-
VBAでシートコピー後、シート名...
-
条件に応じて特定の行を非表示...
-
エクセルでファイルを開いたと...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルの複数シートの保護を...
-
EXCEL:同じセルへどんどん足し...
-
Excelで金銭出納帳。繰越残高を...
-
特定のシートの削除を禁止した...
-
excelでシート毎の最終更新日を...
-
別シート参照のセルをシート毎...
-
エクセルVBAでパスの¥マークに...
-
Excel、同じフォルダ内のExcel...
-
シートの保護のあとセルの列、...
-
エクセルで毎回1枚目のシートを...
-
エクセルのシート名をリスト化...
-
前の(左隣の)シートを連続参...
-
複数シートの特定の位置に連番...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】毎回、ファイル名が...
-
【マクロ】顧客番号にて一致さ...
-
エクセルのマクロで指定条件一...
-
シートをコピーして シートに...
-
Excel マクロ 他ブックのシート...
-
Excel シートを自動作成、セル...
-
EXCELVBA データを自動で別シー...
-
シートをコピー、シート名を変更
-
エクセルのマクロ設定について...
-
Excelでシート名と最終更新日を...
-
Excel で選択しているセルの行...
-
Excel VBA 検索して該当行を抽出
-
新しいマクロの記録でコピーし...
-
エクセル マクロ 任意のファ...
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
条件に応じて特定の行を非表示...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
VBAでシートコピー後、シート名...
おすすめ情報