Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 如何使excel排序与变量一起工作?_Vba_Excel_Sorting - Fatal编程技术网

Vba 如何使excel排序与变量一起工作?

Vba 如何使excel排序与变量一起工作?,vba,excel,sorting,Vba,Excel,Sorting,我正在尝试使用以下代码进行排序: Range(BRPdest).Activate ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _ Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending,

我正在尝试使用以下代码进行排序:

Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
    .SetRange Range(ActiveCell.Column & ":12", ActiveCell.Column & ":125")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
我录制了一个宏,得到了这个,但它有静态范围

我需要它来找到第一行应该做的相关列

它应该将列从单元格12排序到125(或更少),单元格中的数据格式为“A12345”

当代码到达.apply行时,它抛出错误1004,我认为我的密钥可能有问题:(我还尝试将密钥设置为与具有相同错误的范围相同的值)

有人能指出我做错了什么吗


提前感谢。

Column属性返回列的数字索引,而不是范围引用中使用的字母。您可以使用(sheet).Cells(行、列)通过数字行和列引用来引用单个单元格范围

Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
    .SetRange Range(Cells(12,ActiveCell.Column), Cells(125,ActiveCell.Column))
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

如果要排序的数据大小可能不同,则可能需要查找数据集中最后一行的内容,而不是依赖固定的行号。

得益于Wedget和a.S.H的组合

我已经解决了

    Range(BRPdest).Activate
    ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
    ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
    Range(Cells(12, ActiveCell.Column), Cells(125, ActiveCell.Column)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Batch Record Progress").sort
        .SetRange Range(Cells(12, ActiveCell.Column), Cells(125, ActiveCell.Column))
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
我必须将范围更改为楔形块建议的格式,并在键中使用该格式


非常感谢

BRPdest=“$p$27”在相关情况下,您不能以列
D
为标准对列
p
进行排序。条件范围必须在已排序的范围内。我进行了更改(在该范围后有一个额外的“'),但仍然得到相同的错误