最近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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
-
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
-
エクセルマクロでシート名を条件にする方法
Excel(エクセル)
-
-
4
VBA セルの値と同じ名前のシートにデータを補填するやり方を教えてください エクセルのブックがありま
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
【Excel VBA】データ貼り付け先のシート名選択
Excel(エクセル)
-
9
セルの値と同じ名前のシートをアクティブにするには?
Excel(エクセル)
-
10
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
11
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
15
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
16
VBA リストボックス内の値を複数選択し別シートに転記するには
Visual Basic(VBA)
-
17
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
18
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
19
ユーザーフォームへのデータ入力を繰り返す方法
Visual Basic(VBA)
-
20
エクセルで指定した項目の列だけ残し、残りは削除したい
Windows Vista・XP
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】全シートのセルの...
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
同じ作業を複数のシートに実行...
-
エクセルのシート名変更で重複...
-
【VBA】色のついたシート名を取得
-
エクセルで通し番号を入れてチ...
-
エクセルVBAでダブルクリックを...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
エクセルVBA ListBoxの並び...
-
Excel VBA 複数行を数の分だけ...
-
VBA 存在しないシートを選...
-
【VBA】指定した検索条件に一致...
-
VBAでオブジェクト変数にsetし...
-
Access エクセルシート名変更
-
実行時エラー1004「Select メソ...
-
Excelマクロのエラーを解決した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報
Qchan1962さん、ご回答ありがとうございます。
自分でも調べながら進めていきます。
ただ、あと2点だけ教えてください。
いただいたアドバイスの中で
>WorkSheets(リストボックス.Text).Select (Value) リストボックスは適正なオブジェクトで
とありましたが、ここの意味がわかりません。
ユーザーフォームではなくワークシートにリストボックスをおいたので、
リストボックスの名前も不明なのですが、
この場合はどうしたらよろしいのでしょうか?
すみませんが、ご教授のほどよろしくお願いいたします。