![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
Excel2003を使用しています。
SheetAから、あるシート(都度選択)にデータを転記するマクロを作成しています。
当初は、下記のように InputBox で、転記先のシート名を入力して、そこからシート名を取得していましたが、確実にシート名を取得するために、ユーザーフォームのコンボボックスから選択するように、変更したいと思います。
MySht = InputBox("転記するシート名を入力してください")
With Sheets("SheetA")
.Range("H6:J9").Copy
Sheets(MySht).Range("M7") ~
これを、コンボボックスで選択した値を上記のコードでいう、MySht に設定(?)したいのですが、どのようにしたらいいでしょうか?
コンボボックスで選択した値をセルに転記する方法はわかるので、とりあえず、今は一旦セルに転記していますが、コード内で直接(…というと変かもしれませんが)設定できるのであれば、教えていただきたいのです。
自分だけが使用するものならば、InputBox で十分なのですが、選択するシートのシート名に数字が含まれているので、全角や半角の入力ミスを避けるために、コンボボックスで選択するようにしたらどうかと思ったのですが、何か他にも良い方法があれば、あわせて教えていただけると嬉しいです。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
なぜコンボボックスなのでしょう? リストボックスにシート名を表示させれば「誤入力」は起きないはずなのですが?
でもコンボボックスを用いるなら「誤入力の可能性」がありますから、エラーチェックが必要になりますよ。
とりあえずUserformにComboboxを1つ配置して、ユーザーフォームのモジュールシートに以下のマクロを貼り付けて試してみてください。
Const excpt As String = "SheetA" 'コピー元のシート名
Private Sub UserForm_Initialize()
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
If sht.Name <> excpt Then
Me.ComboBox1.AddItem sht.Name
End If
Next sht
End Sub
Private Sub ComboBox1_Change()
If Len(ComboBox1.Text) = 0 Then
MsgBox "シートを選択するか入力してください"
ComboBox1.SetFocus
Else
On Error GoTo err1
Worksheets(excpt).Range("H6:J9").Copy _
Destination:=Worksheets(ComboBox1.Text).Range("M1")
Unload Me
Exit Sub
End If
err1:
MsgBox "該当するシートがないので再入力してください"
ComboBox1.SetFocus
End Sub
お礼が遅くなり、申し訳ありません。
>コンボボックスを用いるなら「誤入力の可能性」がありますから
確かにそうですね。
以前、別件で作成したマクロで、コンボボックス使用し、リストからの選択と手入力と両方できて便利だったという記憶があって、今回もコンボボックスで…と思ってしまいました。
誤入力がおきないよう、リストボックスで検討しようと思います。
今回、教えていただいたマクロも大変参考になりました。
ありがとうございました。
No.3
- 回答日時:
写す方法はいくつかあります。
方法1.コンボボックスチェンジイベントで値を設定する。
※コンボボックスの値が変わると動作するマクロ
Sub combobox_change()
Mysht = combobox.Value
以下継続
方法2.コンボボックスのプロパティのLinkedCellで、特定のセルに値をリンクさせておく
Sub macro()
MySht = WorkSheets("シート名").RANGE("セル座標").Value
以下継続
お礼が遅くなり、申し訳ありません。
具体的な方法を示していただき、助かりました。
いろんな方法があるのですね。勉強になります。
ありがとうございました。
No.2
- 回答日時:
コンボボックスを
(1)ユーザーフォームに貼り付ける場合
(2)ワークシートへ貼り付ける場合
どちらをしたのか、質問には明記のこと。
ーー
Sheet1に(2)として
Private Sub ComboBox1_Click()
MsgBox Worksheets("Sheet1").ComboBox1.List(Worksheets("Sheet1").ComboBox1.ListIndex)
End Sub
をSheet1のイベントのコンボボックスのクリックイベントに入れれば
実験になるでしょう
実際はx=Worksheets("Sheet1").ComboBox1.List(Worksheets("Sheet1").ComboBox1.ListIndex)
として
最終は
Private Sub ComboBox1_Click()
'MsgBox Worksheets("Sheet1").ComboBox1.List(Worksheets("Sheet1").ComboBox1.ListIndex)
x = Worksheets("Sheet1").ComboBox1.List(Worksheets("Sheet1").ComboBox1.ListIndex)
Sheets(x).Select
End Sub
となると思うが。
簡単に
Private Sub ComboBox1_Click()
x = Worksheets("Sheet1").ComboBox1.Value
MsgBox x
Sheets(x).Select
End Sub
でもOKのようだ。
ーー
それにしても、WEBや本ならコントロール(の中のコンボボックス)の説明のところに、選択したアイテムのとり方は必ず載っているよ。
WEB照会でも、Googleなどで「VBA コンボボックス」で照会すれば、沢山実例が出て、すぐ判る。
お礼が遅くなり、申し訳ありません。
丁寧に説明していただき、助かりました。
WEBや参考書でも調べましたが、いまひとつ求めるものと違うようでしたので、質問させていただいた次第です。
No.1
- 回答日時:
>コンボボックスで選択した値をセルに転記する方法はわかるので、
こんな感じかな?
Worksheets(1).Range("A1").Value = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
お分かりと思いますが、シート選択は↓の
ような感じです。
Worksheets("シート名").Select
もうお分かりですね。
Worksheets(Me.ComboBox1.List(Me.ComboBox1.ListIndex)).Select
とすれば、コンボボックスで選択した行の名前のシートを選択できます。
変数を使えばもっと簡潔になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
おすすめの美術館・博物館、教えてください!
美術館・博物館が大好きです。みなさんのおすすめをぜひお聞きしたいです。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
5
ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい
Access(アクセス)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
UserForm1.Showでエラーになります。
工学
-
8
VBA テキストボックスの計算
Visual Basic(VBA)
-
9
Excel vbaで複数のテキストボックスの足し算
Visual Basic(VBA)
-
10
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
11
VBA コンボボックスで選んだものを各テキストボックスに反映
Visual Basic(VBA)
-
12
Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。
Visual Basic(VBA)
-
13
VBAユーザーホームテキストボックスにカーソルを自動で表示したい
Visual Basic(VBA)
-
14
エクセルVBAでコンボボックスの非表示について
iOS
-
15
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
16
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
17
エクセルVBA(マクロ-コンボボックスについて)
Visual Basic(VBA)
-
18
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
19
VBAでEmpty値って何ですか?
Excel(エクセル)
-
20
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
エクセル、特定のシートにパス...
-
確定申告用の医療費集計フォー...
-
Excelでマクロ設定したが反映さ...
-
エクセルで複数のシートに画像...
-
エクセルでリンク貼り付けした...
-
EXCELの図形(テキストボックス)...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
エクセルのシー名を二段表示に...
-
EXCELで存在しないシート...
-
(エクセル)Indirect関数で、ハ...
-
【Excel VBA】データ貼り付け先...
-
エクセルの2つのシートを並び...
-
エクセルのファイルサイズが急...
-
ワークシートそのものの色を変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
ハイパーリンクでジャンプした...
-
特定のシートのみ再計算させな...
-
エクセルで複数のシートに画像...
-
【ExcelVBA】マクロの入ったシ...
-
EXCELの図形(テキストボックス)...
-
エクセルのシー名を二段表示に...
-
ワークシートそのものの色を変...
-
エクセル、特定のシートにパス...
-
確定申告用の医療費集計フォー...
-
EXCELの「シートの見出し」のフ...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
EXCELで存在しないシート...
-
エクセルの2つのシートを並び...
-
エクセルのシート連番の振り直し
-
Excelでマクロ設定したが反映さ...
-
エクセルで、シートの名前を変...
-
エクセルの複数シートでのリン...
おすすめ情報