回答編集履歴

2

;

2016/01/29 03:12

投稿

xenbeat
xenbeat

スコア4258

test CHANGED
@@ -3,8 +3,6 @@
3
3
  項目がフォームではなくセルとのことですのでRangeオブジェクトで動的に値を取得できると思います。
4
4
 
5
5
  これなら、5つ 8つ などと個数が増える場合にも流用できるかと思います。
6
-
7
- ※A1;B1;C1のところは入力必須のセルになりますので必要に応じて修正して下さい。
8
6
 
9
7
 
10
8
 

1

サンプルの追加

2016/01/29 03:12

投稿

xenbeat
xenbeat

スコア4258

test CHANGED
@@ -8,31 +8,33 @@
8
8
 
9
9
 
10
10
 
11
+ 下記は項目のセル位置が連続していない場合に有効です。
12
+
13
+
14
+
11
- ```ここに言語を入力
15
+ ```
12
16
 
13
17
  Dim cells() As String
14
18
 
15
19
  Dim err As String
16
20
 
17
- Dim i As Integer
18
21
 
19
22
 
23
+ '入力必須カラムを「;」区切りで指定
20
24
 
21
25
  cells = Split("A1;B1;C1", ";")
22
26
 
23
27
  err = ""
24
28
 
25
- i = 1
26
-
27
29
 
28
30
 
29
31
  For Each cell In cells()
30
32
 
31
- If Range(cell) = 0 Then
33
+ If Range(cell).Value = "" Then
32
34
 
33
- err = err & cell & ","
35
+ err = err & cell & ","
34
36
 
35
- End If
37
+ End If
36
38
 
37
39
  Next cell
38
40
 
@@ -40,8 +42,50 @@
40
42
 
41
43
  If err <> "" Then
42
44
 
45
+ '末尾のカンマを削除
46
+
43
47
  err = LEFT(err, LEN(err) - 1)
44
48
 
45
49
  End If
46
50
 
47
51
  ```
52
+
53
+
54
+
55
+ 下記は項目のセル位置が連続している場合に有効です。
56
+
57
+ ```ここに言語を入力
58
+
59
+ Dim rng As Range
60
+
61
+ Dim err As String
62
+
63
+
64
+
65
+ Set rng = Range("A1:C9")
66
+
67
+ err = ""
68
+
69
+
70
+
71
+ For Each r In rng
72
+
73
+ If r.Value = "" Then
74
+
75
+ err = err & r.Address(False, False) & ","
76
+
77
+ End If
78
+
79
+ Next r
80
+
81
+
82
+
83
+ If err <> "" Then
84
+
85
+ '末尾のカンマを削除
86
+
87
+ err = LEFT(err, LEN(err) - 1)
88
+
89
+ End If
90
+
91
+ ```