Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2010)
関数 Valのエラーについて
投稿日時: 18/05/22 22:16:56
投稿者: kenken719

以下のプログラムを実行すると、下のエラーが発生します。
 実行時エラー6
 オーバーフローしました
 
aaの値を、"11A 0618"にすると正常です。
"D"が実数の演算子??のような働きをしているような気がします。
何か回避策はないでしょうか?
 
以上、宜しくお願いします。
======================
Sub a()
    Dim aa As String
    Dim d As Double
     
    aa = "11D 0618"
    d = Val(aa)
    Debug.Print (d)
End Sub

回答
投稿日時: 18/05/22 23:18:20
投稿者: よろずや

>11D 0618
「D」は、指数表現の指定です。
11掛ける10の618乗になります。
回避方法は、Valを使用する前に別の文字に置き換えてしまうか、
Valを使わずに、自力で変換するかですね。
ちなみに、「E」も指数表現の指定になります。

回答
投稿日時: 18/05/23 08:18:46
投稿者: mattuwan44

Dの後ろが数字じゃなくて、必ず半角スペースがあるなら、こんなでいいのかな?
それとも少し真面目にしておいた方がいいのかな。
 
Sub a()
    Dim aa As String
    Dim d As Double
      
    aa = "11D 0618"
    d = Val(Split(aa, " ")(0))
    Debug.Print (d)
End Sub

投稿日時: 18/05/23 20:18:50
投稿者: kenken719

有難うございました。
Valを使わずに、自力で変換する方法にします。
すっきりしました!