エクセルのチェックボックスで行の表示を切り替える方法

このQ&Aのポイント
  • エクセルでチェックボックスを使用して行の表示を切り替える方法について教えてください。
  • チェックボックス1のON-OFFで行11-20の表示を切り替える方法や、チェックボックス2のON-OFFで行10-19の表示を切り替える方法を教えてください。
  • ActiveXのチェックボックスを使用してエクセルで行の表示を切り替える方法について詳しく教えてください。
回答を見る
  • ベストアンサー

エクセルのチェックボックスでの行の表示の切り替え

エクセルでチェックボックスを使用して行の表示を切り替えています。 これに他のチェックボックスのON-OFFで表示する行を変えたいと思います。 例えばチェックボックスが3つあり チェックボックス3のON-OFFで行10-20を非表示と表示に切り替えている マクロがあります。 それをチェックボックス1がONの時は行11-20が非表示に チェックボックス2がONの時は10-19が非表示になるようにマクロに追加 するにはどうすればよいでしょうか? ちなみにチェックボックスはActiveXの方を使用しています。 今のコードは Private Sub CheckBox3_Click() If CheckBox3 = True Then Range("10:20").EntireRow.Hidden = False Else Range("10:20").EntireRow.Hidden = True End If End Sub です。 よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

何をしたいのかというと? ご相談で書かれたこと: CB3をチェックしたとき, CB1にチェックの時は11-20を非表示に,offの時は10-20を非表示に CB2がチェックの時は10-19を非表示に,offの時は10-20を非表示に ご相談のそもそも問題点: 例えばCB1にチェックしても,CB2が非チェックなので最終的には10-20が非表示になってしまう。 あるいはCB1と2が両方チェックされてたらどうしたいの? 加えて >チェックボックス3のON-OFFで行10-20を非表示と表示に切り替え ONのとき隠すというご説明ですが,マクロは逆の動作になっている。 例えばの作成例: 10行目は,CB3がチェック,CB1がノーチェックのときに隠す 20行目は,CB3がチェック,CB2がノーチェックのときだけ隠す 11-19行はCB3がチェックで隠す private sub CheckBox3_Click()  rows("10:10").hidden = checkbox3.value and not checkbox1.value  rows("11:19").hidden = checkbox3.value  rows("20:20").hidden = checkbox3.value and not checkbox2.value end sub チェックしたら隠すのか見せるのかなど,動作が意図と違う部分は自力で応用してみて下さい。

esesanta
質問者

お礼

回答ありがとうございます。 こういうやり方もあるのですね! とても参考になりました。

その他の回答 (1)

回答No.1

単純に考えて、 Private Sub CheckBox1_Click()  If CheckBox1 = True Then   Range("11:20").EntireRow.Hidden = False  Else   Range("11:20").EntireRow.Hidden = True  End If End Sub Private Sub CheckBox2_Click()  If CheckBox2 = True Then   Range("10:19").EntireRow.Hidden = False  Else   Range("10:19").EntireRow.Hidden = True  End If End Sub Private Sub CheckBox3_Click()  If CheckBox3 = True Then   Range("10:20").EntireRow.Hidden = False  Else   Range("10:20").EntireRow.Hidden = True  End If End Sub こういうことでしょうかね?

esesanta
質問者

補足

すいません説明不足でした。 チェックボックス3のチェックを入れた時に チェックボックス1と2の状態を判別して非表示にする 行を変えたいと考えています。 よろしくお願いします。

関連するQ&A

  • この場合エクセルVBAでどう書けばいいでしょうか?

    あるシートのH列で、H21からH46のあいだで"False"がある行を非表示にしたいのです。 下記の冗長なマクロでもそうなりますが、For Nextというのを使うともっと簡潔に記述できると思うのですが、初心者のためよくわかりません。ご教示ください。 また、下記の式はシートが保護されていると働きませんが、保護したシートでも動く方法があればそれもあわせて教えていただけると幸いです。 エクセルは95です。 Sub 空白行非表示() G% = Sheets("見積書").Range("H48").Value With Sheets("見積書") Rows("19:47").RowHeight = G% If Range("H21") = False Then Rows("21").EntireRow.Hidden = True End If If Range("H22") = False Then Rows("22").EntireRow.Hidden = True End If If Range("H23") = False Then Rows("23").EntireRow.Hidden = True End If If Range("H24") = False Then Rows("24").EntireRow.Hidden = True End If 途中、繰り返しのため省略 If Range("H42") = False Then Rows("42").EntireRow.Hidden = True End If If Range("H43") = False Then Rows("43").EntireRow.Hidden = True End If If Range("H44") = False Then Rows("44").EntireRow.Hidden = True End If If Range("H45") = False Then Rows("45").EntireRow.Hidden = True End If If Range("H46") = False Then Rows("46").EntireRow.Hidden = True End If End With End Sub

  • エクセル チェックボックスの解除について(VBA)

    YES/NOを入力させる為の下記のVBAにおいて、チェックボックス1をチェックすると、アの部分でチェックボックス2の解除を行う関係で?、シート上でチェックボックス2を操作していないのにもかかわらず、勝手にCheckBox2_Click()に入り、命令文イを実行してしまいます。 ただ単にSub CheckBox1_Click()のルーチンの最後までの処理で終わりたいのですが、どうしたらよいのでしょうか。 Private Sub CheckBox1_Click() If CheckBox1 = True Then Sheets("sheet1").Range("A1") = 1 Sheets("sheet1").Range("A2") = 0 CheckBox2 = False・・・ア Else Sheets("sheet1").Range("A1") = "" End If End Sub Private Sub CheckBox2_Click() If CheckBox2 = True Then Sheets("sheet1").Range("A1") = 0 Sheets("sheet1").Range("A2") = 1 CheckBox1 = False Else Sheets("sheet1").Range("A2") = ""・・・イ End If End Sub

  • エクセルのマクロで行選択

    現在、エクセルでマクロを組んでいます。 行いたい内容としては 1.行6~1765までを選択 2. 1.で選択した行を非表示 3. 行6~"セルH2の値"までをを選択 4. 3.で選択した行を再表示 3の段階で失敗してしまいます。 Rangeメソッドに失敗しました、と出ます ソースは以下のとおりです ----- Private Sub CommandButton2_Click() Dim x As Integer Range("6:1765").EntireRow.Select Selection.EntireRow.Hidden = True x = Range("H2").Value Range("6:x").EntireRow.Select Selection.EntireRow.Hidden = False End Sub ---- 解決法がわかる方、教えてください よろしくお願いします。

  • エクセル マクロ チェックボックス

    sheet1にチェックボックスが3つあり、マクロを実行するコマンドボタンが1つあります。 チェックボックスにレ点を入れることにより、sheet4のデータからsheet2にグラフを作成しようと考えてますが、エラーが出てしまい解決できません。 どのように訂正したらいいのか教えて頂けないでしょうか。 Private Sub CommandButton1_Click() Dim GraphRange As String Dim Graph As ChartObject Dim lastRow As Long Set Graph = Sheets("sheet2").ChartObjects.Add(150, 27, 350, 200) lastRow = Sheets("sheet4").Range("A" & Rows.Count).End(xlUp).Row GraphRange = Sheets("sheet4").Range(Cells(1, 1), Cells(lastRow, 1)).Value If Sheets("sheet1").CheckBox1.Value = True Then 'CheckBox1にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 2), Cells(lastRow, 2)).Value End If If Sheets("sheet1").CheckBox2.Value = True Then 'CheckBox2にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 3), Cells(lastRow, 3)).Value End If If CheckBox3.Value = True Then 'CheckBox3にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 4), Cells(lastRow, 4)).Value End If Graph.Chart.ChartWizard Source:=Sheets("sheet4").Range(GraphRange).Value, _ Gallery:=xlLine, Format:=1, PlotBy:=xlColumns, _ CategoryLabels:=1, SeriesLabels:=1, HasLegend:=True End Sub

  • 助けてください! EXCELのセルが表示されなくなりました

    マクロを作成しようと、簡単な記述をテストしたところ、セルが全部表示されなくなりました。 行番号も見えません。列のアルファベットは表示されていますが、選択することもできません。 どうしたら元に戻るでしょうか? テストしたマクロの記述は以下のとおりです。 If Range("P74").Value = 0 Then Columns("P:P").Select Selection.EntireRow.Hidden = True End If End Sub 非常に困っています。どうか助けてください。

  • エクセルで行を非表示にするとアクティブなセルが・・・

    エクセルで行を非表示にするとアクティブなセル?行?がどこかわからなくなり、マクロでアクティブなセルを移動するときにエラーが出ます。 Sub example() ActiveSheet.Range("D3").Select Do Until ActiveCell = 23 If ActiveCell <> "" Then ActiveCell.Offset(1, 0).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -3).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -6).Select Else: ActiveCell.EntireRow.Select Selection.EntireRow.Hidden = True ActiveCell.Offset(0, -6).Select End If Loop End Sub 一番下のActiveCell.Offset(0, -6).Select にエラーが出るのですが、どうすればセルを移動できるでしょうか?

  • 塗りつぶしのない行を非表示にするマクロ

    塗りつぶしのない行を非表示にするマクロを作成したいのですが、 どこが問題で実行できないのかわかりません! 例えば8行目に対して実行したい場合を教えてください! ちなみに自分で作成したVBAはこんな感じです。 Sub macro1() If Rows("8:8").Interior.Color = xlNone Then Rows("8:8").EntireRow.Hidden = True End If End Sub よろしくお願いします。 ちなみにexcel2007です。

  • エクセル VBA チェックボックスについて

    よろしくお願い致します。 OS:XP エクセル2003 VBAのことは、まったくの初心者です。 質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。 ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。 Private Sub CheckBox7_Click() If CheckBox7.Value = True Then CheckBox8.Enabled = True CheckBox9.Enabled = True CheckBox10.Enabled = True CheckBox11.Enabled = True Else CheckBox8.Value = False CheckBox9.Value = False CheckBox10.Value = False CheckBox11.Value = False CheckBox8.Enabled = False CheckBox9.Enabled = False CheckBox10.Enabled = False CheckBox11.Enabled = False End If End Sub

  • チェックボックスのチェックによるマクロ処理の変更

    ユーザーフォームにチェックボックスとコマンドボタンを設置して、チェックボックスのチェックに応じて、処理を変えるにはどうしたらいいでしょうか。 具体的には、ユーザーフォームに例えば、 (1)チェックボックス  -りんご (=checkbox1)  -かき  -みかん  -もも (2)コマンドボタン  -春  -夏  -秋  -冬 のボタンがあるとします。 仮に、春のボタンには、 「Call 春」とプロシージャを読むようにしています。 春のプロシージャには、 例えば、 Sub 春()  If checkbox1=true then   range("A1").value="肥料"  End if End sub のように書いています。 チェックボックスのチェックの有無・結果に応じて、処理を変えたいのですが、これでは、checkbox1box1のチェックの結果がsubプロシージャに渡せないので、どのようにしたらいいのでしょうか。 よろしくお願い致します。

  • 13行目のセルの値が0のとき、その列を非表示にする

    Windows7 Excel2007でマクロ作成中の初心者です。 13行目のセルの値が、0のときは、その列を非表示にするというマクロを作ろうとしましたが なかなか難しくておてあげです。探したら次のようなコードがでてきました。 ボタンを押すとK列の値を参照して「A」と表示されている行を隠し、「表示する」ボタンを押すと、 解除するという処理。 Option Explicit Private Sub Cmd隠す_Click()  Dim 行番号 As Long  '行を隠す  For 行番号 = 4 To 13   If Cells(行番号, 11).Value = "A" Then    Cells(行番号, 1).EntireRow.Hidden = True   End If  Next 行番号 End Sub Private Sub Cmd表示する_Click()  '表全体を再表示する  Cells.Select  Selection.EntireRow.Hidden = False  Selection.EntireColumn.Hidden = False  Cells(1, 1).Select End Sub このコードを利用して、13行目のセルの値が、0のときは、その列を非表示にするというコードにしたいのです。 よろしくおねがいします。

専門家に質問してみよう