|
>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
|
|