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

回答編集履歴

2

データの追記、修正

2021/02/17 06:47

投稿

退会済みユーザー
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
-      'IsErrorで#VALUE!のエラー判定
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
- Columns(zV).Delete Shift:=xlToLeft
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

誤りの修正

2021/02/17 06:46

投稿

退会済みユーザー
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
- [リンク内容](https://www.tipsfound.com/excel/01507)
21
+ [IsError](https://www.tipsfound.com/excel/01507)