プロが教えるわが家の防犯対策術!

エクセル2000で、あるマクロを作成中です。
これに関して、2点アドバイスを頂きたくお願い致します。

【 1 】
完成した後に使用するPCのモニターが、15インチと17インチが混在する環境となります。
ユーザーフォームの寸法を15インチモニターに合わせて設定すると、17インチモニター使用時はフルスクリーンになりません。
これをモニターのサイズに合わせて、自動で変化させることは可能なんでしょうか?
もし可能であれば、その方法はどうすればいいのでしょうか?

【 2 】
コンボボックスで選択項目を表示させるのですが、「その他」を選んだ場合のみ、入力可能なテキストボックスを作りたいのです。
その他以外を選択した場合は、
1. テキストボックスそのものを非表示にする。
2. テキストボックスのバックカラーを「白」から「グレー」に変化させ、それまで入力可能だったものを入力不可にする。
また、タブも停止から非停止にしたいと考えています。
上記1、2はどちらでも構いません。

この2点について、どなたか詳しい方からご教示頂きたくお願い致します。

A 回答 (1件)

【 1 】について


ユーザーフォームの画面表示サイズは
モニターのインチ数というよりは、
画面の解像度によって決まるのでは
ないでしょうか。
画面の解像度は以下のようにして取得可能です。

Private Declare Function GetSystemMetrics _
Lib "user32" (ByVal nIndex As Long) As Long
Sub Kaizoudo()
Dim X As Long, Y As Long
Dim nGA As String
X = GetSystemMetrics(0) '画面の幅を取得
Y = GetSystemMetrics(1) '画面の高さを取得
MsgBox "幅" & X & "×" & "高さ" & Y
End Sub

上記で取得した画面の解像度に応じて、
ユーザーフォームの大きさを変化させれば、
よいかと思います。
その場合、配置しているコントロールの位置も
フォームの大きさに合わせて変える必要があります。

【 2 】について
>1. テキストボックスそのものを非表示にする。

テキストボックスのVisible プロパティをFalseに設定する。

Private Sub ComboBox1_Change()
If Me.ComboBox1.Text = "その他" Then
Me.TextBox1.Visible = False
Else
Me.TextBox1.Visible = True
End If
End Sub

>2. テキストボックスのバックカラーを「白」から「グレー」に変化させ、
それまで入力可能だったものを入力不可にする。

BackColor プロパティをグレイに設定し、
Enabled プロパティをFalseに設定すれば良いかと思います。

Private Sub ComboBox1_Change()
If Me.ComboBox1.Text = "その他" Then
Me.TextBox1.Enabled = False
Me.TextBox1.BackColor = vbGrayText
Else
Me.TextBox1.Enabled = True
Me.TextBox1.BackColor = vbWindowBackground
End If
End Sub
    • good
    • 0
この回答へのお礼

回答有難うございました。
何となく、惜しいところまで行っていたのですが、なかなか上手く行かなくて困っていました。
これで、完成の目途が立ちました。
有難うございました。

お礼日時:2006/02/20 08:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!