回答編集履歴

2

追記

2019/03/29 02:03

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -81,3 +81,73 @@
81
81
 
82
82
 
83
83
  ```
84
+
85
+ ---
86
+
87
+
88
+
89
+ 昨日書いた後、帰宅中に車の中で思いつきました。
90
+
91
+
92
+
93
+ 「チェックボックスの状態で行の表示・非表示を切り替える」のだから、
94
+
95
+ 行毎に「その時の状態」を操作すればいいんじゃないかなと。
96
+
97
+
98
+
99
+ Option Explicit
100
+
101
+
102
+
103
+
104
+
105
+ ```VBA
106
+
107
+ Private Sub CheckBox1_Click()
108
+
109
+ Dim flg As Boolean
110
+
111
+
112
+
113
+ flg = Me.CheckBox1.Value
114
+
115
+
116
+
117
+ With Me.Rows
118
+
119
+ .Item(27).Hidden = Not flg
120
+
121
+ .Item(28).Hidden = flg
122
+
123
+ .Item(29).Hidden = flg
124
+
125
+ .Item(30).Hidden = flg
126
+
127
+ .Item(31).Hidden = Not flg
128
+
129
+ End With
130
+
131
+ End Sub
132
+
133
+ ```
134
+
135
+
136
+
137
+ チェックボックスの値も、
138
+
139
+ 行の表示・非表示もTrueかそうでなければFalseなので、
140
+
141
+ 「チェックボックスがTrueならば、27行目は表示」としたければ、
142
+
143
+ 表示の状態は、「チェックボックスの値ではない値(= Not True)」と表現できますね。
144
+
145
+
146
+
147
+ こっちの方が後で見て、読みやすい(=可読性が高い)のではないかなと思います。
148
+
149
+
150
+
151
+ [演算子について](https://vba-code.net/basic/operator/)
152
+
153
+ [VBAのIf文でNot条件を指定する](https://www.relief.jp/docs/excel-vba-if-not.html)

1

修正

2019/03/29 02:03

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -62,13 +62,15 @@
62
62
 
63
63
  If .CheckBox1.Value Then
64
64
 
65
- .Range("A27,A31").EntireRow.Hidden = True
65
+ .Rows("27,31").Hidden = True
66
66
 
67
67
  Else
68
68
 
69
69
  .Rows("28:30").Hidden = True
70
70
 
71
71
  End If
72
+
73
+
72
74
 
73
75
  .Range("B6:C6").Select
74
76