• ベストアンサー

マクロ ボタンの非表示

セルのG2に”FALSE”と入力されていた場合、ボタンを非表示にしたいと思っています。 下記のように記述したのですが、ボタンが非表示になってくれません。 間違っていますでしょうか。 If Range("G2").Value = "FALSE" Then ActiveSheet.CommandButton1.Visible = True End If

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

  • ベストアンサー
  • utun01
  • ベストアンサー率40% (110/270)
回答No.1

CommandButton1.Visible = True だからでは・・・? 非表示にしたいならFalseです。 あと、セルの内容を取る際に"FALSE"の場合、 "False"としなければひっかからない可能性があります。 "FALSE"、"False"、ブランクのどれでも良ければ、 ""で囲まないでFalseと記述すればOKです。

wpag-yi
質問者

お礼

回答、ありがとうございます。 CommandButton1.Visible = False と記述したつもりが、Trueになっておりました。 また、"FALSE"をFalseと記述したところ、正常に動くようになりました。

関連するQ&A

  • 複数のセルのなかに該当があればオートシェイプを表示

    http://okwave.jp/qa/q8365189.html 上記質問の続きです。 画像のようなチェック表をExcelで作っています。 右側欄外に表を作成し、 ◎を付ける番号、○をつける番号をそれぞれ入力し、 「入力内容を反映」ボタンをクリックすると、 オートシェイプで配置した◎や○が表示されるようにしたいです。 VBAを以下のように作成してみたのですが、 ◎はつくのですが、 ○をつけるVBAが動きません。 どのように修正するべきでしょうか? ご教授ください! Private Sub CommandButton1_Click() '○で囲むVBA Dim c For Each c In Range("U103:Y103") If InStr(c.Value, "1") > 0 Then ActiveSheet.Shapes("1を囲む○").Visible = True Else ActiveSheet.Shapes("1を囲む○").Visible = False End If If InStr(c.Value, "2") > 0 Then ActiveSheet.Shapes("2を囲む○").Visible = True Else ActiveSheet.Shapes("2を囲む○").Visible = False End If Next c ・ ・ ・ '最も重要なものを◎で囲むVBA If Range("T103").Value = "1" Then ActiveSheet.Shapes("1を囲む◎").Visible = True Else ActiveSheet.Shapes("1を囲む◎").Visible = False End If If Range("T103").Value = "2" Then ActiveSheet.Shapes("2を囲む◎").Visible = True Else ActiveSheet.Shapes("2を囲む◎").Visible = False End If ・ ・ ・ End Sub ちなみに「'○で囲むVBA」のコードだけを残して動作させてみると、 1や2が一番右のセル(Y103)に入力されると、1を囲む○、2を囲む○がそれぞれ表示されるのですが、 それ以外のセル(U103からX103)に1や2を入力しても○は表示されません。 全コードを入力して動作させると、 1や2を一番右のセル(Y103)に入力しても○はどこにも表示されません。 よろしくお願いいたします!

  • エクセル・マクロでIf Thenの使い方

    このような質問は、ルール(エチケット、マナー)違反になるでしょうか? もしそうならお許し下さい。 名前ボックスに表示される名前を、マクロで非表示にし、元に戻す、という操作を次の二つのボタンで実行するように作りました。エクセル2003です。 Private Sub CommandButton1_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = False Next End Sub Private Sub CommandButton2_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = True Next End Sub これを一つのボタンで、If Then Elseを使い実行できるようにしたいのですが If ・・・ Then の間の書き方が分からずうまくいきません。   If Names.Visible = False Then   If ThisWorkbook.Names.Visible = False Then If ThisWorkbook.tname.Visible = False Then Private Sub CommandButton3_Click() Dim tname As Name If Names.Visible = False Then 'これでは駄目 For Each tname In ThisWorkbook.Names tname.Visible = False Next Else For Each tname In ThisWorkbook.Names tname.Visible = True Next End If End Sub 苦し紛れにこんなことをやってごまかそうとしているのですがこれって邪道ですしかっこうわるいですよね。 Private Sub CommandButton3_Click() Dim tname As Name If Range("g1").Value = " " Then   For Each tname In ThisWorkbook.Names   tname.Visible = False   Next Range("g1").Value = "1" Else   For Each tname In ThisWorkbook.Names   tname.Visible = True   Next Range("g1").Value = " " End If End Sub ど素人ですがよろしくご教導ください。

  • オートフィルタで非表示セルの判定

    オートフィルタでフィルタ後、表示されない行にあるボタンを消したいのですが表示されていないセルの判定方法がわかりません。 下のマクロではエラーが出ます。 よろしくお願いします。 If ActiveSheet.Range("a10").Visible = False Then ボタンを消すマクロ End If

  • 複数のセルのなかに該当があればオートシェイプを表示

    Excelで以下の図のような入力フォームを作成しています。 セルA1に1と入力したら1を◎で囲み、 セルB1からD1に2 4 5と入力したら2 4 5を○で囲みたいです。 それぞれの番号を囲むように、ふたつのオートシェイプを作成し、 それぞれに名前をつけました。 ◎をつける方法は以下のようにVBAを作成しうまくいったのですが、 ○をつける方法がわかりません。 ひとつでなく複数のセルを参照して、そのなかに該当があれば○をつける、 というやり方を教えていただけないでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Target.Value = "1" Then On Error GoTo SHAPEMAKE ActiveSheet.Shapes("1を囲む内側の○").Visible = True ActiveSheet.Shapes("1を囲む外側の○").Visible = True Else ActiveSheet.Shapes("1を囲む内側の○").Visible = False ActiveSheet.Shapes("1を囲む外側の○").Visible = False End If Exit Sub SHAPEMAKE: ・・・・・・ End With End Sub

  • 【Excel VBA】ワークシートの表示(続き)

    すみません。 追記が出来なかったため、コードの続きをこちらに記載します。 For i = 1 To 12 If actsht = tmp(i) Then Flag = 1 Anser = MsgBox("翌月分シートを作成しますか?", vbYesNo + vbDefaultButton1, "確認") If Anser = vbYes Then ActiveSheet.Copy After:=ActiveSheet ActiveSheet.Name = tmp(i + 1) Sheets(actsht).Tab.ColorIndex = 2 Sheets(actsht).Range("B3").Value = Sheets("Sheet2").Range("A1").Value Sheets(actsht).Range("B4").Value = Sheets("Sheet2").Range("A2").Value ActiveSheet.Range("A2").Select Exit For ElseIf Anser = vbNo Then Exit For End If End If Next If Flag = O Then MsgBox ("新しいワークシートを作成出来ません。") End If If actsht = tmp(i) Then If Sheets(元データ).Visible = False Then Sheets(元データ).Visible = True End If End If End Sub

  • マクロが動きません

    以下のようなプログラムでC3の値が変わるたびにA10の値に1を加えていきG3,H3が両方0になったらA10の値も0にする。C5の値が変わるたびにA15の値に1を加えJ3,K3が共に0になったらC5も0にするようにしました。 しかし、動作しません。 このシートの3行目は=シート名!セル番号 という形でほかのシートのセルの値が表示されるようになっています。G3、H3、J3、K3に手動で数値を入力した場合 は動作します。 ほかのシートのセルの値を表示させたセルの値が変化しても動作させる方法はないでしょうか> Private Sub worksheet_change(ByVal target As Range) With target If .Count > 1 Then Exit Sub If IsNumeric(.Value) = False Then Exit Sub If IsEmpty(.Value) = True Then Exit Sub If Not .Row = 3 Then Exit Sub Select Case .Column Case 3 Range("A10").Value = Range("A10").Value + 1 Case 5 Range("A15").Value = Range("A15").Value + 1 End Select End With If Range("g3").Value = 0 And Rang("h3").Value = 0 Then Range("A10").Value = 0 If Range("j3").Value = 0 And Rang("k3").Value = 0 Then Range("A15").Value = 0 End Sub

  • Excel2007のカレンダーコントロール

    Excel2007のカレンダーコントロールで質問します。 Private Sub Calendar1_Click() ActiveCell.Value = Calendar1.Value ActiveSheet.Calendar1.Visible = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$4" Then ActiveSheet.Calendar1.Visible = True End If End Sub この状態ですと、セルA4をクリックしたときだけカレンダーコントロールが表示されます。 A列をどこでもクリックしたときにカレンダーコントロールが表示されるようにするには どこを、どう変更すればよいのでしょうか? 教えてください。

  • エクセルVBAでShapesまたはDrawingObjects

    シート上のフォームなどを表示/非表示するためtest04を書きましたが、「実行時エラー438 オブジェクトはこのプロパティまたはメッソッドをサポートしていません」となります。 しかし、Test05のように同じことをForNextで回せばうまくいきます。 また、Test06のようにShapesをDrawingObjectsに書き換えただけでもうまくいきます。 では、Test04がエラーになるのはなぜでしょうか? Sub test04() With ActiveSheet.Shapes If .Visible = False Then .Visible = True Else .Visible = False End If End With End Sub Sub test05() For Each sp In ActiveSheet.Shapes If sp.Visible = False Then sp.Visible = True Else sp.Visible = False End If Next End Sub Sub test06() With ActiveSheet.DrawingObjects If .Visible = False Then .Visible = True Else .Visible = False End If End With End Sub

  • マクロでエラー

    Excelのチェックボックスについて ご質問致します。 デザインの都合上、 チェックボックスで「いずれか1つを選べる」ように マクロを作成しています。 1つの質問に対して3つの選択肢があります。 ・Aボタンをチェックしたら、BとCのチェックを外してセルの名前「質問1」に0を入力 ・Bボタンをチェックしたら、AとCのチェックを外してセルの名前「質問1」に1を入力 ・Cボタンをチェックしたら、AとBのチェックを外してセルの名前「質問1」に3を入力 ということをしたいです これが12問ぐらいあります。 例えば質問1はこんな感じで作成しましたが エラーで、Excelが終了してしまいます。 どの辺がおかしいのかご指摘頂けると嬉しいです Private Sub Q1_A_Click() ActiveSheet.Q1_A.Value = True ActiveSheet.Q1_B.Value = False ActiveSheet.Q1_C.Value = False ActiveSheet.Range("質問1").FormulaR1C1 = 0 End Sub Private Sub Q1_B_Click() ActiveSheet.Q1_A.Value = False ActiveSheet.Q1_B.Value = True ActiveSheet.Q1_C.Value = False ActiveSheet.Range("質問1").FormulaR1C1 = 1 End Sub Private Sub Q1_C_Click() ActiveSheet.Q1_A.Value = False ActiveSheet.Q1_B.Value = False ActiveSheet.Q1_C.Value = True ActiveSheet.Range("質問1").FormulaR1C1 = 3 End Sub

  • エクセルVBAのオプションボタンがうまくいきません 

    エクセルのVBAでフォームをつくり 3つのオプションボタンを配置し チェックした項目のとき、指定したセルに「レ」の印を書き込ませたいのですが、うまくいきません。 同じフォーム内のテキストボックスやコンボボックスの内容はうまくセルに書き込めるのですが・・・ オプションボタンのグループは設定してあります。 下のように記述したのですが、なぜ思うように動作しないか教えてください。 If オプション(3) = True Then ActiveCell.Value = "レ" ElseIf オプション(1) = True Then Range("H21").Value = "レ" ElseIf オプション(2) = True Then Range("H23").Value = "レ" End If