• ベストアンサー

EXCELの初歩的なマクロ(VBA)の記述について

本当に初歩的な内容で申し訳ありませんが、ボタンをクリックした時にある図形を非表示にし、もう1回クリックすると表示にする方法を教えて頂けませんか。 (ボタン:ボタン1、図形:図形1)  Sub ボタン1_Click()  End Sub 上記の2行の間に、記述する内容になるかとお思います。 EXCEL2010を使用してます。 お手数ですが、よろしくお願いします。

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

  • ベストアンサー
回答No.1

ごく単純な考え方だと  ・図形1が表示されていれば→非表示  ・図形1が表示されていなければ→表示 という分岐ですね。 Sub ボタン1_Click()   If ActiveSheet.Shapes("図形1").Visible = True Then     ActiveSheet.Shapes("図形1").Visible = False   Else     ActiveSheet.Shapes("図形1").Visible = True   End If End Sub で十分かと。

satoshi5050
質問者

お礼

うまくいきました。 本当にありがとうございました。

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

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

エクセルのユーザーフォームに コマンドボタン1つ、イメージコントロール1つ貼り付け Private Sub UserForm_Click() Dim Pic As Object Set Pic = LoadPicture("XXXXXXXXX.jpg") 'フルパスで指定。写真でテスト。 Image1.Picture = Pic End Sub ユーザーフォームをクリック。 画像がImage1に現れる。 そこでユーザーフォームのコマンドボタンのクリックイベントに Private Sub CommandButton1_Click() Static s If s = True Then UserForm1.Image1.Visible = False s = False Else UserForm1.Image1.Visible = True s = True End If MsgBox s End Sub SUB/ユーザーフォームの実行で フォームのコマンドボタンのクリックで画像が消えたり現れたりする。 ーー >初歩的な内容で申し訳ありませんが 初歩的ではなく、昨日今日VBAをやり始めたものには、全体として、むつかしすぎる事項と思う。 内容が初歩的かどうかは、初心者は軽々しく言うべきでない場合が多い。 ーー 回転式スイッチのような仕組みを実現するのに、数1に-1を掛けて、1と-1を交互に変化させる手もある。 その値の1とー1によって状態を変化させる。常套手段。

satoshi5050
質問者

お礼

ありがとうございました。

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

関連するQ&A

  • エクセルのマクロ

    エクセルで表示>ツールバー>フォームよりボタンを 作成し、それをクリックすると インターネットエクスプローラーを立ち上げて リンク先、(例えばhttp://www.yahoo.co.jp/) にアクセスできるようにしたいと考えています。 エクセルにリンク先を取り込むのではなく、インターネット エクスプローラーを自動的に立ち上げてリンク先にアクセスする というのがやりたいことです。 営業職なものでまったく良くわからないのですが、 Sub ボタン1_Click() xxxxxxxxxxxxxxxxxxxxxxxxx End Sub 上記において、 xxxxxになにを記述すれば可能になるのでしょうか? ご教授頂きたく思います。 どうぞよろしくお願いいたします。

  • エクセルのマクロの記述について

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • EXCEL VBA 印刷

    EXCEL VBA 印刷 初歩中の初歩で申し訳ありません・・・該当シート(Sheet1(名前は別名))の印刷をしたいと思い、ボタンの設定をしたのですが エラーとなります(画像を添付します。) お手数ですが、フォローの程宜しくお願いいたします。 参考までにコードも記載します。 Private Sub CommandButton9_Click() Range("A137").Select End Sub --------------------------上記はこんぼボックスで該当セルへジャンプしています。 Sub 印刷の実行() Worksheests("Sheet1").PrintOut End Sub

  • エクセル・マクロボタンの表示を変更したい

     初歩的質問ですみません。  Excel2000で、VBAの修正を頼まれています。  シート上に印刷用ボタンが2個、既に作られているので、その表示タイトルを (例えば、「4月分印刷→5月分印刷」のように)変更したいのです。  しかし、 右クリックしてもタイトルにカーソルが点滅しませんし、マクロ名などの表示も出てきません。 ユーザーフォームもありませんでした。 コードは(標準モジュールではなく)Sheetに以下のように記述されています。 Private Sub Printout_Click() ActiveSheet.PageSetup.PrintArea ="$A$2:$G$20" End Sub Private Sub Printout2_Click() ActiveSheet.PageSetup.PrintArea ="$F$2:$L$20" End Sub  どこにも、ボタンのタイトル表示が見つからないので、変更できず困っています。 (非表示のSheetなどもありません)  どなたか、ご存知の方がいらしゃったら、教えて下さい。 よろしくお願いします。

  • エクセルマクロ(VBA)での手順

    エクセルマクロ(Vba)にて、ご教示をお願い致します。 ユーザーフォーム上にデータをクリアするコマンドボタンを沢山貼り付けております。 一括クリアするボタンを作成したのですが長文になってしまいます。 Private Sub CommandButton101_Click()   Call CommandButton1_Click   Call CommandButton2_Click   Call CommandButton3_Click   Call CommandButton4_Click   Call CommandButton5_Click   Call CommandButton6_Click ↓ ↓ ↓   Call CommandButton50_Click End Sub 以下のような内容に置き換えたいのですが、上手くいきません。 For i = 1 To 50 Me.Controls ("CommandButton1" & i & "_Click") Next 本を片手に、やっておるのですが行き詰ってしまいました。 お知恵を拝借させてください。 よろしくお願いたします。

  • エクセルVBAのマクロ文について

    エクセルVBAで、シート上のボタン(フォーム)をクリックすると、UserForm1が表示されてその中のTextBoxに別のシートのセルに入力したいる値を表示させたくて、以下のようにボタン(フォーム)にマクロを入力したのですが、エラーがでてきてうまくいきません。 入力したマクロが間違っているのでしょうか? Sub ボタン1_Click() UserForm1.Show UserForm1.TextBox1 = Sheets("入力").Ranges("D11").Value End Sub すみませんが、ご存知の方、教えてくださいませんか?

  • Excel VBAでの定数宣言について

    初心者が書籍とにらめっこしながらマクロを書いています。 お助けください。 複数あるラジオボタンをクリックしたら、そのラジオボタンの種類に応じて、特定の行を表示したり、非表示にしたりしたいと考えています。行の追加や削除で行番号が変わってしまった場合に備えて、この行番号を定数として宣言したいと思ったのですが、うまくいきません。 シートモジュールには、以下のように記述しています。 ============================================================== Private Sub OptionButton1_Click() 'ラジオボタン1を選択 Rows(scope1).EntireRow.Hidden = False 'scope範囲行を表示 Rows(scope2).EntireRow.Hidden = True 'scope範囲行を非表示 End Sub Private Sub OptionButton2_Click() 'ラジオボタン1を選択 Rows(scope1).EntireRow.Hidden = True 'scope範囲行を非表示 Rows(scope2).EntireRow.Hidden = False  'scope範囲行を表示 End Sub ============================================================== 以下の記述で定数を宣言したいのですが、 public const scope1 = "38:48" '38行目~48行目 public const scope2 = "49:52" '49行目~52行目 シートモジュールの最初に書くと、 「コンパイルエラー  定数、固定長文字列、配列、ユーザー定義型およびDeclareステートメントは、オブジェクトモジュールのパブリックメンバとしては使用できません」 とエラーメッセージが表示されてしまいます。 エラーの意味がよく分からないのですが、定数宣言は、どこに記述すればよいのでしょうか? お教えください。よろしくお願いします。

  • excel VBA 作成したUserFormにoptionButton

    excel VBA 作成したUserFormにoptionButtonを多数配置しています。このUserFormをワークシート上に再表示すとる、チェック項目に入力したチェックが消えてしまいます。消えない方法が解りません。 private sub OptionButton1_Click() Activesheet.Shapes("図形1").Visible=False '図形1表示 End sub private sub OptionButton1_Click() Activesheet.Shapes("図形1").Visible=True  '図形1非表示 End sub  同様な書式で数項目あります。 又、保存したワークシートを読み込んだ場合も同様に出来ないでしょうか。optionButtonのチェック項目が多数あります。チェック項目は図形を表示と非表示です。何方か良い方法がありましたら教えて頂けないでしょうか。宜しくお願いします。

  • エクセルVBAマクロのオプションボタンについて

    オプションボタンのマクロに関して教えて下さい。 マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。 「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。 色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。 Private Sub OptionButton1_Click() オプション1 = True End Sub Private Sub OptionButton2_Click() オプション2 = True End Sub Sub オプションボタン() If オプション1 = True Then Range("a1") = 1 ElseIf オプション2 = True Then Range("a1") = 2 Else Range("a1") = 0 End If End Sub 作ったオプションボタンを右クリックしてマクロ登録を選ぶと、「オプション1_Click」となっているので、「OptionButton1_Click」を「オプション1_Click」に変えてみたのですが、やっぱり駄目でした。 ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。 ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。

  • エクセルVBAの記述で・・・OTL

    エクセルVBAの記述で・・・OTL VBA初心者です。 まず、私が記述した内容を書きます。 Sub 実践練習() Dim tuika As String tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する内容を入力して下さい。", _ Left:=650, _ Top:=100, _ Type:=2) If Worksheets("Sheet2").Range("G10").Value <> " FALSE " Then MsgBox "OKです", vbOKOnly + vbDefaultButton2, "追加完了" With Worksheets("Sheet2") .Range("G10").Value = tuika LastRow = Worksheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet3").Range("A" & LastRow).Value = Worksheets("Sheet2").Range("G10").Value End With Else MsgBox "入力が不足しています。", vbOKOnly + vbCritical, "入力ミス" End If End Sub() 完成させたいことは・・・ Sheet1に存在するInputbox(ボタン)を使用し、 Sheet2のG10にFALSE以外が入力されたときは、 MsgBox追加完了のダイアログを表示してSheet2のG10値をSheet3のA列に順番に転送させる。 もしFALSEが入力されてしまったら、 MsgBox入力ミスを表示させて、 Sheet2のG10の値(FALSE)を削除しなさい。 と、記述したいのです。 勿論、上記の記述は完成していません(泣 どなたか、ご教授の程、何卒宜しくお願い致します。 (上記の完成型をお待ちしてます m(_ _)m ) 【環境】 OS:WindowsXP Pro Excel:2003

このQ&Aのポイント
  • ポケトーク字幕のパソコンから直接入力は2022年1月から利用可能です。
  • ソースネクスト株式会社の製品・サービスとして提供されています。
  • 具体的な開始時期については公表されていませんが、来年の1月頃を予定しています。
回答を見る

専門家に質問してみよう