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

回答編集履歴

2

;

2016/01/29 03:12

投稿

xenbeat
xenbeat

スコア4258

answer CHANGED
@@ -1,7 +1,6 @@
1
1
  最近触ってない上、試してないのでエラーがあるかもしれませんがご参考になれば幸甚です。
2
2
  項目がフォームではなくセルとのことですのでRangeオブジェクトで動的に値を取得できると思います。
3
3
  これなら、5つ 8つ などと個数が増える場合にも流用できるかと思います。
4
- ※A1;B1;C1のところは入力必須のセルになりますので必要に応じて修正して下さい。
5
4
 
6
5
  下記は項目のセル位置が連続していない場合に有効です。
7
6
 

1

サンプルの追加

2016/01/29 03:12

投稿

xenbeat
xenbeat

スコア4258

answer CHANGED
@@ -3,22 +3,44 @@
3
3
  これなら、5つ 8つ などと個数が増える場合にも流用できるかと思います。
4
4
  ※A1;B1;C1のところは入力必須のセルになりますので必要に応じて修正して下さい。
5
5
 
6
+ 下記は項目のセル位置が連続していない場合に有効です。
7
+
6
- ```ここに言語を入力
8
+ ```
7
9
  Dim cells() As String
8
10
  Dim err As String
9
- Dim i As Integer
10
11
 
12
+ '入力必須カラムを「;」区切りで指定
11
13
  cells = Split("A1;B1;C1", ";")
12
14
  err = ""
13
- i = 1
14
15
 
15
16
  For Each cell In cells()
16
- If Range(cell) = 0 Then
17
+ If Range(cell).Value = "" Then
17
- err = err & cell & ","
18
+ err = err & cell & ","
18
- End If
19
+ End If
19
20
  Next cell
20
21
 
21
22
  If err <> "" Then
23
+ '末尾のカンマを削除
22
24
  err = LEFT(err, LEN(err) - 1)
23
25
  End If
26
+ ```
27
+
28
+ 下記は項目のセル位置が連続している場合に有効です。
29
+ ```ここに言語を入力
30
+ Dim rng As Range
31
+ Dim err As String
32
+
33
+ Set rng = Range("A1:C9")
34
+ err = ""
35
+
36
+ For Each r In rng
37
+ If r.Value = "" Then
38
+ err = err & r.Address(False, False) & ","
39
+ End If
40
+ Next r
41
+
42
+ If err <> "" Then
43
+ '末尾のカンマを削除
44
+ err = LEFT(err, LEN(err) - 1)
45
+ End If
24
46
  ```