• ベストアンサー

テキストボックスを消すVBA

ボタンを押すことでテキストボックスが消えるようにしたいのですが、 ボタンは、2つ 「ONとOFF」 1~3のSheetにあるテキストボックスをSheet5に配置した「ONとOFF」のボタンで操作するようにしたいのですがよろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

テキストボックスは図形を使っていましたよね。コントロールツールボックスのテキストボックスなら簡単に操作できるのですが・・・ まず、各シートのテキストボックスに共通の文字を持った名前をつけて下さい。 Sheet1ではmyText1_1、myText1_2・・・、Sheet2ではmyText2_1、myText2_2・・・の要領です。 下の例では名前の前6文字をVBAで判定に使っています。 やっていることはテキストボックスの座標を操作しているだけです。目で見える範囲や印刷等の範囲の外に出るように増分zoubunを適当に設定して下さい。(図形を見た目だけ消すのはたいへんです) 最初に動かすときは、「ボタンON」のプロパティのvisibleをfalseにしておきます。 「ボタンOFF」を押すと図形が消え、「ボタンOFF」が見えなくなり「ボタンON」が現れます。 「ボタンON」を押すと図形が現れ、「ボタンON」が消え「ボタンOFF」が現れます。 これは標準モジュールに貼り付けます。 Public Sub ON_OFF(FLG As Boolean) Dim sht As Integer 'シートカウンタ Dim shp As Shape '図形 Const zoubun = 500 '位置を変える大きさ Dim fugo As Integer '符号 fugo = 1: If FLG = True Then fugo = -1 Application.ScreenUpdating = False For sht = 1 To 3 Worksheets("Sheet" & sht).Activate For Each shp In Worksheets("Sheet" & sht).Shapes If Left(shp.Name, 6) = "myText" Then shp.Top = shp.Top + zoubun * fugo shp.Left = shp.Left + zoubun * fugo End If Next Next Worksheets("Sheet5").Activate Application.ScreenUpdating = True End Sub シート5に貼り付けます Private Sub cmdOff_Click() cmdOff.Visible = False: cmdON.Visible = True: ON_OFF False End Sub Private Sub cmdON_Click() cmdOff.Visible = True: cmdON.Visible = False: ON_OFF True End Sub

rurucom
質問者

お礼

nishi6さん!いつもありがとうございます。 今回は、一発成功!しました。VBAが少しづつ分かってきているような気がします。nishi6さんには、いつもお世話になりっぱなしですみません。本当にありがとうございます。

その他の回答 (2)

  • batu1
  • ベストアンサー率32% (8/25)
回答No.2

もしも、画面上で見えたり見えなくするというのではなく、本当に消したい場合は以下のようにしみてください。 (多分質問の意図は前述の方のやり方が回答になっていると思いましたが) --ONの処理-- Sub ボタン1_Click()  Sheets("Sheet1").Select  ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1",        Link:=False,・・・・・その他設定)  (シート2・シート3も同様に) End Sub --OFFの処理-- Sub ボタン2_Click()  Sheets("Sheet1").Shapes("TextBox1").Delete  Sheets("Sheet2").Shapes("TextBox1").Delete  Sheets("Sheet3").Shapes("TextBox1").Delete End Sub

rurucom
質問者

お礼

すみません!お礼のほうに書くべきでした。 とりあえず、うまくいきそうなのでがんばってみます。

rurucom
質問者

補足

batu1さん!ありがとうございます。 早速やってみましたが、 ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1",Link:=False,・・・・・その他設定) がエラーになってしまいました。 OFFはうまくいました。

  • gould09
  • ベストアンサー率33% (196/589)
回答No.1

以下のようにします。 ■コマンドボタンONの処理 Private Sub CommandButtonON_Click() Sheet1.TextBox1.Visible = True Sheet2.TextBox1.Visible = True Sheet3.TextBox1.Visible = True End Sub ■コマンドボタンOFFの処理 Private Sub CommandButtonOFF_Click() Sheet1.TextBox1.Visible = False Sheet2.TextBox1.Visible = False Sheet3.TextBox1.Visible = False End Sub

rurucom
質問者

お礼

gould09さん!ありがとうございました。 ちょっとエラーが出てしまいましたが、意味は理解でき、何とかできました。 ありがとうございました。

関連するQ&A

  • テキストボックスをグループ化するVBA

    エクセル上に並んだテキストボックスを、ボタンを押すことで、任意のテキストボックスをグループ化させたい。また、別のボタンでグループ化の解除が出来るようなVBAをおしえてください。 テキストボックスは、Sheet1~3まであって、ボタンもそれぞれに配置してあり、 どこのSheetのボタンを押しても、各シート、それぞれに任意の設定したテキストボックスがグループ化できるようにしたい ※各シート、グループ化するテキストボックスはおなじでなない・・・ よろしくお願いします。

  • テキストボックスの大きさを、基準の大きさに戻す(エクセルVBA)

    図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか? 1)図形のテキストボックス、大きさの取得方法は? 2)基準の大きさと記録する方法は? 3)記録された大きさに戻すには?(シート上に配置されたボタンで実行) ※ 複数のシートに複数のテキストボックスがあります。 ※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為) ※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・) ※ エクセル97と2000で使えるようにします。(作成は97) 宜しくお願い致します。

  • テキストボックスの移動(2)

    前回、質問しましたが、回答いただいたプログラムで、別のシートから複数のシートのテキストボックスの移動を移動させたいのですが・・・ たとえば、Sheet1・Sheet2・Sheet3にテキストボックス1が配置してあって、A位置とB位置に動くようにしてあります。 前回のプログラムでは、各シートに位置を指定するボタンが配置してありましたが、このボタンをSheet5に配置して、Sheet1・Sheet2・Sheet3の各テキストボックス1が一斉に動くようにしたいのですがよろしくお願いします。 前回のURL → http://oshiete1.goo.ne.jp/kotaeru.php3?q=85846

  • 【VBA】ユーザーフォームから、シート上のテキストボックスを操作

    ユーザーフォームで入力した値を、シート上にあるテキストボックスに入力させたいのですが、 どのように記述すればいいのでしょうか?(ボタンで操作) またおなじくテキストボックスの大きさ、フォントの大きさ、などを操作するにはどのようにしたらいいですか?

  • エクセルVBAで、テキストボックスにセルの値を入れる

    宜しくお願いします。 エクセルデータの各項目を、すでに書式(表)が印刷された用紙のそれぞれの項目の位置に印刷させたいのですが・・・ 各項目には、500行ぐらいのデータがあり、別のワークシートの表示させたい位置(すでに印刷された用紙にあわせてある)に各項目ごとのテキストボックスを作っておいて、そのテキストボックスに各項目のデータを1行ごとに表示させて、テキストボックスのフォント調整、印刷 ~を繰り返したいのですが、どのようなコードを書けばよいのでしょうか? 進め方としては、データシートからテキストボックスに各項目のデータが表示されたら、シート上でテキストボックスのフォントや位置の微調整が出来るようにしておいて、印刷ボタンをクリックすると印刷され、次へのボタンをクリックすると、次の行のデータがテキストボックスに表示されるようにしたい。 ※印刷する場合は、テキストボックス内の文字のみ印刷(シートには印刷したくない文字書きたいので・・・) また、そのフォームには、パターンが5つあって、データには1行ごとにパターン番号が入力されているとして、それぞれのパターンにあわせたテキストボックスの配置してあるシートへ行くようにもしたい。 データの入れ替わりが多いので、別のワークブックと繋がるような仕組みにしておいて、テキストボックスの配置してあるブック側から、データのあるブックを呼びに行ってデータを取りに行くようにしておきたい。 以上、条件が多くてすみませんが、VBAは初心者で、ほんの部分的にしかまだ分かりません。どなたか詳しい方宜しくお願いします。

  • テキストボックスのフォントサイズの復元

    エクセルのシート上にある、図形のテキストボックスのフォントサイズに「12」をセットしておいて、シート上に配置してあるコントロールボタンをクリックする事で、変更されたサイズから「12」へもどす仕組みを作りたいのですが・・・ テキストボックスのフォントサイズ 「12」から、テキストボックスをアクティブにし、ツールバーでフォントサイズを変更する。 ↓ ** その後 シート上に配置されたボタンを押すと元の「12」に戻る ※ エクセル97、2000で使用(作成は97) こんなことできますか? できれば、どなたか教えて下さい。宜しくお願いします。

  • エクセルVBA チェックBoxとテキストBox

    VBA勉強中の者です。エクセル2010使用 前回も同じような件で質問したのですが、入力フォームを作成中。 数量表の入力ホームなので、出来るだけキーボードのテンキーでの操作が出来るようにと考えております。 チェックボックスのon/off でテキストボックスの入力の可否を出来るようにしています。これが7組あるとします。(チェックボックス1に対してテキストボックス1に数値が入力出来るように) 質問(1) チェックが入っていれば、呼応したテキストボックスへエンターキーで移動。 チェックを入っていなければ、エンターキーで次のチェックボックスへ移動するようにしたいのです。 質問(2) シートへの転記の際は、7組の間に『、』カンマを入れたいのですが、当然チェックのないものは必要ないので、カンマが要らない事になります。初心者の考えでは単純に条件式をその通り数書くことになるのかと思うとゾッとしますが、少しでも条件式を減らす方法があれば、ご教授願います。 分かり難くて、すみません。

  • エクセルVBAでのチェックボックス操作

    エクセルを利用した、VBAで困っています。 所定のsheetに埋め込まれたチェックボックスに対して、 別sheet内のセルの値を参照し、結果をオン、オフという 操作を行いたいのですが、チェックボックスに対するVBAでの指定方法 が分かりません。 イメージとしては (1)Sheet1内にチェックボックスがある。  該当チェックボックスは7個のチェックボックスで構成されており  それぞれにchb1~chb7といったオブジェクト名がある。 (2)sheet2のA1セルに特定の値が入っていればチェックボックス(chb1)  がオン値がなければオフのまま (3)sheet2のB1セルに特定の値が入っていればチェックボックス(chb2)  がオン値がなければオフのまま という感じです。 先方より指定された様式なのでsheet1の内容や書式を変更することが出来ないので、なんとか埋め込まれたオブジェクトを操作したいのですが・・・ 良い方法があれば教えてください。

  • VBAテキストボックスの数を必要に応じて増やす

    現在、Excel2000を使用しています。 ユーザーフォーム内でテキストボックスを横並びに3つ設置しています。そこで 例えばコマンドボタンをクリックしたり、テキストボックス3でエンターキーを押すと、そのテキストボックスが下に3つ増えて、合計6個になるようにするのは可能でしょうか? 場合によってはテキストボックスが、9個、12個それ以上必要な場合 がでてきます。 やはり最初からいくつもテキストボックスを設置して、Visibleなどで 操作するしかないのでしょうか?

  • VBAテクストボックス

    VBAでテキストボックスにセルから読み込んだデータを表示して 同一フォーム内にあるボタンで条件分岐するようなことは出来ますか。 一つの条件分岐が済んだらまた次のセルからデータを引っ張ってきてテキストボックスに表示させる ようなことを行いたいのですが。

専門家に質問してみよう