|
▼kaoru さん:
こんにちは。
ちょっと訂正
>
tmarray = Array(TimeValue("10:30"), TimeValue("9:00"), TimeValue("8:30"),TimeValue("7:00"))
'[]での囲みを取りました。付けておいても不具合はないですが、意味としては
'取ったほうが良いと思います。
>> Set rng = Range("b1", Cells(Rows.Count, "b").End(xlUp))
>> For Each crng In rng
>> With crng
>> If .Value <> "" Then
>> ans = Application.Match(.Value, tmarray, -1)
>> If Not IsError(ans) Then
>> .Value = tmarray(ans - 1)
>> End If
>> End If
>> End With
>> Next
>> Erase tmarray
> の解説を簡単にお願いいたします。
これだけのコードですから、HELP等を利用して解読してみてください。
その上で不明な点は具体的に記述してください。
このコードは、「ワークシート関数のMatchをVBAで使う」
がキーポイントです。
tmarray = Array(TimeValue("10:30"), TimeValue("9:00"), TimeValue("8:30"),TimeValue("7:00"))
というコードで配列を作っていますが、この仕様だと本来は
コード内に定数(10:30や9:00や8:30や7:00の記述です)を記述すべきでは
ないと思っています。
だって、将来、10:30 が 11:00に変わる可能性は十分考えられますからねえ!!
また、基準になる時刻が増える可能性も否定できませんよね?
本当は、予めセルに上記の時刻を入力しておけば、時刻の変更や基準になる時刻が
増えてもコードの変更をしなくても済むと思いますよ!!
こんなところが上記のコードのコンセプトです。
|
|