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も見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
UserForm1.Showでエラーになります。
工学
-
5
VBA コンボボックスで選んだものを各テキストボックスに反映
Visual Basic(VBA)
-
6
Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。
Visual Basic(VBA)
-
7
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
8
エクセルVBA 別シートからのコンボボックス連動
Visual Basic(VBA)
-
9
VBAユーザーホームテキストボックスにカーソルを自動で表示したい
Visual Basic(VBA)
-
10
コンボボックスの文字によるif文の作成
Visual Basic(VBA)
-
11
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
12
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
13
ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい
Access(アクセス)
-
14
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
15
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
16
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
17
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
18
エクセルVBA ユーザーフォーム 複数のコンボボックス 同一リスト
Excel(エクセル)
-
19
EXCEL VBAのコンボボックスに取り込むリストについて
Excel(エクセル)
-
20
フォームのテキストボックスの値をコピーしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
ハイパーリンクでジャンプした...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
エクセルで複数のシートに画像...
-
EXCELの図形(テキストボックス)...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルのシート連番の振り直し
-
エクセルでリンク貼り付けした...
-
アクセスからエクセルのシート...
-
エクセルの2つのシートを並び...
-
エクセルで誤ってF11キーを押す...
-
Wordで差し込み印刷時に表示す...
-
Excel、Aのシートにあって、Bの...
-
エクセルのシー名を二段表示に...
-
vba Listviewでのチェックボッ...
-
ワークシートそのものの色を変...
-
Access VBAからExcelシートの削除
-
エクセル 非表示のシートをハ...
-
エクセル、別のシートの表をポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
ハイパーリンクでジャンプした...
-
特定のシートのみ再計算させな...
-
エクセルで複数のシートに画像...
-
【ExcelVBA】マクロの入ったシ...
-
EXCELの図形(テキストボックス)...
-
エクセルのシー名を二段表示に...
-
エクセルのシート連番の振り直し
-
ワークシートそのものの色を変...
-
EXCELの「シートの見出し」のフ...
-
Accessのテーブルを既存のExcel...
-
Wordで差し込み印刷時に表示す...
-
エクセル、特定のシートにパス...
-
EXCELで存在しないシート...
-
エクセルの2つのシートを並び...
-
アクセスからエクセルのシート...
-
指定したシート名以外を非表示...
-
エクセル、別のシートの表をポ...
-
エクセルで誤ってF11キーを押す...
おすすめ情報