在单元格A1和A2中,我有一个连接公式,分别产生X1:X2和Y1:Y2,其中字母和数值都取决于工作表中的某些公式。
在VBA中,我希望分别对A1和A2中的描述范围进行梳理。我尝试了以下公式,但它不起作用:
Sub Sort()
Dim myrange1 As String
Dim myrange2 As String
myrange1 = A1
myrange2 = a2
Range(myrange1).Select
ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Add Key:=Range( _
"X2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sample generator").Sort
.SetRange Range(myrange1)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range(myrange2).Select
ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sample generator").Sort.SortFields.Add Key:=Range( _
"X4"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sample generator").Sort
.SetRange Range(myrange2)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
谢谢!
答案 0 :(得分:1)
你写的方式:
Sub Sort()
Dim myrange1 As String
Dim myrange2 As String
myrange1 = A1
myrange2 = a2
A1
和a2
是变量。在下面的代码Range(myrange1).Select
中,它们可能是字符串,只要您在此处提及" A1和A2中的范围分别为#34;。
因此,尝试这样的事情:
myrange1 = "A1"
myrange2 = "a2"
然后Range(myrange1).Select
运行良好。
通常,请阅读这两个内容以使您的代码更好一些:
然后尝试重构整个代码。
答案 1 :(得分:0)
在A1中你有一个公式,可以创建字符串" X1:X2&#34 ;;在A2中你有一个公式,可以创建字符串" Y1:Y2"。
您希望以升序方式对X1:X2进行排序,然后按升序方式对范围Y1:Y2进行排序。
{
"extends": "airbnb",
"parser": "babel-eslint",
"rules": {
}
}