访问VBA排序:错误1004,应用程序定义或对象定义的错误

时间:2016-09-20 16:32:20

标签: vba sorting ms-access

注意:此解决方案与'1004': "The sort reference is not valid."相同 但是应该保留,因为无论出于何种原因,我收到了不同的错误文本,所以我看到其他人可能有相同的错误,但没有看到上述解决方案是相同的。

我正在尝试处理5个相关的.csv文件,其中4个需要进行排序以使关键关系正确处理。我们每个月都在谈论一组单独的文件,数年的数据,所以预先分配它们不是首选。无论如何,当我尝试排序时,我得到上述错误。我的原始代码名为“sortSheet”(下面已注释掉,但包含在代码之后),我认为将其内联移动可能会解决问题,但它没有发生,任何人都能给我任何洞察力导致这个问题吗?这是当前的代码段:

filename = Dir(fullFolder + "HapDiagnosis.csv")
Dim wbDiag As Excel.Workbook
Dim shDiag As Excel.Worksheet
Set wbDiag = xL.Workbooks.Open(fullFolder + filename)
xOpenDiag = True
Set shDiag = wbDiag.Sheets(1)
lastRow = shDiag.Cells(shDiag.Rows.Count, "A").End(xlUp).row
'sortSheet shDiag, "C", lastRow
shDiag.Range("A1:C" + CStr(lastRow)).Select
Selection.Sort Key1:=Range("B1"), _
        Key2:=Range("A1"), _
        Header:=xlYes, _
        MatchCase:=False

我听说使用“.Select”并不是一个好主意,但是我使用这个子程序得到了同样的错误:

Private Sub sortSheet(ByRef sh As Excel.Worksheet, ByVal rightCol As String, _
                ByVal lastRow As Long)
  With sh.Range("A1:" + rightCol + CStr(lastRow))
    .Sort Key1:=Range("B1"), _
        Order1:=xlAscending, _
        Key2:=Range("A1"), _
        Order2:=xlAscending, _
        Header:=xlYes, _
        MatchCase:=False, _
        Orientation:=xlTopToBottom
  End With
End Sub

0 个答案:

没有答案