[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンボボックスの選択』(yo)
いつもお世話になっています。 VBA勉強中です。 どなたか教えて下さい。 Main、0504、0506、0507、累計、累計平均と言った感じで月別シートとが存在します。 Mainシートのコマンドボタンから実行し、フォームを表示させて そこにあるコンボボックスから月を指定して、指定された月のシートに対して プログラムを実行させたいのですが、 コマンドボタンで月が選択できません。 どの様にしたら良いでしょうか? また、選択された月のシートにプログラムを実行させたい場合、どの様に繋げたら良いでしょうか?
================================ コマンドボタンをクリックして、月リストを選択表示
Private Sub CommandButton1_Click()
Call frm_年月指定.Show
End Sub
==================================
年月指定フォームに以下のプログラム
Private Sub cmb_年月_DropButtonClick() Dim bRet As Boolean Dim iShn As Integer Dim cmb_年月 As ComboBox
bRet = シート名一覧(iShn)
With frm_年月指定.cmb_年月 .Clear .List = ActiveSheet.Range("a1:a" & iShn).Value End With
End Sub
Private Function シート名一覧(iShn As Integer)
Dim Wsn As String Dim i As Integer
Application.ScreenUpdating = False If Sheets.Count = 1 Then Exit Function Range("A1").Select Range(Selection, Selection.End(xlDown)).ClearContents For i = 2 To Sheets.Count - 2 Wsn = Sheets(i).Name Sheets(1).Cells(i - 1, 1).Value = Wsn Next Range("A1").Select Selection.End(xlDown).Select iShn = Selection.Row
Application.ScreenUpdating = True
End Function
====================================== 選択した月シートに以下のプログラムを実行させたいです。
Private Sub CommandButton2_Click()
Dim vData As Variant Dim lEdata As Long
Columns("D:D").Select Selection.Insert Shift:=xlToRight
Range("C5").Select lEdata = Selection.End(xlDown).Row
Range("D5:D" & lEdata).Select For Each vData In Selection With vData
.Formula = "=" & .Offset(, -3).MergeArea.Cells(1).Address & _ "&SUBSTITUTE(SUBSTITUTE(" & .Offset(, -2).MergeArea.Cells(1).Address & _ ","" "",""""),"" "","""")&" & .Offset(, -1).Address End With Next
Columns("D:D").Select Selection.EntireColumn.Hidden = True
End Sub
よろしくお願いします。
えっと・・・、全体の流れをつかんでいませんが、 Private Sub CommandButton2_Click()のコードの中で CommboBoxで選んだシート名を指定してやれば良いのじゃないかな・・・。
Dim MySh As String '変数の宣言 MySh = CommboBox1.Value '変数に代入
Columns("D:D").Select ←親のシートが指定されていないので、
WorkSheets(MySh).Columns("D:D").Select ←シート名を指定させる(他の箇所も同様に) ただ、これだと他のシートのセルはSelect出来ないので、直接列を挿入させる。
WorkSheets(MySh).Columns("D:D").Insert Shift:=xlToRight '←このように。
(川野鮎太郎)
川野様、ご回答を頂きながら手がつけられずすっかりそのままになってしまいました。 すいません。 上記のご回答で実行する前に問題が生じています。 コンボボックスに .List = ActiveSheet.Range("a1:a" & iShn).Value で追加した年月が、選択できません。 具体的に言うと、0504、0505・・・とリスト表示されるのですが、 実行したい月、例えば0505をクリックしても 選択できないのです。 まず、これを選択するにはどうしたら良いでしょうか?
Private Sub cmb_年月_DropButtonClick()の中でブレークポイントを 設定して実行してみるとわかりますが、 ドロップボタンを押したときにリストをクリア > リスト設定 > ドロップダウンリスト表示 続いて、リスト選択(この瞬間は選択項目が表示されている) > DropButtonClickイベントが再度発生してリストクリア > リストがクリアされるので選択したListIndexもクリア > リスト設定 > リストはあるが、結果的に空白表示 となっています。コンボボックスへリスト設定するタイミングを 再考してください。ドロップダウンボタンをクリックするたびに シート一覧の再設定の必要があるのでしょうか。 シート追加、シート名変更などの操作がありますか? なければ、UserForm_Initializeイベントで一回だけ行ったほうが よさそうですが。 (みやほりん)
またまたご無沙汰となってしまいました。 みやほりんさん、ご回答有難うございました。 ブレークポイントを設定して実行してみた所、良く分かりました。 また、年月の設定はご教授頂いたとおり、UserForm_Initializeイベント にしました。 その結果、思っていた通りに実行する事ができました。 どうも有り難うございました。 またよろしくお願いします。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.