• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「ユーザーフォーム」のサイズ変更と「テキストボックス」の条件設定について)

ユーザーフォームのサイズ変更とテキストボックスの条件設定について

このQ&Aのポイント
  • エクセル2000でユーザーフォームの作成を行っている際に、15インチと17インチモニターの混在する環境での寸法調整やコンボボックスの条件設定についてアドバイスをお願いします。
  • ユーザーフォームのサイズ変更については、モニターのサイズに合わせて自動で変化させる方法があるのかを知りたいです。
  • また、コンボボックスで「その他」を選択した際に、入力可能なテキストボックスを作成し、それ以外を選択した場合は非表示にしたり入力不可にしたりしたいですが、具体的な手順について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.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

shiga-hiro
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストボックスの値をコンボボックスの選択値によって動的に変化させたい(VB.NET)

    こんにちは。 VB.NET2003 を使用し、小さなシステムを開発中です。 例として、コンボボックスにて「社員ID」を選択すると、その隣のテキストボックスには「鈴木 一郎」というように氏名を表示させることを考えております。 そこで、一度表示された後でも、コンボボックスの値を変化させるとそれに応じてテキストボックスの値も変更させたいのですが、どのようにしたらいいのでしょうか。 コンボボックスへの値を入れ、テキストボックスへの表示させるところまではできたのですが、一度表示された後は変化しなくて・・・。 ちなみに、それらの値の取得はDataSetを使用しています。 どなたか方法をご存知の方、教えていただけませんでしょうか。

  • テキストボックスとコンボボックス

    こんにちは、Accessのフォームにテキストボックスとコンボボックスを設置して、以下のような事ができないかと悩んでおります。 フォーム内には、テキストボックスとコンボボックスが設置してありまして、コンボボックス内にDB(会社名テーブル)から取得した全ての会社名が入っています。 しかし、そのレコード数が300件近くあるため、コンボボックス内から探し出すのに手間が掛かります。 そこで、コンボボックスの隣にテキストボックスを設置し、テキストボックス更新後に会社名テーブルの検索を行い、条件に合った会社名だけをコンボボックス内に入れることを考えているのですが、上手く行きません。 動作のイメージとしては下記のようになります。 (1)初期表示時はテキストボックス内に何も入力されていないので、全レコードがコンボボックス内に表示される。 (2)テキストボックスに「有限」と入力して、テキストボックスからフォーカスを移動させると、コンボボックス内に「有限」が会社名に含まれているレコードのみが入っている。 (3)テキストボックスを空白に戻すと、コンボボックス内には全レコードが表示 以上、どなたかご教授よろしくお願いします。

  • ユーザーフォーム内のテキストボックス内の書式設定

    A1セルに12.345と入力してあり、書式は「数値」で小数点以下の桁数2にしてあり、 「12.35」と表示されます。 VBAを起動して、ユーザーフォームを挿入し、 テキストボックスを作成し、 TextBox1の「ControlSource」にA1と入力すると TextBox1には「12.345」と表示されます。 エクセルのA1と同じ様に TextBox1も「12.35」と表示したいのですがどうすればいいのでしょうか? エクセル2003です。 よろしくお願い致します。

  • マクロ フォームでのチェックボックスについて

    教えてください。 1)フォームでテキストボックス2つ、ボタンで新しい入力フォーム表示 2)入力フォームでチェックボックス6個、コンボボックス6個を作ります。 3)チェックボックスにチェック(1個のみ)したら、1)のフォームのテキストボックスにチェックされた、項目とコンボボックスで選択された内容が転記したい。 例)果物にチェック、コンボでブドウと選択  テキストボックス→果物 ブドウ というようにフォームに転記させたい。 以前、シートでのマクロを教えていただきましたが、フォームだと頭が混乱してしまいました。 簡単で良いので、マクロの記述を教えてください。

  • VBでコンボボックスとテキストボックスの連係

    VBでフォームにデータコンボボックスとテキストボックスを一つづつ作り、データコンボボックスで値を選択し、その値に対する値をテキストボックスに表示させたいんですがどうすればいいでしょうか? データコンボボックスで選択する元になるテーブルは ID | 商品 1 | みかん 2 | ばなな 3 | りんご と、上記のような形のテーブルをもちいています。 例えばデータコンボボックスで「1」を選択した場合テキストボックスに「みかん」と表示させたいです。

  • 【Excel・マクロ】コンボボックス・テキストボックスからのデータの入力について

    教えて下さい! 今シートにはA列に日付(2003/1/1~2010/12/31)、B列からI列の1行目には項目名が入っています。 これから行いたいことは、別マクロで表示させたフォームのコンボボックスから日付を選択し、同じフォーム上にある項目名に沿った8つのテキストボックスにデータを入力することにより、そのデータがシートに反映されるというものを作成したいのです。 データが入力される部分は選択された日付の行の、各項目名と交わる部分となります。 (例)        |あああ|いいい|ううう・・・ 2003/1/1 |    |    | 2003/1/2 |    |    | 2003/1/3 |    |    | ※上の表だとコンボボックスから2003/1/2を選択し、テキストボックス「いいい」部分にデータを入力するとC3セルにデータが入力されます。 コンボボックスにデータを表示させることは出来るのですが、そこから先(この日付を選んでテキストに入力して・・・)が出来ません。 よろしければ、記述を教えて頂きたいと思います。 宜しくお願い致します。

  • テキストボックスのデフォルト設定とコンボボックスの更新について

    テキストボックスのデフォルト設定とコンボボックスの更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。 コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。 ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示 されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。 (1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。 コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。 「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。 「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。) というのは、次のVBAで上手くいきました。 If Combobox1.ListIndex < Combobox1.ListCount - 1 Then Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1) Else Combobox1.Text = Combobox1.List(0) End If (2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。 「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。 「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • コンボボックスからテキストボックスに連続して値を出したい

    エクセルVBAのユーザーフォームで、コンボボックスで選択したものをコマンドボタンを押すことで、同じフォーム上のテキストボックスに表示するところまではできたのですが、同じテキストボックスに追記する形でコンボボックスで選択したものを表示したいのですが、可能でしょうか。テキストボックスは複数行表示できるようにプロパティのMultiLineはTlueに設定することはしたのですが、2回目以降コンボボックスで選択した後コマンドボタンを押してもそのまま上書きするようなコードしかわかりません。 テキストボックスに、20回目まで選択項目を追加表示し、最後にはエクセルのシートにそのデータをコピーしたいのです。果たして、そのようなことは可能でしょうか。可能であればどのように記述すればよいのでしょうか。ぜひ諸先輩方のお知恵をお貸しください。よろしくお願いします。

  • Access テキストボックスとコンボボックス

    Access初心者で、勉強がてらデータ登録フォームを作成しています。 フォーム上にコンボボックスを設置し、 テーブルに保存されているデータを検索できるようにしたのち、 テキストボックスのコントロールソースには簡単に 「=[コンボボックス].[column](2)」としています。(それぞれの名前は仮称です) 後から、テキストボックスひとつで 「コンボボックスからの検索結果を表示させる」と 「テキスト入力も可能とする」 を共存させたいと思い始めたのですが、可能になりますでしょうか。 ただし「コンボボックスからの検索結果表示」をしたテキストボックスに対し、 その情報をフォーム上で書き換えたとしても、テーブル側のデータ書き換えは行いたくありません。 よろしくお願いいたします。

専門家に質問してみよう