VBAでコンボボックスで選択した月のシートが
アクティブ状態(選択された)にしたいです。
例えばプルダウンで「10」を選んだら「10」のシートが選択された状態になるようにしたいです。
※後々やりたいこととしては、10月のシートのそれぞれのセルに、ユーザーフォームのテキストボックスで登録かけた10月の勤怠時間が入る。
その逆も同様で、画像のユーザーフォームで10月を選んだら10月の勤怠情報がそれぞれのテキストボックスに表示されるようにしたいと考えています。
Private Sub UserForm_Initialize()
'年を設定
cmbYear.AddItem "2021"
cmbYear.AddItem "2022"
cmbYear.AddItem "2024"
cmbYear.AddItem "2028"
'当年を初期設定←とりあえず先頭
cmbYear.ListIndex = 0
'月を設定
cmbMonth.AddItem "1"
cmbMonth.AddItem "2"
cmbMonth.AddItem "3"
cmbMonth.AddItem "4"
cmbMonth.AddItem "5"
cmbMonth.AddItem "6"
cmbMonth.AddItem "7"
cmbMonth.AddItem "8"
cmbMonth.AddItem "9"
cmbMonth.AddItem "10"
cmbMonth.AddItem "11"
cmbMonth.AddItem "12"
End Sub
No.1
- 回答日時:
こんばんは
すみませんが、直接の回答ではありません。
>後々やりたいこととしては、~~
失礼ながら、それってシートと同じものをフォームに移し替えようとしているだけのように思えますけれど・・・
(若干の操作の違いがあるかもですが)
「労多くして功少なし」になっていませんか?
将来、ちょっとした変更や修正が必要になった時のことも考えると・・・
はた目からの感覚で勝手なことを言って、大変申し訳ないですが、
同じ、VBAを利用するにしても、例えば、ブックを開いたらその日の(その月の)シートを自動で開くようにしておけば、ほぼなんとかなりそうな気がしますけれど・・
No.2ベストアンサー
- 回答日時:
こんばんは
ユーザーフォームを使用する目的も色々あると思いますので良いのですが
目的を果たすためにはExcelを非表示にしたりするのでしょうか、、、
まだ、先が長そうですが、、とりあえず ご質問の回答を、、
実行ボタンを押した時にすべてを処理する場合、余計な処理時間が必要になりますので先に取得できる事や処理は済ませた方が良いと思います。
ComboBoxには色々なイベントトリガーがあります。
参考サイト MyRecord 業務の効率化に役立つ情報
https://kosapi.com/post-4111/
この場合は、Change とか Exit になるかな?
Exitの例
Private Sub cmbMonth_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Worksheets(cmbMonth.Text).Select
End Sub
Changeの例
Private Sub cmbMonth_Change()
On Error Resume Next
Worksheets(cmbMonth.Text).Select
End Sub
.Select をやめ オブジェクトにSet するとかでもいいかな
以下はご質問に無い部分ですが、、
'月を設定 (シート名が半角数字の場合)
Dim i As Integer
For i = 1 To 12
cmbMonth.AddItem i
Next
こんな感じで出来るかと、、、多くのコントロール(TextBoxなど)を使う場合のテクニックも必要になると思います。頑張って
これも関係ないかも知れませんが、ユーザーフォームを使用せず
運用者に余計な操作をさせない方法は、リボンをカスタマイズ(既存のものを排除)してオリジナルのボタン、コンボボックスなどを作成しシートを制限すれば出来ます。とっつき悪く情報も少ないですが、なれるとユーザーフォームを作るより簡単かもしれません。(ただし、バージョン問題が付きまといますが)
ありがとうございます・・!!
理想の動きになりました・・!!
今回の課題は解決しましたがご回答の本文にありましたので一応補足すると、エクセルシートはApplication.Visible = Falseで非表示になる設定にしています!
勤怠登録する際には基本的にシートが見えないようにしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAユーザーフォームの複数のコンボボックスについて。 1 2022/04/25 08:13
- Visual Basic(VBA) リストポックスについて 2 2022/11/05 20:48
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
Excelマクロのエラーを解決した...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
【Excel VBA】Worksheets().Act...
-
同じ作業を複数のシートに実行...
-
XL:BeforeDoubleClickが動かない
-
VBAで、シート間の転記するコー...
-
ブック名、シート名を他のモジ...
-
シートが保護されている状態で...
-
エクセルのマクロについて教え...
-
ExcelのVBAのマクロで他のシー...
-
実行時エラー1004「Select メソ...
-
VBA 最終行まで数式をコピーする
-
【ExcelVBA】動的にボタン、ボ...
-
【VBA】指定した検索条件に一致...
-
VBA 検索して一致したセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報