Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
型が一致しません
投稿日時: 22/12/21 16:53:45
投稿者: akibacom

Cells(20, 6) = Cells(10, 6) - Cells(8, 6)
 
エクセルの2か所は以下です
=IFERROR(VLOOKUP(F7,J:K,2,0),"")が10,6
 
=IFERROR(VLOOKUP(F9,J:K,2,0),"")が8,6
 
この状態で動かすと型が一致しませんとエラー出ます
 

回答
投稿日時: 22/12/21 17:03:21
投稿者: WinArrow
投稿者のウェブサイトに移動

確認
最初の計算は、VBAですよね?
 
2番目、3番目は、ワークシートのセルに入れた関数ですよね?
 
それで、
最初のコート、2番目3番目の関係は?

回答
投稿日時: 22/12/21 17:21:11
投稿者: sk

引用:
型が一致しません

引用:
Cells(20, 6) = Cells(10, 6) - Cells(8, 6)

一方または両方のセルの値が、数値データに
変換することができない文字列だからでしょう。
 
そういう文字列を使って - 演算子による減算処理を行なうことは出来ません。
 
引用:
=IFERROR(VLOOKUP(F7,J:K,2,0),"")

引用:
=IFERROR(VLOOKUP(F9,J:K,2,0),"")

・VLOOKUP 関数が数値データに変換することができない文字列を返している。
 
・VLOOKUP 関数の戻り値が #N/A エラーになった結果、
 IFERROR 関数によって空文字列が返されている。

投稿日時: 22/12/21 21:43:15
投稿者: akibacom

両方数値データのはずです。
が、
違うようです
ありがとうざいました

投稿日時: 22/12/21 21:44:58
投稿者: akibacom

akibacom さんの引用:
両方数値データのはずです。
が、
違うようです
ありがとうざいました
 
VBAでRSSを使いサイトから取ってきた
1500とか1520とかの数字です
 

投稿日時: 22/12/21 21:55:54
投稿者: akibacom

見た目はすべて
1500
1520
とかの整数です
マイナスの数字もありません
しかし、見た目は数字でも数字ではないようです

回答
投稿日時: 22/12/21 22:03:44
投稿者: WinArrow
投稿者のウェブサイトに移動

akibacom さんの引用:

1500とか1520とかの数字です
 

 
↓コードを変應してみてましょう
 
Cells(20, 6) = Cells(10, 6) * 1 - Cells(8, 6) * 1

回答
投稿日時: 22/12/22 10:23:00
投稿者: sk

引用:
VBAでRSSを使いサイトから取ってきた
1500とか1520とかの数字です

ならばその取得したデータ自体がそういう文字列だからか
(例えば何らかの特殊記号が含まれているなど)、
データの取得の仕方に問題があるのではないでしょうか。
 
とりあえず、次のような形で各セルの値の判定を行なってみて下さい。
 
------------------------------------------------------------------
Sub TestMacro1()
     
    'F10セルの判定
    With Cells(10, 6)
        If IsNumeric(.Value) = False Then
            MsgBox .Address(False, False) & "セルの値""" & .Value & """は数値データに変換できない文字列です。", _
                   vbExclamation, _
                   "エラー"
                   Exit Sub
        End If
    End With
 
    'F8セルの判定
    With Cells(8, 6)
        If IsNumeric(.Value) = False Then
            MsgBox .Address(False, False) & "セルの値""" & .Value & """は数値データに変換できない文字列です。", _
                   vbExclamation, _
                   "エラー"
                   Exit Sub
        End If
    End With
 
    Cells(20, 6) = Cells(10, 6) - Cells(8, 6)
 
End Sub
------------------------------------------------------------------

回答
投稿日時: 22/12/22 17:28:20
投稿者: MMYS

akibacom さんの引用:

この状態で動かすと型が一致しませんとエラー出ます

akibacom さんの引用:
見た目はすべて
1500
1520
とかの整数です

ExcelVBAは、計算出来ないとエラーを出しています。このエラーは文字列など、数値に型変換出来ないときのエラーです。整数のはずだとのことですが、セル値を目視で確認ではなく、実際にVBAが取得している値を調べなければ原因はわかりません。
 
考えられる原因は
・そもそもセルアドレスが間違い。
・数値だと思ってたら数値間に余計なスペースがあった。
・異常に文字列が長くて末尾に文字があり、でも、画面には先頭の4文字しか表示せず。
など。
下記のコードを実行して、ExcelVBAが実際に取得したセル値と数値判定、セルアドレスを確認しましょう。
 
With Cells(10, 6)
  Debug.Print .Value, IsNumeric(.Value), .Address
End With
With Cells(8, 6)
  Debug.Print .Value, IsNumeric(.Value), .Address
End With

 

トピックに返信