回答編集履歴
2
データの追記、修正
answer
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
-
数式の結果表示されている#VALUE!はエラーとして返されています。
|
1
|
+
~~数式の結果表示されている#VALUE!はエラーとして返されています。
|
2
|
-
"#VALUE!"という形でエラー表示されているからと文字列で指定しても中に格納されているのは文字列ではないので型の不一致となります。
|
2
|
+
"#VALUE!"という形でエラー表示されているからと文字列で指定しても中に格納されているのは文字列ではないので型の不一致となります。~~
|
3
|
+
|
4
|
+
追加検証してみたところ、私の勘違いでした。
|
5
|
+
Cells(11, zV).text = "#VALUE!"でもエラーチェックが可能でした。
|
6
|
+
正確には提示コードではlongの0とstringの"#VALUE!"を同時にチェックしているため必ずどちらかが型不一致になるのが原因です。
|
7
|
+
IsError()には数値を入れてもエラーにならないので下記の方式になりました。
|
8
|
+
|
3
9
|
下記はテストコードです。
|
4
10
|
|
5
11
|
```
|
@@ -7,15 +13,20 @@
|
|
7
13
|
Dim zV As Long
|
8
14
|
|
9
15
|
For zV = 10 To 4 Step -1
|
10
|
-
|
16
|
+
'IsErrorで数式のエラー判定
|
11
17
|
If IsError(Cells(11, zV)) Then
|
18
|
+
'エラーだった場合Cells.Valueで#VALUE!か判定(エラー全て対応ならifを削除)
|
19
|
+
If Cells(11, zV).Value = CVErr(xlErrValue) Then
|
12
|
-
|
20
|
+
Columns(zV).Delete Shift:=xlToLeft
|
21
|
+
End If
|
22
|
+
'CVErrではなく文字列での直接指定ならCells().Textで指定
|
23
|
+
'If Cells(11, zV).Text = "#VALUE!" Then
|
24
|
+
'Columns(zV).Delete Shift:=xlToLeft
|
25
|
+
'End If
|
13
26
|
ElseIf Cells(11, zV).Value = 0 Then
|
14
27
|
Columns(zV).Delete Shift:=xlToLeft
|
15
28
|
End If
|
16
29
|
Next
|
30
|
+
End Sub
|
17
31
|
|
18
|
-
End Sub
|
19
|
-
```
|
32
|
+
```
|
20
|
-
IsNullやIsErrorなど特殊な内容を判別する機能はtextとは別になります。
|
21
|
-
[IsError](https://www.tipsfound.com/excel/01507)
|
1
誤りの修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
1
|
+
数式の結果表示されている#VALUE!はエラーとして返されています。
|
2
|
-
"#VALUE!"という形でエラー表示されているからと文字列で指定しても中に格納されているのは
|
2
|
+
"#VALUE!"という形でエラー表示されているからと文字列で指定しても中に格納されているのは文字列ではないので型の不一致となります。
|
3
3
|
下記はテストコードです。
|
4
4
|
|
5
5
|
```
|
@@ -17,5 +17,5 @@
|
|
17
17
|
|
18
18
|
End Sub
|
19
19
|
```
|
20
|
-
IsNullやIsErrorなど特殊な内容を判別する機能は
|
20
|
+
IsNullやIsErrorなど特殊な内容を判別する機能はtextとは別になります。
|
21
|
-
[
|
21
|
+
[IsError](https://www.tipsfound.com/excel/01507)
|