Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1664 / 13646 ツリー ←次へ | 前へ→

【72729】条件に合わせて行を表示・非表示させたい トウジ 12/9/10(月) 23:51 質問[未読]
【72730】Re:条件に合わせて行を表示・非表示させたい kanabun 12/9/11(火) 8:50 発言[未読]
【72731】Re:条件に合わせて行を表示・非表示させたい kanabun 12/9/11(火) 8:57 発言[未読]
【72770】Re:条件に合わせて行を表示・非表示させたい トウジ 12/9/18(火) 13:29 お礼[未読]

【72729】条件に合わせて行を表示・非表示させたい
質問  トウジ  - 12/9/10(月) 23:51 -

引用なし
パスワード
   Sub 条件から列を表示・非表示()

i = msg1 '(※2:項目1,3:項目2,4:項目3,5:項目4,7:項目5)

msg1 = InputBox("条件はどれですか?2:項目1,3:項目2,4:項目3,5:項目4,7:項目5", Title:="タイトル1")

Select Case msg1
  Case 2
   msg2 = InputBox("○から", Title:="○から?")
   msg3 = InputBox("○まで", Title:="○まで")
     Do
    
     j = msg2
     k = msg3
    
     x = i - 2
     y = i - x
     w = i + 5 - x
    
     If j <= Sheets(1).Cells(i, "D") And Sheets(1).Cells(i, "D") <= k Then
     Rows("y:w").Hidden = False
     Else
     Rows("y:w").Hidden = True '表示しない 行(i-x)から行((i+5)-x)"
     End If
     i = i + 6
     Loop Until Sheets(1).Cells(i, "D").Value = ""

  Case 3
   msg2 = InputBox("○から(小数点1位まで)", Title:="○から?")
   msg3 = InputBox("○まで(小数点1位まで)", Title:="○まで")
     <case2と同様のDo〜Loop>
  Case 4
   msg2 = InputBox("○から(0〜100の範囲)", Title:="○から?")
   msg3 = InputBox("○まで(0〜100の範囲)", Title:="○まで")
     <case2と同様のDo〜Loop>
  Case 5
   msg2 = InputBox("○から(1〜10)", Title:="○から?")
   msg3 = InputBox("○まで(1〜10)", Title:="○まで")
     <case2と同様のDo〜Loop>
  Case 7
   msg2 = InputBox("○から(1〜10)", Title:="○から?")
   msg3 = InputBox("○まで(1〜10)", Title:="○まで")
     <case2と同様のDo〜Loop>
End Select

End Sub

msg1のインプットボックスで入力した数字により場合分けして、msg2とmsg3のインプットボックスに入力した数字の条件に当てはまる場合に行を表示、当てはまらない場合は行を表示しないようにしたいのです。しかし、コンパイルの段階では問題ないのですが、実際に起動すると、msg3まで数字を入力したところで、「アプリケーションの定義orオブジェクトの定義がエラーです」となり処理ができません。
お手数ですが、アドバイスをお願いいたします。

【72730】Re:条件に合わせて行を表示・非表示させ...
発言  kanabun  - 12/9/11(火) 8:50 -

引用なし
パスワード
   ▼トウジ さん:
>「アプリケーションの定義orオブジェクトの定義がエラーです」となり

> Rows("y:w").Hidden = False

がいけないです。y w は変数でしょ? " " で囲むと
全体が単なる "y:w" という文字列になっちゃいます。
文字列でOKなのは ":" だけ。
あとは y & ":" & w のように&でつないだものを()のなかに
入れます。

【72731】Re:条件に合わせて行を表示・非表示させ...
発言  kanabun  - 12/9/11(火) 8:57 -

引用なし
パスワード
   Option Explicit '←モジュールの先頭には この宣言を必ず。

Sub Lesson1()
  Dim y As Long  '← 変数は必ず宣言してから
  Dim w As Long
  y = 5
  w = 10
  MsgBox "y:w"
  MsgBox "y" & ":" & "w"
  MsgBox y & ":" & w
  
End Sub

'Debugに慣れてくると、上を一行づつステップ実行(ステップイン)[F8] したり、
Msgbox の代わりに、Debug.Print でイミディエイト・ウィンドウに
表示したりするようになります。

【72770】Re:条件に合わせて行を表示・非表示させ...
お礼  トウジ  - 12/9/18(火) 13:29 -

引用なし
パスワード
   >kanabunさん

遅くなりましたが、アドバイスありがとうございました。
無事に処理を行うことができました。

ありがとうございました。

1664 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free