Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-按升序日期排列的表格顺序_Vba_Excel - Fatal编程技术网

VBA-按升序日期排列的表格顺序

VBA-按升序日期排列的表格顺序,vba,excel,Vba,Excel,我有以下代码,我想按升序日期订购表格: Set TableCreated = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$8:$F$22"), , xlNo) TableCreated.Name = matchCheck With TableCreated.Sort .SortFields.Add Key:= _ Range("[[#All],[Column1]]"), _ S

我有以下代码,我想按升序日期订购表格:

Set TableCreated = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$8:$F$22"), , xlNo)
TableCreated.Name = matchCheck
With TableCreated.Sort
        .SortFields.Add Key:= _
            Range("[[#All],[Column1]]"), _
            SortOn:=xlSortOnValues, _
            Order:=xlAscending, _
            DataOption:=xlSortNormal
End With
但代码正在失败。 我试图通过录制宏并检查代码来找到解决方案:

ActiveWorkbook.Worksheets("T1_Migration_C5_BKO").ListObjects( _
    "T1_Migration_C5_BKO").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("T1_Migration_C5_BKO").ListObjects( _
    "T1_Migration_C5_BKO").Sort.SortFields.Add Key:=Range( _
    "T1_Migration_C5_BKO[[#All],[Column1]]"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("T1_Migration_C5_BKO").ListObjects( _
    "T1_Migration_C5_BKO").Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
这里的问题是表是通过is名称调用的,而不是参数TableCreated

谢谢,


Michael你能试着这样做吗:

With ActiveWorkbook.Worksheets("T1_Migration_C5_BKO").ListObjects(TableCreated.Name).Sort

因此,该表将按其名称调用,例如
TableCreated.name
。它应该能用。

你能试着这样做吗:

With ActiveWorkbook.Worksheets("T1_Migration_C5_BKO").ListObjects(TableCreated.Name).Sort

因此,该表将按其名称调用,例如
TableCreated.name
。它应该可以工作。

因为您正在命名表,所以请在range参数中使用该名称:

Set TableCreated = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$8:$F$22"), , xlNo)

matchCheck = "MyTable"
TableCreated.name = matchCheck

With ActiveSheet.ListObjects(matchCheck).Sort
    .SortFields.Add Key:= _
        Range(matchCheck & "[Column1]"), _
        SortOn:=xlSortOnValues, _
        Order:=xlAscending, _
        DataOption:=xlSortNormal
    .Apply
End With

还有,别忘了。申请吧

既然要命名表,请在range参数中使用该名称:

Set TableCreated = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$8:$F$22"), , xlNo)

matchCheck = "MyTable"
TableCreated.name = matchCheck

With ActiveSheet.ListObjects(matchCheck).Sort
    .SortFields.Add Key:= _
        Range(matchCheck & "[Column1]"), _
        SortOn:=xlSortOnValues, _
        Order:=xlAscending, _
        DataOption:=xlSortNormal
    .Apply
End With
还有,别忘了。申请吧