| 
    
     |  | >DialogSheets(1).Visible これは、出さなくても良い DialogSheet (つまりデザインモードのためのシート)
 を開く・閉じる。という処理になります。デザインが完了した DialogSheet は
 そのデザインを変更するときだけ、表示させれば良いのです。
 で、ユーザーインターフェイスとなる DialogFrame を出したり引っ込めたりするには
 
 DialogSheets(1).Show
 
 又は
 
 DialogSheets(1).Hide
 
 で行います。このへんは実にややこしいのですが、そういう仕様になっているので
 覚えておいてください。なおキャンセルボタンを押したときの判定は
 
 x = DialogSheets(1).Show
 If x = False Then
 
 という判定式を使います。これは上のように 2行に続けて書きます。
 つまり Show の後、配置した何かのコントロールを操作したとしても、それは
 If x = False Then
 の判定式以降に、記述するコードで処理を行います。それはユーザーフォームで言うと
 例えば Private Sub ComboBox1_Change() の内容だったりします。
 逆に Show 以前に書くコードは、UserForm_Intialize の内容と同じになります。
 ちょっと私が使っているコードを、サンプルとしてここへUPしてみようと思った
 のですが、あまりに長いので一部を抜粋します。DialogSheetの処理を記述した
 ところだけです。処理内容は全く個人的なもので、一つずつのコードの意味は
 分からないと思いますが、DialogSheetの使い方の見本として、何となく理解されたら
 幸いです。
 
 With DialogSheets(1)
 .CheckBoxes(1).Value = xlOff
 .Buttons(1).DefaultButton = True
 .Buttons(3).OnAction = "GetTBName"
 .Buttons(3).Caption = "GET_TABLE"
 .Buttons(4).OnAction = ""
 .Buttons(4).Caption = "GET_FIELD"
 .ListBoxes(1).RemoveAllItems
 .ListBoxes(2).RemoveAllItems
 .ListBoxes(2).MultiSelect = xlSimple
 .DropDowns(1).RemoveAllItems
 .EditBoxes(1).Text = ""
 Set MyGetDB = DBEngine.Workspaces(0).OpenDatabase(myMdbFile)
 For Each Tb In MyGetDB.TableDefs
 If Left(Tb.Name, 2) <> "MS" Then
 .ListBoxes(1).AddItem Tb.Name
 Else
 If Right(Tb.Name, 1) = "ト" Then
 .ListBoxes(1).AddItem Tb.Name
 End If
 End If
 Next
 MyD = DateSerial(Year(Date), Month(Date), 1)
 i = -1
 Do
 LD = DateAdd("m", i, MyD)
 .DropDowns(1).AddItem Format(LD, "yyyy/mm/dd")
 i = i - 1
 Loop Until Year(LD) = 1998 And Month(LD) = 7
 ReDim FiAry(0): FiAry(0) = "z": i = 0
 RLine:
 If .Show = False Then GoTo EndLine
 Didx = .DropDowns(1).ListIndex
 If MyTBName = "" Or Didx < 1 Then
 MsgBox "設定必須の項目が未設定のままです", 48
 GoTo RLine
 End If
 Application.ScreenUpdating = False
 StartD = .DropDowns(1).List(Didx)
 If .CheckBoxes(1).Value = xlOff Then
 mySql = "SELECT * FROM " & MyTBName & _
 " WHERE 日付 >= #" & StartD & "#;"
 ElseIf .CheckBoxes(1).Value = xlOn Then
 If UBound(FiAry) > 0 Then
 For j = 1 To UBound(FiAry)
 FN = FN & ", [" & FiAry(j) & "]"
 Next j
 mySql = "SELECT [日付]" & FN & " FROM " & MyTBName & _
 " WHERE 日付 >= #" & StartD & "#;"
 Else
 Exit Sub
 End If
 End If
 End With
 
 |  |