
最近VBAの勉強をはじめましたが、わからないことがあるので教えていただけませんでしょうか?
同一ブックにある複数のシートをシート一覧という名前のシートに作成しました。
例)シート一覧
A
1 Sheet1
2 Sheet2
3 Sheet3
・
・
・
シートは増減あり、名称変更ありです。
入力という名前のシートのA1:B3のデータを、それぞれのシートに転記したいのですが、
シートを選択してそのシートへ転記する方法がわかりません。
ワークシート上にリストボックスを作って、そこにシート一覧が表示されています。
そのシート一覧からシート名を選んで隣に設置したコマンドボタンをクリックすると
転記先のシートが選択されるようにしたいのです。
ネットで色々調べてはみたのですが、シート名を指定する方法はあっても、
シートを選択する方法を見つけることができませんでした。
ご教授の程よろしくお願いいたします。
色々検索しながら
No.2ベストアンサー
- 回答日時:
>WorkSheets(リストボックス.Text).Select
シートを選択するとの事の事なのでリストボックスの値で選択する形、、
前段としてシートに作成できるリストボックスは、フォームコントロールとActiveXコントロールがあります。どちらでしょう?
カタカナで書いているのでフォームコントロール?
面倒なので、両方を示します。
>リストボックスの名前も不明なのですが、
右クリックで選択した時に名前ボックスに表示されていませんか?
添付画像で示します。
シート上のコントロールでの実行は設置シートモジュールに書くのが通常です?
リボンのコードの表示などから書いた場合ここに書かれます。が、標準モジュールに書いた場合を示します。
違いは、シートオブジェクトを明示する点です。
テスト(デモ条件)画像にあるようにA列にシート名を書きます。
ブックのシートをシート名同様に作成します。
一番左のシート名をSheet1にしてシートに各コントロールのリストボックスを作成します。
フォームコントロールリストボックスのコントロール書式設定から、 コントロールタブ入力範囲をA1:A5に設定
ActiveXコントロールは下記コードを実行してください。
Sub ListAdd() 'ActiveXコントロールデモ用データ
Dim i As Integer
For i = 1 To 5
Sheets("Sheet1").ListBox1.AddItem Worksheets("Sheet1").Cells(i, 1).Value
Next
End Sub
準備完了です。
下記は、フォームコントロールのリストボックスのリストを選ぶとその値がMsgBoxで表示されます。
Sub リスト1_Change() 'シート上のフォームコントロール
With Sheets(1).ListBoxes("リスト 1")
MsgBox .List(.Value)
End With
End Sub
下記は、ActiveXコントロールのリストを選ぶとその名前のシートが選択されます。
Private Sub ListBox1_Click() 'シート上のActiveXコントロール
Worksheets(Sheets(1).ListBox1.Text).Select 'シートを選択
End Sub
どちらのコントロールか分かりませんが、リストボックスの値の取り方などを参考にされてください。

No.1
- 回答日時:
>シートを選択する方法
Worksheets("選択したいシート名").Select
で選択できます。(他の方法もあります)
>ワークシート上にリストボックスを作って、そこにシート一覧が表示されています。
そのシート一覧からシート名を選んで隣に設置したコマンドボタンをクリックすると
転記先のシートが選択されるようにしたいのです。
コマンドボタンに登録したマクロで
WorkSheets(リストボックス.Text).Select (Value) リストボックスは適正なオブジェクトで
>入力という名前のシートのA1:B3のデータを、それぞれのシートに転記したいのですが、
シートを選択してそのシートへ転記する方法がわかりません。
Sheets("選択シート名").Range("A1:B3").Value=Sheets("入力").Range("A1:B3").Value
Rangeの範囲は同じでなければなりません。
Sheets("選択シート名").Range("A1").Resize(3,2).Value=Sheets("入力").Range("A1:B3").Value
のような書き方も出来ます。
選択シート名などは、String型の変数名を入れる事も出来ます。
Dim シート名 As String '変数名は2バイト文字も使えます。(VBAの場合)
シート名=リストボックス.Text ’リストボックスは適正なオブジェクト名で
Sheets(シート名).Range("A1").Resize(3,2).Value=Sheets("入力").Range("A1:B3").Value
リストボックスの表示されている名前のシートが無ければ、エラーが返されます。
>シートは増減あり、名称変更ありです。
>シート名を指定する方法はあっても、
がんばって、学習する為に残します。
シート名を取得するやすべてのシートを~などで調べてみてください。
自身で調べ検証、実験するのが良いと思いますので、、あしからず。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) エクセルマクロ初心者です aブックからbブックの転記がしたいのですがbブックのシートを指定するコード 5 2023/03/15 17:09
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Visual Basic(VBA) 2つの条件に合うセルにデータを転記したい 4 2022/12/02 11:05
- その他(Microsoft Office) エクセルの数式で教えてください。 2 2023/01/12 13:51
このQ&Aを見た人はこんなQ&Aも見ています
-
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
-
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
-
4
Excel_マクロ_現在開いているシートにマクロを実行したいです
Visual Basic(VBA)
-
5
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
8
【Excel VBA】データ貼り付け先のシート名選択
Excel(エクセル)
-
9
EXCEL マクロ リストボックスよりシート名を選択してシートを選択
Excel(エクセル)
-
10
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
11
VBA Userformで一部別シートに転記がしたいのですが
Visual Basic(VBA)
-
12
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
13
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
【ExcelVBA】全シートのセルの...
-
特定の文字を含むシートだけマ...
-
Excel複数シートを別ブックに値...
-
実行時エラー'1004': WorkSheet...
-
実行時エラー1004「Select メソ...
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
-
excel マクロでシート名取得
-
VBAで同じシート名のコピー時は...
-
VBAをMACで使えるようにしたい&...
-
ExcelVBA:複数の特定のグラフ...
-
エクセルのシート名変更で重複...
-
vba findnext で検索し一致した...
-
【Excel VBA】Worksheets().Act...
-
VBA ユーザーフォーム上のチェ...
-
セルのコピーで「オブジェクト...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
ExcelVBA:複数の特定のグラフ...
-
エクセルのシート名変更で重複...
-
IFステートの中にWithステート...
-
VBA 検索して一致したセル...
-
ExcelのVBAのマクロで他のシー...
-
XL:BeforeDoubleClickが動かない
-
別のシートから値を取得するとき
-
エクセルVBA Ifでシート名が合...
-
エクセル・マクロ シートの非...
-
シートが保護されている状態で...
-
シート削除のマクロで「delete...
おすすめ情報
Qchan1962さん、ご回答ありがとうございます。
自分でも調べながら進めていきます。
ただ、あと2点だけ教えてください。
いただいたアドバイスの中で
>WorkSheets(リストボックス.Text).Select (Value) リストボックスは適正なオブジェクトで
とありましたが、ここの意味がわかりません。
ユーザーフォームではなくワークシートにリストボックスをおいたので、
リストボックスの名前も不明なのですが、
この場合はどうしたらよろしいのでしょうか?
すみませんが、ご教授のほどよろしくお願いいたします。