2016-08-12 14 views
1

並べ替えの範囲を取得する際に問題が発生します。興味深いことに、Range.sort関数(いくつかのオプションを削除してから削除)にいくつかのオプションを追加しようとするまで、これはうまくいきました。指定されたエラーコードは、 "実行時エラー '1004':RangeクラスのSortメソッドが失敗しました。"私は以下のコードを投稿しましたが、なぜソートが失敗したのかを特定することはできません。私はすべての列と行の値を見てきましたが、すべて正しいです。それは私のシート上でうまく見える "B2:B39"をソートしようとしています。また、ソートが失敗するまで出力がどのように表示されるかを示す隠し変数シートの画像を添付しました。範囲内のExcel VBAソートが失敗する

編集:明確にするために、コピーを試み、ユニークを削除してからの最初の行にソートしましたが、同じエラーが表示されます。機能が最後に機能していたとき、私は範囲が2行目から始まったと信じています。

Output range I'm trying to sort

Sub addUniques() 
    Dim i As Long 
    For i = 2 To 9 
     Call copyColToSheet(ThisWorkbook.Sheets("CallLog"), ThisWorkbook.Sheets("HiddenVariables"), NumToLet(i), NumToLet(i)) 
    Next i 
End Sub 

Function copyColToSheet(wsSource As Worksheet, wsDest As Worksheet, colSource As String, colDest As String) 
    wsSource.Range(colSource & "2:" & colSource & CStr(getLastRowInCol(wsSource, colSource))).Copy wsDest.Range(colDest & "2:" & colDest & CStr(getLastRowInCol(wsDest, colDest))) 
    wsDest.Range(colDest & "2:" & colDest & CStr(getLastRowInCol(wsDest, colDest))).RemoveDuplicates Columns:=1, Header:=xlNo 
    wsDest.Range(colDest & "2:" & colDest & CStr(getLastRowInCol(wsDest, colDest))).Sort 
End Function 

Function getLastRowInCol(ws As Worksheet, col As String) As Long 
    With ws 
     getLastRowInCol = .Range(col & .Rows.Count).End(xlUp).Row 
    End With 
End Function 

Function NumToLet(lngCol As Long) As String 
    Dim vArr 
    vArr = Split(Cells(1, lngCol).Address(True, False), "$") 
    NumToLet = vArr(0) 
End Function 

答えて

1

私はあなたがこれを試してみてくださいキー

を設定する必要があると思う。それがあった

Function copyColToSheet(wsSource As Worksheet, wsDest As Worksheet, colSource As String, colDest As String) 
wsSource.Range(colSource & "2:" & colSource & CStr(getLastRowInCol(wsSource, colSource))).Copy wsDest.Range(colDest & "2:" & colDest & CStr(getLastRowInCol(wsDest, colDest))) 
wsDest.Range(colDest & "2:" & colDest & CStr(getLastRowInCol(wsDest, colDest))).RemoveDuplicates Columns:=1, Header:=xlNo 
wsDest.Range(colDest & "2:" & colDest & CStr(getLastRowInCol(wsDest, colDest))).Sort Key1:=wsDest.Range(colDest & "2") 
End Function 
+0

うん、。お手伝いありがとう。 – RWA4ARC

関連する問題