• ベストアンサー

別シートのトグルボタンを指定したい

複数シートがあって、それぞれのシートにトグルボタンがあるとします。 トグルボタンを押したときの動作は同じなので、 標準モジュールとかに動作内容を記述したいのですが、 「If ActiveSheet.ToggleButton1 = False Then」とか記述しても エラーが出ます。 アクティブなシートにあるトグルボタン1が押された時の動作内容を書きたいです。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.4

#すみません、長くなるので分けます。(1/2連投) 通常の手順でサンプルを作成して多条件大量にテストしましたが、 ご提示の記述はエラーなく正常に機能し正しい判別を返すことを確認しました。(xl2010で確認) 以下を実行して確認しました。 ' ' ====================シートモジュール================== Private Sub ToggleButton1_Change()   Call マクロ0 End Sub ' ' ====================標準モジュール==================== Sub マクロ0()   If ActiveSheet.ToggleButton1 = False Then     MsgBox "Raised"   Else     MsgBox "Sunken"   End If End Sub ' ' ====================================================== ■ オブジェクト名の確認 ■ エラーになる可能性として、 コントロールに表示されている文字列=キャプション と、 コントロールを指す一意な名前=オブジェクト名 との食い違いがあることに気が付かないことがよくあるので、 念の為、オブジェクト名を確認してみてください。 例えば、 トグルボタンに表示されている文字列が   ToggleButton1 であっても、 VBAから参照するのに必要なオブジェクト名が   ToggleButton2 などに書き換わっている場合があります。 (例えばToggleButton1のコピーを作成した場合など) この場合、ToggleButton1 が存在しない、と判断されると、   If ActiveSheet.ToggleButton1 = False Then の行でエラーになり、添付画像のメッセーシが表示されます。 以下、エラーの種類が同じならば、という限定的な対処法です、 まず、(手作業で確認するのも大変でしょうから) すべてのシートに存在するすべてのトグルボタンについて そのオブジェクト名とキャプションを確認するマクロを書きました。 MsgBoxを表示するだけなので、害はありませんから、 ひとまず、これを実行して確認してみてください。 ' ' ====================標準モジュール==================== Sub CheckTgl8276008()   Const RegName = "ToggleButton1"   Dim sh As Worksheet   Dim oOle As Excel.OLEObject   Dim sMsg As String   sMsg = "各シートのトグルボタン" & vbLf & "シート名" & vbTab & "オブジェクト名" & vbTab & "キャプション"   For Each sh In Worksheets     For Each oOle In sh.OLEObjects       If TypeName(oOle.Object) = "ToggleButton" Then         sMsg = sMsg & vbLf & sh.Name _           & vbTab & oOle.Name & IIf(oOle.Name = RegName, "", "◆") _           & vbTab & oOle.Object.Caption       End If     Next   Next   MsgBox sMsg End Sub ' ' ====================================================== ●マクロの実行結果として 1●表示されたオブジェクト名が、 前提としている名前 ToggleButton1 と異なる(ものが含まれる)場合は、 名前を合わせてやれば解決です。 マクロ側でオブジェクト名を変えるだけで済む場合もあるでしょう。 一部のトグルボタンのオブジェクト名を変える方が簡単な場合もあるでしょう。 オブジェクト名の変更は、   デザインモード → トグルボタンを右クリック → プロパティ → オブジェクト名 の順に辿って、書き換えるだけです。 ひとつのシートに重複した名前を付けられない点にだけ注意してください。 2●表示される 筈 のオブジェクト名が、 表示されない場合は、恐らく、 フレームコントロール上に配置されたトグルボタン、だったということだと思います。 この場合は、オブジェクトの指定の仕方を書き換える必要があります。、   If ActiveSheet.Frame1.Controls("ToggleButton1").Value = False Then ここで記す Frame1 ToggleButton1 どちらもオブジェクト名です。 フレーム上に配置したトグルボタンのオブジェクト名、確認や変更は、   デザインモード → フレームを右クリック → フレームオブジェクト / 編集 → トグルボタンを右クリック   → プロパティ → プルダウンメニューから Name をクリック → 上部入力ボックスにて Name を修正 → 適用をクリック という手順になります。 ひとつのフレーム内に重複した名前を付けられない点にだけ注意してください。 尚、フレーム上に配置したコントロールでのイベントに関しては http://okwave.jp/qa/q8271250.html こちらを参考にしてください。 ■ トグルボタン(またはそのTempファイル)破損の可能性 ■ 今回ご質問の内容からすると、この手のトラブルなら、 もう少し違う説明になるでしょうから、可能性低いと思うので、簡単に済ませますが。 様々織り交ぜて、1000件程度のテストをしていた中で、 トグルボタンが(一時的に)破損(破断)するエラーを2度、確認できました。 原因の特定までは出来ていないので、偶然であって、再現は出来ないのですが。 この場合でも、マクロ0 実行時には添付画像のエラーが発生します。 ■ 余談 ■ (記憶に残っていないので)明確な理由を挙げることが出来ませんが、 私個人としては、自分の手を離れて他人が編集するファイルでは ActiveX コントロールの ToggleButton、ScrolBar、SpinButton などのコントロールは シート上では使わないようにしています。 私なりの対策として、 (少なくとも、動作(ボタン操作時の反応)が軽快になるというはっきりとした理由もあって) ' ' ====================シートモジュール================== Private Sub Label1_Click()   If Label1.SpecialEffect = fmSpecialEffectRaised Then     Label1.SpecialEffect = fmSpecialEffectSunken   Else     Label1.SpecialEffect = fmSpecialEffectRaised   End If   MsgBox Label1.SpecialEffect = fmSpecialEffectSunken End Sub ' ' ====================================================== のように、同じ ActiveX コントロール ですが Label コントロールを使うようにしています。 名前を挙げたコントロールの中で私の経験上、一度も破損したことがないのは Label コントロールだけなので、もしかして、こういうトラブルだった場合にでも、 思い出して、参考にしてもらえたら、と思います。 (もっとも、LinkedCellとか使っている場合など、自力実装になりますが) (次投稿につづく)

miya2004
質問者

お礼

ご指摘のようにオブジェクト名が間違っていました。

その他の回答 (5)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.6

#2です。 「お礼」?への回答は、素晴らしい回答者の皆様にお任せして、望まれてはいないと思いますが、#2を汎用化したコードを投稿しておきます。ご参考まで。 '☆ThisWorkbook モジュール Dim myToggleCtrls() As Class1 Private Sub Workbook_Open() Dim i As Long Dim sh As Worksheet Dim shp As Shape i = 1 For Each sh In Worksheets For Each shp In sh.Shapes If shp.Type = msoOLEControlObject Then If shp.DrawingObject.progID = "Forms.ToggleButton.1" Then ReDim Preserve myToggleCtrls(1 To i) Set myToggleCtrls(i) = New Class1 Set myToggleCtrls(i).control = sh.DrawingObjects(shp.Name).Object i = i + 1 End If End If Next shp Next sh End Sub '☆標準モジュール Sub test(myToggle As msforms.ToggleButton) With myToggle MsgBox .Parent.Name & vbCrLf & .Name & vbCrLf & CStr(.Value) End With End Sub '☆Class1モジュール Private WithEvents toggleCtrl As msforms.ToggleButton Public Property Set control(newControl As msforms.ToggleButton) Set toggleCtrl = newControl End Property Private Sub toggleCtrl_Click() Call test(toggleCtrl) End Sub

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.5

(2/2連投) ■ 総合的な対策案 ■ たぶん現在のマクロ呼び出しは、先にに挙げた   Call マクロ0 の例のような構造で試しているのだと思います。 > 「If ActiveSheet.ToggleButton1 = False Then」 この記述が原因でアクセスに失敗することは考えにくいですが、 なるべくエラーフリーの方向で幾つか挙げてみます。 ' ' ====================シートモジュール==================== Private Sub ToggleButton1_Change()  '  ◆例1~◆例5、択一   Call マクロ1  ' ◆例1   Application.OnTime Now, "マクロ1"  ' ◆例2   Call マクロ1_2  ' ◆例3   Call マクロ2(ToggleButton1)  ' ◆例4   Call マクロ3(ToggleButton1.Value)  ' ◆例5 End Sub ' ' ====================標準モジュール==================== Sub マクロ1()   If ActiveSheet.ToggleButton1.Value = False Then     MsgBox "マクロ1"   End If End Sub Sub マクロ1_2()   If ActiveSheet.OLEObjects("ToggleButton1").Object.Value = False Then     MsgBox "マクロ1_2"   End If End Sub Sub マクロ2(ByVal tglTarget As MSForms.ToggleButton)   If tglTarget.Value = False Then     MsgBox "マクロ2"   End If End Sub Sub マクロ3(ByVal flgTgl As Boolean)   If flgTgl = False Then     MsgBox "マクロ3"   End If End Sub ' ' ====================================================== ◆例1  ほぼ、ご提示の原型通りです。 ◆例2  Excel一般機能(フィルタとか)でセルの表示非表示を切り替えたり  セル範囲のスクロール(.Select も含む)などする場合にお奨め。  イベントプロシージャを抜けてからマクロを実行します。  エラーを解消するのに役立つケースがあります。 ◆例3  例1と比べるとアクセスが約3倍遅くなりますが、  オブジェクト名を文字列で指定できるのが長所。  「こう書くべき」と仰る方も少なからず居らっしゃるかと。 ◆例4  ToggleButton オブジェクトを引数として 値渡しにしてマクロを呼びます。 ◆例5  ToggleButton の .Value プロパティを取得し、  論理値(Boolean)を引数として 値渡しにしてマクロを呼びます。 今回の課題については、上記◆例5(場合によっては◆例4)のような構造にするのがお奨めです。 具体的な処理全体を見ないと断言はできませんが、 見えている限りでは、最も一般的で適した構造だと思います。 契機になったボタンを探し直さなくてもいい、という意味です。 ■ 蛇足 ■ 多数のコントロールのイベントを一様に一カ所に記述する、ということでしたら、 新規のクラスモジュールを設けるのがお奨めです。 ただ、現状エラーの原因が特定されていませんから、付け加えると、 エラー発生時に、デバッグして、実行中のプロシージャをキチンと抜けるなら問題ないのですが、 [終了]、[リセット]、[デザインモード]などで終らせる場合は、 クラスの設定をやり直さないといけません。 これを知らないと、おや?ってことになるかも知れないと思いましたので念の為。 以上です。

回答No.3

検証はしてないですが、きっと No.2 さんのご回答でうまく行くのでしょう。もちろん、簡単に No.1 さんの方法でもいいですね。ベストアンサーは辞退します。 >セルの場合は、ActiveSheet.Cells(1,1)と書けるのに  トグルボタンはActiveSheet.Togglebutton1と書けないのなぜなのでしょうか? 「ActiveSheet.ToggleButton1」あるいは「ActiveSheet.ToggleButton1.Value」という記述そのものは、ひとまず文法的に誤っていません。さらに、トグルボタンのあるシートモジュールに書いているときは、「Me.ToggleButton1.Value」というのもオッケーだし、「ToggleButton1」しか書いてなくても True / False になるので平気だったりします。 エラーが出ているのは多分そこじゃなく、どこなのかは分かりませんが、とりあえずイベントドリブン(イベント駆動型)のプログラムにしたいのに、オブジェクトがないぞということだと思います。シートやクラス(のインスタンス)はオブジェクトですが、標準モジュールということは、オブジェクトがない。 例えばトグルボタンを置いたシートのモジュールならば、「Private Sub ToggleButton1_Click()」とか「Private Sub Worksheet_Change(ByVal Target As Range)」という具合に、「オブジェクト_イベント」という名前のプロシージャを書きます。しかし標準モジュールでは、そうはならないということ。質問者さんとしては、クリックというイベントが起こった際に、何らかの処理をさせたいわけですよね? なおモジュールというのは、宣言とプロシージャの集まったもののことです。だいたい同じ意味の英単語として unit がありますが、プログラミングでは module と言います。モジュールの集まりは、プロジェクトと呼んでいます。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

シートモジュールにコードは書きたくないんだ!という場合です。 http://okwave.jp/qa/q8272300.htmlの応用編ですが、こちらはクラスモジュールを用いないと無理だと思います。 各シートにToggleButton(コントロールツールボックス)が一個ずつあり、名前はデフォルトのままで変更していないとします。 標準モジュールのプロシージャに、クリックされたトグルボタンの存在するシートと、ボタンの状態を渡しています。(後はお好きに料理して下さい) 動作説明だけのスケルトンですので、エラー処理とか、オブジェクトの解放とかはご自分で肉盛りをお願いします。 '☆ThisWorkbookモジュール Dim myToggleCtrl() As Class1 Private Sub Workbook_Open() Dim i As Long On Error Resume Next For i = 1 To Worksheets.Count ReDim Preserve myToggleCtrl(1 To i) As Class1 Set myToggleCtrl(i) = New Class1 Set myToggleCtrl(i).control = Sheets(i).ToggleButton1 Next i End Sub '☆Class1モジュール Private WithEvents toggleCtrl As MSForms.ToggleButton Public Property Set control(newControl As MSForms.ToggleButton) Set toggleCtrl = newControl End Property Private Sub toggleCtrl_Click() Call test(toggleCtrl.Parent, toggleCtrl.Value) End Sub '☆標準モジュール Sub test(mySheet As Worksheet, toggleValue As Boolean) MsgBox mySheet.Name & vbCrLf & CStr(toggleValue) End Sub

miya2004
質問者

お礼

セルの場合は、ActiveSheet.Cells(1,1)と書けるのに トグルボタンはActiveSheet.Togglebutton1と書けないのなぜなのでしょうか?

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

それぞれのシートに Private Sub ToggleButton1_Click() 標準モジュールの実行したいプロシージャ End Sub として 標準モジュールに Function 標準モジュールの実行したいプロシージャ() If ActiveSheet.ToggleButton1 = False Then 実行したいコード End If End Function でいけませんか。

関連するQ&A

  • Excel VBAで「こういう状態の時にトグルボタン押下」は?

    Excelで、シートの保護をするためのトグルボタンをつけています。 (押してある時は保護) よく考えたら、ツールバーから保護された時にも ボタンが押下状態にならないと使いづらいのではないかと思い、 If ActiveSheet.protect Then ボタン名 = True End If If ActiveSheet.Unprotect Then ボタン名 = False End If とやってみたんですが、うまく機能しません。 どうしたら良いのでしょうか?

  • トグルボタンの排他制御でご教授ください。

    いつもお世話になっております。 エクセル2003のマクロVBAで、トグルボタンの排他制御を行っております。 ひとつのフレーム上の二つのトグルボタンの制御は、MSのサンプルソースを参考に以下のようなソースを作成して、制御できております。 教えて頂きたい内容は、同じようにひとつのフレーム上に、二つのトグルボタンを追加して、排他制御を行いたいたく検討しています、できれば、以下の ExclusiveToggleButtons() を使いたいと思っていますが、for ループのフレーム名が固定です。 フレーム名を可変にすれば、共用できるのではないかと思っていますが、なかなかうまくいきません、よい方法がありましたら、ご教授願います。 --- 標準モジュール ------------ start --- Sub ExclusiveToggleButtons() Dim my_toggle As Control ' Loop through all the ToggleButtons on Frame1. For Each my_toggle In myStartForm.my_MonthChoice_Frame.Controls ' If Name of ToggleButton matches name of ToggleButton ' that was clicked... If my_toggle.Name = my_Clicked_But Then '...select the button. my_toggle.Value = True Else '...otherwise clear the selection of the button. my_toggle.Value = False End If Next --- 標準モジュール ------------ end ---

  • トグルボタンの文字色

    windows-xp、アクセス2003、を使っています。 フォームに複数のトグルボタンを置き、下記コードをつけました。 そこで質問です。 「トグルボタンがONの時は赤色、OFFの時は黒色にする。」ということをしたいです。 できましたら、下記コードに書き加えて頂けませんでしょうか。 Private Sub CH01_Click() If CH01 = -1 Then CH02 = 0 CH03 = 0 End If End Sub Private Sub CH02_Click() If CH02 = -1 Then CH01 = 0 CH03 = 0 End If End Sub Private Sub CH03_Click() If CH03 = -1 Then CH01 = 0 CH02 = 0 End If End Sub すみませんが、宜しくお願い致します!!

  • Excel トグルボタンについて教えて下さい

    今朝、コマンドボタンについて質問をして、 ボタンを押すごとに、特定のセルに1とブランク(=0)を 交互に入力する方法を教えてもらったのですが、その中で 新しい、トグルボタンという機能を教えてもらい、 本などを見て自分なりにやってみたのですが、 回答が見つからず、またまた書き込んでしまいました;; 先ほどは、ABS()の絶対値を使って、0と1を繰り返す方法と 下記のプログラムを教えて頂いたのですが、 Private Sub CommandButton1_Click() If Range("D1").Value <> "" Then   Range("D1").Value = "" Else    Range("D1").Value = 1 End If End Sub 作りたい書類には1を入力したときに凹ませたいのですが、 教えてもらった回答では どうしても、0の時に凹んで 1のときに凸るんです。 内容を色々変えてやってみたものの成功には至らず、 本を見ても回答に見合った例がなく、うまく出来ません。 っというか、コマンドボタンと同様の式では、 凹んだときにTrueを返して、凸ったときにFalseを返すという 折角のトグルボタンの意味が無いですよね? とどのつまりが、お知恵をお貸し頂きたいということで、 毎度ながら申し訳ないのですが 何卒宜しくお願いします。

  • シート上のボタン、オブジェクト名取得 or 変更

    探してみたのですが、 良い方法が見当たらないため質問させて頂きます。 Excel2003を使用しています。 UserForm上で、シートにボタンを追加し、 マクロを登録するプログラムを組みました。 -------------------------------------- With ActiveSheet.Buttons.Add(Range("H1").Left, _ Range("H1").Top, _ Range("H1:I1").Width, _ Range("H1").Height) .OnAction = "HiddenDataOpenMacro" .Characters.Text = "表示" .Characters.Font.Size = 8 End With --------------------------------------- この場合、H1の部分に新しいボタンが登録されます。 作成したボタンのオブジェクト名が知りたいのですが、 どのようにしたら分かるでしょうか? もしくは、HiddenDataOpenMacro上に どういうプログラムを組めばいいのか教えて頂きたいです。 --------------------------------------- Sub HiddenDataOpenMacro() If ActiveSheet.Commandbuton1.Caption = "表示" Then ActiveSheet.CommandButton1.Caption = "非表示" ActiveSheet.Rows.Hidden = False ElseIf ActiveSheet.Commandbuton1.Caption = "非表示" Then ActiveSheet.CommandButton1.Caption = "表示" ActiveSheet.Rows("2:20").Hidden = True Else MsgBox "違うよ!" End If End Sub ------------------------------------------ ためしに、上記マクロを考えてみました。 シート上には、マクロ登録してあるボタンがもう1つあります。 やりたいことはシンプルでして、 ボタンに表示されている文字列が”表示”だった場合、 ボタンに表示されている文字列を”非表示”に変更 また、非表示にしていたデータを表示にします。 ボタンの文字列が”非表示”だった場合には、 文字列を”表示”に変更し、 指定部分を非表示にします。 標準モジュールでの操作ではできませんでした。 (メソッドをサポートしてませんとエラーが出ます。) シートは毎回新しく作り直すため、 シートにプログラムを書くのはもったいない?気がします。 どうにか方法は無いでしょうか? ボタンを作成するときに、オブジェクト名まで指定できれば 良いかと思うのですが・・・ 話がごちゃごちゃになってきましたので、 やりたいことをまとめます。 ●シートにある、指定文字列が書いてあるボタンのオブジェクト名を取得 ●ボタン作成時にオブジェクト名を設定する方法 ●If ActiveSheet.Commandbuton1.Caption = "表示" Then ではない他の書き方 以上、よろしくお願い致します!

  • マクロ ボタンの非表示

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

  • シートのコード(マクロ)で別のシートを指定することはできますか?

    環境はWINDOWS XP, EXCEL 2003 です。 VBAについて、初歩的な質問ですみません。 コードを書けるモジュールには Microsoft Excel Objects と標準モジュールとありますが、シートのコードでは、別のシート上のセルをオブジェクトとして指定することはできないのでしょうか? 今開いていて、ボタンのあるシートを、Sheet1 (基本画面)、読み込みたいデータがあるシート(同じブック内)をSheet3 (計算用)、とします。 基本画面のセルA1に日付を入力してから、「データ選択」ボタン(コントロールツールボックスで標準で出てくるボタンです)を押すと以下のマクロが動くようにしたため、このコードはSheet1のモジュールに書きました。 このマクロの前半に、日付が、計算用のC3に事前に書き込まれている日付と一致しているかどうかを判定させ、一致しない時は中断するようにさせたのです。マクロ後半は本題と関係ないと思うので省きます。 Private Sub データ選択_Click() '前半で下準備ができているか、チェック Hidzuke = Range("A1").Value Sheets("計算用").Select Atai = Range("C3").Value Sheets("基本画面").Select If Atai <> Hidzuke _ Then Range("A2").Value = "下準備ボタンを先に押してください" Exit Sub End If '以下、省略 End Sub すると、Range("C3").Value は、Sheets("計算用") の"C3"ではなく、 Sheets("基本画面") の方の"C3"を対象として読み込んでしまいました。私はシートのコードを書くことはあまり多くなく、標準モジュールと同じ感覚で、Sheets("計算用") の"C3"の値を読んだつもりだったのですが、シートのコードと標準モジュールでは、どのような違いに注意したら良いのでしょうか。 さらに不思議なことに、この"C3"を"C7"などに変えると、Ataiの中身が "準備完了" などの文字列になったのです。しかしこの"準備完了"という文字列は、現在のブックにはどこにもありません。今のファイルの前の前ぐらいまで、確かに、 Sheets("基本画面") の"C7"には、"準備完了" と書き込んでいました。なぜ、昔のセルの中身(値)がゴーストのように残ってしまうのでしょうか・・・。 ツリーで、標準モジュールは標準モジュールで、シート専用マクロはExcel Objects で、はっきりわかれていますから、私はここの違いから理解できていなくてこんな馬鹿な質問をしてしまうのだと思います。他のシートのセルをオブジェクトとして指定したければ、モジュールが増えて多少猥雑になってでも、Call などで標準モジュールを呼び出すしかありませんか? よろしくお願いします。

  • Access:トグルボタンのフォントカラー変更について

    Option Compare Database Private Sub トグル1_BeforeUpdate(Cancel As Integer) If トグル1 = -1 Then Me.トグル1.ForeColor = 10855845 Else     Me.トグル1.ForeColor = 0 End If End Sub Access2007を使用しています。 トグルボタンをクリックした場合、ボタンのフォントカラーを変えたく、上記のようにプログラムを組みました。 結果は動きました。 しかし、ボタンが一つだけなら良いのですが、複数ある場合、すべてのボタンに同じプログラムを設定しないと動きません。同じようなプログラムを複数組むのは無駄な気がしたので、以下のようなプログラムを作ってみました。 Option Compare Database Dim Text As String Private Sub トグル1_BeforeUpdate(Cancel As Integer) Text="トグル1" Call Test End Sub Sub Test() If Me.ActiveControl = -1 Then Me.Text.ForeColor = 10855845 Else Me.Text.ForeColor = 0 End If End sub 結果は動きませんでした。どうやら Me.Text.ForeColor = Me.トグル1.ForeColor と読んで欲しいところを Me.Text.ForeColor ="Me.Text.ForeColor" と読んでいるようです。 やはり、一つ一つに先頭のに記載したプログラムを入れていくしかないのでしょうか? ご教授の程、おねがいします。

  • Excel VBA トグルボタンで一定のセルへ楕円を書き込みしたり消したりしたいのですが

    Excel VBAの初心者です。Web検索で同じ事例がないか検索をしてみましたが、2件程近いものがありましたので、それを参考に自力でやってみましたが、書き込みまではすんなりいきますが、トグルボタンをOFFにした場合(消すという動作)がどうも旨くいきません。どなたか宜しくお願いします。 根本的にVBAのコードが全部理解出来ていないというレベルですので、その辺をお察しの上お願いします。 実施したい内容は以下の条件下で行いたいと思います。 (1)sheet1にトグルボタンを作成 (2)トグルボタンを押した時、sheet2の2箇所のセル(AJ3とCJ3)と、sheet3の2箇所のセル(AJ3とCJ3)に楕円(透明)を書き込む (3)トグルボタンを押した時、トグルボタン自体の色を赤色に変更 (4)トグルボタンを戻した時、(2)の作成した楕円を消す。またトグルボタン自体の色を元の色に戻す。

  • Excelのトグルボタンを使って以下の事をやりたい

    Excelのトグルボタンを使って以下の事をやりたいのですが、根本から解りません。どなたかお教え下さい。 基本作業:トグルボタンを使ってsheetの何箇所かのセルに印鑑を押したり消したりしたい (1)sheet1にトグルボタン(以下からTB)を作成 (2)TBを押した時、sheet4で作成したピクチャ(sheet4上に文字・数字・円を使ってデータ印状にしたものを、Excelのカメラで取って作成したもの)を、sheet2のAB35・BZ35・AS4・CQ4の4箇所とsheet3のAB35・BZ35・AS4・CQ4の4箇所に同一ピクチャを描画 (3)TBを押した時、ボタンの色を赤色に変える (4)TBのボタンを戻した時、各描画したピクチャを全て消す (5)TBのボタンを戻した時、ボタンの色を元の色に戻す

専門家に質問してみよう