|    | 
     ▼シンク さん: 
 
>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 
 
 | 
     
    
   |