• ベストアンサー

エクセルでのテキストボックスの表示非表示について

 いつもお世話になっております。  エクセル2010を使用していますが、条件によってテキストボックスを表示か非表示にしたいと考えています。テキストボックスは、1つを想定しています。 【例】 (1)sheet1のセルA1が「該当」のとき  →sheet2にあるテキストボックスを表示 (2)sheet1のセルA1が「非該当」のとき  →sheet2にあるテキストボックスを非表示  以上、モジュールでの対応となると思いますが、やり方が分からず苦慮しています。ご教授をどうぞよろしくお願いいたします。

  • ankle
  • お礼率43% (80/182)

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.4

A1の値が変更されたときだけにA1の値をチェックでしたら(A1以外の変更やA1の値を変更せずに単にセルを移動しただけではA1の値をチェックしない) A1のシートモジュールに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> Range("A1").Address Then Exit Sub End If Application.EnableEvents = False If Sheets("Sheet1").Range("A1").Value = "該当" Then Sheets("Sheet2").Shapes.Range(Array("テキスト ボックス 1")).Visible = msoTrue ElseIf Sheets("Sheet1").Range("A1").Value = "非該当" Then Sheets("Sheet2").Shapes.Range(Array("テキスト ボックス 1")).Visible = msoFalse End If Application.EnableEvents = True End Sub

ankle
質問者

お礼

kkkkkmさん、ご回答ありがとうございます。 自分の考え通りの動きです。大変ありがとうございます。 これから早速、本番データにプログラミングしたいと思います。 今後とも、どうぞよろしくお願いいたします。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.3

> A1セルから他のセルに動いたと同時に、テキストボックスを表示・非表示にできますでしょうか。 移動先のセルはTargetで取得できますが移動前は取得できませんので、セルの選択が変更されたとき毎回A1の値をチェックすることになります。 A1セルのシートのシートモジュールに Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False If Sheets("Sheet1").Range("A1").Value = "該当" Then Sheets("Sheet2").Shapes.Range(Array("テキスト ボックス 1")).Visible = msoTrue ElseIf Sheets("Sheet1").Range("A1").Value = "非該当" Then Sheets("Sheet2").Shapes.Range(Array("テキスト ボックス 1")).Visible = msoFalse End If Application.EnableEvents = True End Sub

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

テキストボックス の名前がテキスト ボックス 1だとした場合、以下で試してみてください。 Sub Test() If Sheets("Sheet1").Range("A1").Value = "該当" Then Sheets("Sheet2").Shapes.Range(Array("テキスト ボックス 1")).Visible = msoTrue ElseIf Sheets("Sheet1").Range("A1").Value = "非該当" Then Sheets("Sheet2").Shapes.Range(Array("テキスト ボックス 1")).Visible = msoFalse End If End Sub

ankle
質問者

補足

kkkkkmさん、ご回答ありがとうございます。 想定どおりの動きができました。 すみませんが、もう一点お聞きします。 A1セルから他のセルに動いたと同時に、テキストボックスを表示・非表示にできますでしょうか。 ご教授をどうぞよろしくお願いいたします。

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.1

フォーム表示 ユーザーフォーム.Show フォーム非表示 ユーザーフォーム.Hide

ankle
質問者

お礼

masnoskeさん、ご回答ありがとうございます。 参考にさせていただきます。

関連するQ&A

  • EXCELでテキストボックスを選べない

    EXCELでのシートで セルにはデータが入っています セルはそれぞれクリックできます シートの真ん中に テキストボックス(四角い図形の中に テキストが入力されているので) があり それをクリックしようとすると ○の中に /が入っている 警告のようなものが出てきて テキストボックスを選べません  シートは保護されていないようです どんな設定がされていますか

  • テキストボックス

    たびたびの質問すみません。 エクセルVBAでテキストボックス等(条件)に入力すると、他のテキストボックスにエクセルシートから照合して表示させる方法で、条件のテキストボックス等を2つ以上にすることは可能でしょうか、あればやり方を教えてください。

  • エクセル テキストボックスについて

    エクセルでテキストボックスへセルからの反映方法 の質問です。 エクセルのセル内の数字や文字を ・いくつかのシートを作成して ・そのシートのセルに反映させ、連動させる 方法はどのようにするのでしょうか。

  • エクセルで挿入したテキストボックスの上から

    最近、エクセルを使用してます。 シートの上に挿入ボタンから、テキストボックスを挿入し、テキストを打ち込んでいます。さらに、そのテキストボックスの上から、シートを挿入または、張りつけることはできるのでしょうか? セルの幅や高さはあらかじめ設定しているので、 別のシート(セルの幅や高さが違う)を上から表示したい。

  • [VBA]テキストボックスからエクセル反映(複数行)

    始めまして。初めて質問させて頂きます。至らない点があると思いますがよろしくお願い致します。 今テキストボックスよりエクセル(単一セル)に文字を入力するシートを作成しております。 テキストボックスで複数行入力(Enterで改行)の方法と複数行入力した文字をシート(1セル)に反映したいのですが良い方法をご存知でしたらご教授お願いします。 【やりたい事項】 テキストボックス内 (1)○は△です。(Enterで改行) (2)×は●です。 エクセルシート上(A1セルで) (1)○は△です。(ALT+Enter) (2)×は●です。 現状:MultiLineをTRUEにして右端まで文字入力すると2行目に入力可能 エクセルに反映すると「○は△です。×は●です。」と1セルで1行で表示となってます。 言葉足らずかもしれませんが、よろしくお願いします。

  • エクセルVBAで、ユーザーボックスを開いたときにテキストボックスにセル

    エクセルVBAで、ユーザーボックスを開いたときにテキストボックスにセルの値を自動で表示させたいのですが、うまくいきません。テキストボックスをクリックすると表示されるのですが・・・    Private Sub txt1_Change() Sheets("Sheet1").Range("a1").Value=txt1.Value End Sub としたのですが、やはり間違いなのでしょうか?

  • [エクセルVBA]セルの値をテキストボックスに表示

    よろしくお願いします。 ユーザーフォームを使って作業しています。 その中で、コンボボックス1で指定した名前を検索値として、VLOOKUPを使ってあるシート(例:シート名「時間検索」)からセルの値をテキストボックスに表示させるようにしたいのです。 コードを作成し表示させることはできたのですが、セルに入っている値の書式が「[h]:mm」の時間形式(例:19:00)のためか、セルの値を引っ張ると小数点(例:0.79166....)で表示されます。 色々と調べてみた中で、format関数を使ったりしてみたんですが不首尾に終わっています。 なんとかテキストボックスに、セルと同じ形式で表示したいのですが、どのように考えればよろしいでしょうか? ご教示お願いいたします。 質問の仕方が悪かった場合は補足・訂正させていただきますので、どうぞよろしくお願いします。

  • エクセル テキストボックスについて

    エクセルの図形について勉強をしています テキストボックスの文字列をシート上のセルにリンクすることができると説明がありますがどのように操作をしたらよいのでしょうか?

  • テキストボックスの表示について

    いつもお世話になります。VBAで質問があるのですが、ユーザーフォームを作り、コマンドボタンとテキストボックスを配置します。 Private Sub CommandButton1_Click() Dim i As Long  For i = 1 To 30   TextBox1.Text = i & "を入力しました"   Worksheets("Sheet1").Range("A1").Value = i & "回目です"  Next i End Sub と入力して実行すると、セルには1~30回まで順に書き込みがありますが、テキストボックスには最後の「30を入力しました」しか表示されません。 これを「1を入力しました」、「2を入力しました」、「3を・・・」というようにテキストボックスに順に表示させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • エクセル2010テキストボックスとシートの保護

    テキストボックスとシートの保護について エクセル2010を使用しています。 シートの中には、結合したセルの中に文字が入力してあり、 またテキストボックスを使用して、その中に文字が入力してあるものもあります。 そこで質問なのですが、 (1)テキストボックスの枠(?)のみを固定(保護)し、入力だけを可能にする。 ※サイズの固定ではなく、その場所から動かさないように固定する方法です。 (2)セルを固定(保護)し、入力のみを可能にする。 上記を同時に可能にするためには、どのような操作をしたらよろしいでしょうか? ご教授お願いいたします。

専門家に質問してみよう