質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

270閲覧

VBA セルの値をDelete 特定の行を表示

donguri7488

総合スコア15

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2019/04/22 11:15

編集2022/01/12 10:55

前提・実現したいこと

I20のセルを"無"にしたとき65行目を非表示にし、「I20のセルにそれ以外の値を入れたとき」と「I20のセルが空欄のとき」に65行目を表示にしたいです。
セルの値をDeleteしたときにもマクロが起動するようにしたいです。

発生している問題・エラーメッセージ

I20のセルを"無"にしたとき65行目を非表示にした後(65行目が非表示の状態)、I20のセルの値をDeleteすると65行目が非表示になったままとなる。

該当のソースコード

VBA

1Private Sub CheckBox1_Click() 2 With Me 3 a1 = Cells(140, "A").Value 4 a2 = Cells(141, "A").Value 5 6 If .CheckBox1.Value = True Then 7 .Rows(a1 & ":" & a2).Hidden = False 8 Else 9 .Rows(a1 & ":" & a2).Hidden = True 10 End If 11 End With 12End Sub 13 14Private Sub CheckBox11_Click() 15 With Me 16 a1 = Cells(170, "A").Value 17 a2 = Cells(171, "A").Value 18 19 If .CheckBox11.Value = True Then 20 .Rows(a1 & ":" & a2).Hidden = False 21 Else 22 .Rows(a1 & ":" & a2).Hidden = True 23 End If 24 End With 25End Sub 26 27Private Sub CheckBox12_Click() 28 With Me 29 a1 = Cells(173, "A").Value 30 a2 = Cells(174, "A").Value 31 32 If .CheckBox12.Value = True Then 33 .Rows(a1 & ":" & a2).Hidden = False 34 Else 35 .Rows(a1 & ":" & a2).Hidden = True 36 End If 37 End With 38End Sub 39 40Private Sub CheckBox13_Click() 41 With Me 42 a1 = Cells(176, "A").Value 43 a2 = Cells(177, "A").Value 44 45 If .CheckBox13.Value = True Then 46 .Rows(a1 & ":" & a2).Hidden = False 47 Else 48 .Rows(a1 & ":" & a2).Hidden = True 49 End If 50 End With 51End Sub 52 53Private Sub CheckBox14_Click() 54 With Me 55 a1 = Cells(179, "A").Value 56 a2 = Cells(180, "A").Value 57 58 If .CheckBox14.Value = True Then 59 .Rows(a1 & ":" & a2).Hidden = False 60 Else 61 .Rows(a1 & ":" & a2).Hidden = True 62 End If 63 End With 64End Sub 65 66Private Sub CheckBox15_Click() 67 With Me 68 a1 = Cells(182, "A").Value 69 a2 = Cells(183, "A").Value 70 71 If .CheckBox15.Value = True Then 72 .Rows(a1 & ":" & a2).Hidden = False 73 Else 74 .Rows(a1 & ":" & a2).Hidden = True 75 End If 76 End With 77End Sub 78 79Private Sub CheckBox16_Click() 80 With Me 81 a1 = Cells(185, "A").Value 82 a2 = Cells(186, "A").Value 83 84 If .CheckBox16.Value = True Then 85 .Rows(a1 & ":" & a2).Hidden = False 86 Else 87 .Rows(a1 & ":" & a2).Hidden = True 88 End If 89 End With 90End Sub 91 92Private Sub CheckBox17_Click() 93 With Me 94 a1 = Cells(188, "A").Value 95 a2 = Cells(189, "A").Value 96 97 If .CheckBox17.Value = True Then 98 .Rows(a1 & ":" & a2).Hidden = False 99 Else 100 .Rows(a1 & ":" & a2).Hidden = True 101 End If 102 End With 103End Sub 104 105Private Sub CheckBox18_Click() 106 With Me 107 a1 = Cells(191, "A").Value 108 a2 = Cells(192, "A").Value 109 110 If .CheckBox18.Value = True Then 111 .Rows(a1 & ":" & a2).Hidden = False 112 Else 113 .Rows(a1 & ":" & a2).Hidden = True 114 End If 115 End With 116End Sub 117 118Private Sub CheckBox2_Click() 119 With Me 120 a1 = Cells(143, "A").Value 121 a2 = Cells(144, "A").Value 122 123 If .CheckBox2.Value = True Then 124 .Rows(a1 & ":" & a2).Hidden = False 125 Else 126 .Rows(a1 & ":" & a2).Hidden = True 127 End If 128 End With 129End Sub 130 131Private Sub CheckBox3_Click() 132 With Me 133 a1 = Cells(146, "A").Value 134 a2 = Cells(147, "A").Value 135 136 If .CheckBox3.Value = True Then 137 .Rows(a1 & ":" & a2).Hidden = False 138 Else 139 .Rows(a1 & ":" & a2).Hidden = True 140 End If 141 End With 142End Sub 143 144Private Sub CheckBox4_Click() 145 With Me 146 a1 = Cells(149, "A").Value 147 a2 = Cells(150, "A").Value 148 a3 = Cells(149, "H").Value 149 150 If .CheckBox4.Value = True Then 151 .Rows(a1 & ":" & a2).Hidden = False 152 .Rows(a3).Hidden = False 153 Else 154 .Rows(a1 & ":" & a2).Hidden = True 155 .Rows(a3).Hidden = True 156 End If 157 End With 158 159 With Me 160 rg = Range("I7").Value = 500 Or Range("I7").Value = 1000 Or Range("I7").Value = "500+2500" Or Range("I7").Value = "1000+2500" 161 162 If .CheckBox4.Value = True And rg Then 163 .Rows(49).Hidden = False 164 Else 165 .Rows(49).Hidden = True 166 End If 167 End With 168End Sub 169 170Private Sub CheckBox5_Click() 171 With Me 172 a1 = Cells(152, "A").Value 173 a2 = Cells(153, "A").Value 174 175 If .CheckBox5.Value = True Then 176 .Rows(a1 & ":" & a2).Hidden = False 177 .Rows(69).Hidden = False 178 Else 179 .Rows(a1 & ":" & a2).Hidden = True 180 .Rows(69).Hidden = True 181 End If 182 End With 183End Sub 184 185Private Sub CheckBox6_Click() 186 With Me 187 a1 = Cells(155, "A").Value 188 a2 = Cells(156, "A").Value 189 190 If .CheckBox6.Value = True Then 191 .Rows(a1 & ":" & a2).Hidden = False 192 Else 193 .Rows(a1 & ":" & a2).Hidden = True 194 End If 195 End With 196End Sub 197 198Private Sub CheckBox7_Click() 199 With Me 200 a1 = Cells(158, "A").Value 201 a2 = Cells(159, "A").Value 202 203 If .CheckBox7.Value = True Then 204 .Rows(a1 & ":" & a2).Hidden = False 205 Else 206 .Rows(a1 & ":" & a2).Hidden = True 207 End If 208 End With 209End Sub 210 211Private Sub CheckBox8_Click() 212 With Me 213 a1 = Cells(161, "A").Value 214 a2 = Cells(162, "A").Value 215 216 If .CheckBox8.Value = True Then 217 .Rows(a1 & ":" & a2).Hidden = False 218 Else 219 .Rows(a1 & ":" & a2).Hidden = True 220 End If 221 End With 222End Sub 223 224Private Sub CheckBox9_Click() 225 With Me 226 a1 = Cells(164, "A").Value 227 a2 = Cells(165, "A").Value 228 229 If .CheckBox9.Value = True Then 230 .Rows(a1 & ":" & a2).Hidden = False 231 Else 232 .Rows(a1 & ":" & a2).Hidden = True 233 End If 234 End With 235End Sub 236 237Private Sub Worksheet_Change(ByVal Target As Range) 238 If Target.Address = "$I$17" Then 239 If Range("I17").Value = "無" Then 240 Rows(56).Hidden = True 241 Rows(62).Hidden = True 242 Rows(63).Hidden = True 243 Else 244 Rows(56).Hidden = False 245 Rows(62).Hidden = False 246 Rows(63).Hidden = False 247 End If 248 End If 249 250 If Target.Address = "$I$20" Then 251 If Range("I20").Value = "無" Then 252 Rows(64).Hidden = True 253 Else 254 Rows(64).Hidden = False 255 End If 256 End If 257 258 If Target.Address = "$I$51" Then 259 If Range("I51").Value = "不要" Then 260 Rows(52).Hidden = True 261 Rows(53).Hidden = True 262 Else 263 Rows(52).Hidden = False 264 Rows(53).Hidden = False 265 End If 266 End If 267 268 If Target.Address = "$I$81" Then 269 If Range("I81").Value = "無" Then 270 Rows(82).Hidden = True 271 Else 272 Rows(82).Hidden = False 273 End If 274 End If 275 276 If Target.Address = "$I$91" Then 277 If Range("I91").Value = "無" Then 278 Rows(92).Hidden = True 279 Else 280 Rows(92).Hidden = False 281 End If 282 End If 283 284 If Target.Address = "$I$126" Then 285 If Range("I126").Value = "契約工期" Then 286 Range("O126").Value = "~" 287 MsgBox "契約工期を記入してください" 288 ElseIf Range("I126").Value = "" Then 289 Range("N126").Value = "" 290 Else 291 Range("N126").Value = "" 292 End If 293 End If 294 295 If Target.Address = "$I$128" Then 296 If Range("I128").Value = "有" Then 297 Rows(129).Hidden = True 298 Rows(130).Hidden = True 299 Rows(131).Hidden = True 300 Rows(132).Hidden = True 301 Rows(133).Hidden = True 302 Else 303 Rows(129).Hidden = False 304 Rows(130).Hidden = False 305 Rows(131).Hidden = False 306 Rows(132).Hidden = False 307 Rows(133).Hidden = False 308 End If 309 End If 310 311 If Target.Address = "$I$7" Then 312 With Me 313 rg = Range("I7").Value = 500 Or Range("I7").Value = 1000 Or Range("I7").Value = "500+2500" Or Range("I7").Value = "1000+2500" 314 If rg Then 315 .Rows(65).Hidden = False 316 Else 317 .Rows(65).Hidden = True 318 End If 319 End With 320 321 With Me 322 If .CheckBox4.Value = True And rg Then 323 .Rows(49).Hidden = False 324 Else 325 .Rows(49).Hidden = True 326 End If 327 End With 328 End If 329End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2019/04/22 14:09

そのコードをそのままコピーして動作確認しましたが、I20セルに"無"入力で行非表示、I20セルでDeleteキーで値削除すると行は表示されました。 別の部分に原因があるのでは。
crowmt

2019/04/22 15:12

私も試してみましたが、問題なく動きました。 行削除してるとかではないですよね?
ttyp03

2019/04/22 23:37

問題ないですねぇ。
donguri7488

2019/04/23 01:01

皆様が仰るとおり、新しいシートで試すと問題なく機能致しました。 質問にコードを全て記載致しました(その他にPrivate Sub CheckBox○_Click()が18個あります)。 自分で確認している限り干渉する箇所がわからない状況です。 無を入力するのは入力の規則(リスト)を利用しておりますが、これが原因ではないようでした。 原因がわかる方がいらっしゃいましたらお教えいただければ幸いです。
ttyp03

2019/04/23 01:07

編集いただいたコードでも問題はありませんでした。 ただコードを見せられてもこちらに同じ現象が発生する環境が作れるわけではないので、Changeイベントが発生しているのか否かなど、多少はご自分で調べた情報くらいは提示してください。
hatena19

2019/04/23 01:10

Worksheet_SelectionChangeイベントにコードはありませんか。
donguri7488

2019/04/23 05:56

実現したいこと以外の動作は問題ありません。 質問に記載しているPrivate Sub Worksheet_Changeイベントだけの場合、動作に問題ありません(実現したいことも動作します)。 しかし、Private Sub CheckBox○_Click()のコードを入れると実現したいことの動作に問題があります。 また、Worksheet_SelectionChangeイベントは使用しておりません。 Private Sub CheckBox○_Click()がPrivate Sub Worksheet_Changeに影響しているのでしょうか。 ちなみにPrivate Sub CheckBox○_Click()に65行目を操作するコードは含まれていません。
ttyp03

2019/04/23 05:58

CheckBox○_Click()があると問題が発生するとわかっているのになぜそのコードを提示しないのか。
donguri7488

2019/04/23 08:18

質問のコードを更新致しました。 Private Sub CheckBox○_Click()が影響している可能性があることは皆様からのご指摘から気づきましたので、また何かあればご指摘をお願い致します。
guest

回答1

0

提示のコードを試すことはしてませんが、
別のイベントプロシージャが影響しているらしいということなので、

それぞれのイベントプロシージャの先頭に、

Application.EnableEvents = False

最後に、

Application.EnableEvents = True

を挿入して、イベント発生を抑制したらどうでしょうか。

投稿2019/04/23 10:02

hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問