|
▼シンク さん:
>If文の表現に問題があるのかと思いました。
>すべてElseにいっているようです。
何となく、A列のセルのデータ型(時刻だけれど、文字列型になっているとか)
に問題があるような気がします。
そこで、その部分だけ 修正してみました。
↓の方法は、 A列セルのValue2 をみて判別するのでなく、A列範囲のセルの
「表示されている」データを見て判別する方法です。
前の方法が 9:00 のセルをみて 0< 0.375 < 1.0 を判定する方法だったのに
対し、こんどは セルのテキスト "9:00" を調べ、そのなかに 「:」が含まれて
いるか、含まれていれば、時刻データと判定する方法です。
その他(作業列を使ってSort などの考え)は 前回と変わりません。
Sub Try3()
Dim v, u, i As Long
Dim r As Range
Const CLSID_DataObject = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
Set r = Range("A1", Cells(Rows.Count, 1).End(xlUp).Offset(1))
r.Copy '範囲をCopyして クリップボードにTextを転送
With GetObject("new:" & CLSID_DataObject)
.GetFromClipboard
v = Split(.GetText(1), vbCrLf) 'クリップボードのTextを取得
End With
Application.CutCopyMode = 0
For i = 0 To UBound(v)
If v(i) Like "*:*" Then
u = v(i)
Else
v(i) = u
End If
Next
r.Offset(, 2).Value = Application.Transpose(v)
Stop
r.Resize(, 3).Sort r.Columns(3), Header:=xlNo
Columns(3).Clear
End Sub
|
|