回答編集履歴

3

「この種のエラーを調べる方法について」を追加

2021/01/16 09:22

投稿

kozuchi
kozuchi

スコア1193

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

記述ミスの修正

2021/01/16 09:21

投稿

kozuchi
kozuchi

スコア1193

test CHANGED
@@ -16,4 +16,4 @@
16
16
 
17
17
  VBA プログラム上で、「管理番号」を数値(Integer)にする方法も考えられますが、あまりお勧めしません。
18
18
 
19
- 理由は、「管理番号」が数値というよりもIDとして扱われていると思わるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。
19
+ 理由は、「管理番号」が数値というよりもIDとして扱われていると思わるため 「010100」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。

1

解決方法を追加しました。

2021/01/16 05:41

投稿

kozuchi
kozuchi

スコア1193

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」といった、ゼロから始まる番号が出現する可能性も考えられ、その場合はうまく処理できなくなってしまうためです。