• ベストアンサー

Excel 2007 VBAについて質問します。

Excel VBAの初心者です。 行の非表示と表示についてお聞きしたいのです。 ExcelのSheet1の1行目(1行全体)のみを、シート上のセルをWクリックをして 非表示にしたり表示させたりするのには、どの様なコードを書いたらいいでしょうか? VBA初心者の為、分かりやすい回答をお願いします。

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

  • ベストアンサー
  • soixante
  • ベストアンサー率32% (401/1245)
回答No.4

#1です。 If文をわざわざ入れるのが面倒なので、#1のようにしました。 もしどうしてもしたいのならば、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Rows(1).Hidden = True Then   Rows(1).Hidden = False ElseIf Rows(1).Hidden = False Then   Rows(1).Hidden = True End If Cancel = True End Sub でしょうか。 #1で書いた、 Row(1).Hidden = Not Rows(1).Hidden というのは、 Row(1).Hidden = True だったら、False にするし、(非表示だったら表示に) Row(1).Hidden = False だったら、True にする。(表示だったら非表示に) です。 つまり、上記のIF文の内容そのものです。 シンプルなほうが私は好きです。

awmori
質問者

お礼

ありがとうございます。 IF式と私は言っていましたが、本当はIF文なんですね!すいません、そこの所から間違っていましたね。 シンプルが私も好きです。今の私のレベルからだと、IF文を使ったやり方の方が理解しやすかったと言うだけでした。 まだ勉強して間もないんで、とても参考になりました。

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

その他の回答 (3)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

No2です。 >シート上のセルをWクリック ですね。No1の方のコードを参考にしてください。 シート上のセルをWクリック時に実行させるマクロですが シートの名前のタグを右クリック=>コードの表示 をクリックすると そのシートのモジュールが開きます。 参考までに Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Rows(1).Hidden = False Then Rows("1:1").EntireRow.Hidden = True Else Rows("1:1").EntireRow.Hidden = False End If End Sub といった記述の仕方でも大丈夫かと思います。 If Rows(1).Hidden = False Then で1行目が表示か非表示かを判断させています。 ダブルクリックが使いやすいかわかりませんが 右クリック時というイベントも準備されています。

awmori
質問者

お礼

ありがとうございます。 IF式も完全に理解している訳ではありませんでした。 IFの条件式の所で、表示か非表示かを判断をさせる事が大事だったんですね! 助かりました。 右クリックイベントも可能なんですか? もしかしましたら~ Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) End Sub このプロシージャーにコードを書けば右クリックで表示・非表示が可能と言う事ですよね?

すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

以下の2つコードを参考にしてください。 いずれもマクロの記録で得られました。 Sub Macro1() Sheets("Sheet1").Rows("1:1").EntireRow.Hidden = False End Sub Sub Macro2() Sheets("Sheet1").Rows("1:1").EntireRow.Hidden = True End Sub

awmori
質問者

お礼

回答いただきましてありがとうございます。 マクロ自動記録を試して見たんですが、IF式を使ってやってみたんですが、 どうも上手くいかず困っていました。

すると、全ての回答が全文表示されます。
  • soixante
  • ベストアンサー率32% (401/1245)
回答No.1

Sheet1 の モジュールに以下。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Rows(1).Hidden = Not Rows(1).Hidden Cancel=True End Sub シート状の任意の場所でダブルクリックする都度、表示・非表示が切り替わります。

awmori
質問者

お礼

回答ありがとうございます。さっそく試してみました! できました。 DoubleClickイベントにIF式で表示と非表示って言うのは、 不可能なんでしょうか? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Row <> 1 Then Target.Cells(1, 1).EntireRow.Hidden = False Else Target.Cells(1, 1).EntireRow.Hidden = True End If Exit Sub End Sub こんな感じでやってみたんですが、非表示にはなるんですが 非表示から表示にならなくて・・・

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

関連するQ&A