teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード追加

2018/05/30 05:31

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -46,6 +46,27 @@
46
46
  End Sub
47
47
  ```
48
48
 
49
+ 追記2
50
+ ---
49
51
  さらに、言えば、参照範囲の番号列を検索(`WorksheetFunction.Match`等で)するようにすれば、
50
52
  よりシンプルに記述できますし、参照範囲の番号が変更されても
51
- コードを変更する必要はなくなり、より実用的です。
53
+ コードを変更する必要はなくなり、より実用的です。
54
+
55
+ ```vba
56
+ Sub if_jirei_2()
57
+ Dim r As Long
58
+ Select Case Range("B3").Value
59
+ Case ""
60
+ Range("C6:E6").ClearContents
61
+ Case Else
62
+ On Error Resume Next
63
+ r = WorksheetFunction.Match(Range("B3"), Range("G6:G9"), 1)
64
+ On Error GoTo 0
65
+ If r = 0 Then
66
+ MsgBox Range("G6").Value & "以上の数値を入力してください。"
67
+ Else
68
+ Range("C6:E6").Value = Range("H5:J5").Offset(r).Value
69
+ End If
70
+ End Select
71
+ End Sub
72
+ ```

1

コード追加

2018/05/30 05:31

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -25,4 +25,27 @@
25
25
  Range("C6:E6").ClearContents
26
26
  End If
27
27
  End Sub
28
- ```
28
+ ```
29
+
30
+ 追記
31
+ ---
32
+ if_jirei_1は、Select Caseを使った方がシンプルで読みやすく記述できます。
33
+ ```vba
34
+ Sub if_jirei_1()
35
+ Select Case Range("B3").Value
36
+ Case ""
37
+ Range("C6:E6").ClearContents
38
+ Case 100 To 499
39
+ Range("C6:E6").Value = Range("H6:J6").Value
40
+ Case 500 To 999
41
+ Range("C6:E6").Value = Range("H7:J7").Value
42
+ Case Else
43
+ MsgBox "100以上999以下の数値を入力してください。"
44
+ Range("C6:E6").ClearContents
45
+ End Select
46
+ End Sub
47
+ ```
48
+
49
+ さらに、言えば、参照範囲の番号列を検索(`WorksheetFunction.Match`等で)するようにすれば、
50
+ よりシンプルに記述できますし、参照範囲の番号が変更されても
51
+ コードを変更する必要はなくなり、より実用的です。