dポイントプレゼントキャンペーン実施中!

最近VBAの勉強をはじめましたが、わからないことがあるので教えていただけませんでしょうか?

同一ブックにある複数のシートをシート一覧という名前のシートに作成しました。
例)シート一覧
  A
1 Sheet1
2 Sheet2
3 Sheet3




シートは増減あり、名称変更ありです。

入力という名前のシートのA1:B3のデータを、それぞれのシートに転記したいのですが、
シートを選択してそのシートへ転記する方法がわかりません。

ワークシート上にリストボックスを作って、そこにシート一覧が表示されています。
そのシート一覧からシート名を選んで隣に設置したコマンドボタンをクリックすると
転記先のシートが選択されるようにしたいのです。

ネットで色々調べてはみたのですが、シート名を指定する方法はあっても、
シートを選択する方法を見つけることができませんでした。

ご教授の程よろしくお願いいたします。

色々検索しながら

質問者からの補足コメント

  • うーん・・・

    Qchan1962さん、ご回答ありがとうございます。
    自分でも調べながら進めていきます。

    ただ、あと2点だけ教えてください。
    いただいたアドバイスの中で

    >WorkSheets(リストボックス.Text).Select  (Value) リストボックスは適正なオブジェクトで

    とありましたが、ここの意味がわかりません。


    ユーザーフォームではなくワークシートにリストボックスをおいたので、
    リストボックスの名前も不明なのですが、
    この場合はどうしたらよろしいのでしょうか?


    すみませんが、ご教授のほどよろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/05/02 10:39

A 回答 (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

どちらのコントロールか分かりませんが、リストボックスの値の取り方などを参考にされてください。
「VBAでシート名を選んで転記する方法」の回答画像2
    • good
    • 0
この回答へのお礼

Qchan1962さんありがとうございます!
いただいたアドバイスでできました。
この度はありがとうございました。

お礼日時:2020/05/03 08:47

>シートを選択する方法


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

リストボックスの表示されている名前のシートが無ければ、エラーが返されます。

>シートは増減あり、名称変更ありです。
>シート名を指定する方法はあっても、

がんばって、学習する為に残します。
シート名を取得するやすべてのシートを~などで調べてみてください。

自身で調べ検証、実験するのが良いと思いますので、、あしからず。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A