|    | 
     ▼シンク さん: 
>kanabun氏、返信ありがとうございます。 
> 
>下記の件について、試してみたところ問題があるようです。 
 
>If文の表現に問題があるのかと思いました。 
>すべてElseにいっているようです。 
>> For i = 1 To UBound(v) 
>>   If v(i, 1) > 0# And v(i, 1) < 1# Then 
そこのIf文は A列のデータが 9:00 や 8:12 など「時刻」データである 
かどうかを判定しているところです。 
もし 9:00 とかの時刻データであれば、そのセルの Valueは 9:00 で、  
そのセルの Value2 は 0.375 です。(Value = 9:00 のセルの Value2 は 
0.375 つまりシリアル値 です ) 
したがって 
>   If v(i, 1) > 0# And v(i, 1) < 1# Then 
の行は 時刻の代入されているセルかどうかを調べているわけです。 
時刻は 0:00 〜 24:00 の値をとりますから、Value2としては 
0.0 〜 1.0 の範囲になります。それを判定しているわけです。 
(ただし、空白セルも、時刻 00:00 のセルも 数値にすると 0 ですから 
00:00 というデータがあると、ほんとはちょっとまずいのですが) 
  
で、 9:00 とか 8:12 とかのセルを選択して 以下を実行してDebugして 
もらえないですか? 
Sub checkDataType() 
 MsgBox TypeName(ActiveCell.Value) 
End Sub 
こちらで、9:00 とか 8:12 とかのセルをポイントして ↑を実行しますと 
MsgBox には Double と表示されます。 
そちらではどうですか? 
もし String とか表示されてるとすると、これでは 
>   If v(i, 1) > 0# And v(i, 1) < 1# Then 
の範囲に入りません(文字列です)ので Else のほうに行っちゃって、 
If文の判定に失敗してます。 
 | 
     
    
   |