回答編集履歴
3
「この種のエラーを調べる方法について」を追加
test
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
+
# 原因について
|
2
|
+
|
1
3
|
おそらく、シート「情報_01」のA列(「管理番号(D+E)」の列)に入っている管理番号のデータが数値として入っているため、VBA 条でString 型として定義されている変数 「管理情報」とのマッチングでマッチしないのだと思われます。
|
2
4
|
|
3
5
|
ISNUMBER()関数などで当該セルを確認してみてください、おそらくTRUE となると思います。
|
4
6
|
|
5
7
|
|
8
|
+
|
9
|
+
# 解決方法
|
6
10
|
|
7
11
|
解決方法としては、以下のように、当該列のデータを文字列にすることが考えられます。
|
8
12
|
|
@@ -17,3 +21,35 @@
|
|
17
21
|
VBA プログラム上で、「管理番号」を数値(Integer)にする方法も考えられますが、あまりお勧めしません。
|
18
22
|
|
19
23
|
理由は、「管理番号」が数値というよりもIDとして扱われていると思われるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
# この種のエラーを調べる方法について
|
28
|
+
|
29
|
+
Excel の関数を VBA で使っていて思った通りに動かない場合は、
|
30
|
+
|
31
|
+
いったん VBA から離れて、元のExcel の関数で動作を確認してみるのが
|
32
|
+
|
33
|
+
早道だと思います。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
今回の場合なら、同一ブックに適当なシートを追加するなりして、
|
38
|
+
|
39
|
+
適当なセルに以下のような式を入れてみれば、
|
40
|
+
|
41
|
+
すくなくとも、VBAの問題か、Excel 関数の問題かの切り分けはすぐにできます。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
```Excel
|
46
|
+
|
47
|
+
=VLOOKUP(A1, 情報_01!A1:D3, 2, FALSE)
|
48
|
+
|
49
|
+
```
|
50
|
+
|
51
|
+
※A1 は任意のセルを指定
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
ここまで調べて、Excel 関数の問題だと判明した状態なら、Excel の問題として質問できるので、回答できる人も多くなり、より良い回答がより速く得られるでしょう。
|
2
記述ミスの修正
test
CHANGED
@@ -16,4 +16,4 @@
|
|
16
16
|
|
17
17
|
VBA プログラム上で、「管理番号」を数値(Integer)にする方法も考えられますが、あまりお勧めしません。
|
18
18
|
|
19
|
-
理由は、「管理番号」が数値というよりもIDとして扱われていると思わるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|
19
|
+
理由は、「管理番号」が数値というよりもIDとして扱われていると思われるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|
1
解決方法を追加しました。
test
CHANGED
@@ -1,3 +1,19 @@
|
|
1
1
|
おそらく、シート「情報_01」のA列(「管理番号(D+E)」の列)に入っている管理番号のデータが数値として入っているため、VBA 条でString 型として定義されている変数 「管理情報」とのマッチングでマッチしないのだと思われます。
|
2
2
|
|
3
3
|
ISNUMBER()関数などで当該セルを確認してみてください、おそらくTRUE となると思います。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
解決方法としては、以下のように、当該列のデータを文字列にすることが考えられます。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
0. 当該列の選択し、セル書式で表示形式を「文字列」にする。
|
12
|
+
|
13
|
+
0. 当該列のデータをテキストエディタなどにコピーしたのち、再度貼り付ける。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
VBA プログラム上で、「管理番号」を数値(Integer)にする方法も考えられますが、あまりお勧めしません。
|
18
|
+
|
19
|
+
理由は、「管理番号」が数値というよりもIDとして扱われていると思わるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
|