• ベストアンサー

テキストボックスを消す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