根据我的问题,你可以得出结论我是VBA的新手。 我记录了一些基本上选择一些行的宏,然后以各种方式对数据进行排序。一个这样的宏如下所示。它选择第17行到第203行,然后按“AJ”列按升序排序。
问题是我不希望我的选择的最后一行,即行203,是一个常量。我希望它是一个变量。在我的电子表格中,我在单元格Z10中有一个变量,我想将其用作分配给我的排序选择的最后一行的数字。例如,如果Z10的值为100,那么我希望我的宏选择第17行到第100行并执行排序。如果我在单元格Z10中放置值203,那么我希望宏基于选择行17到203进行排序,依此类推。
由于 专利
' Ticker Macro
'
' Keyboard Shortcut: Ctrl+t
'
Rows("17:203").Select
Range("A203").Activate
ActiveWorkbook.Worksheets("Invest daily").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Invest daily").Sort.SortFields.Add Key:=Range( _
"AJ17:AJ203"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Invest daily").Sort
.SetRange Range("A17:DB203")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("AJ17").Select
End Sub
答案 0 :(得分:0)
我相信这就是你要找的东西:
Dim nLastRowIndex As Long, nColIndex As Long
nLastRowIndex = 203 'TODO determine last row index
nColIndex = 17
'Instead of Rows("17:203").Select, you'll do:
Rows(CStr(nColIndex) & ":" & CStr(nLastRowIndex)).Select
...
VBA中的Dim
语句声明了一个变量(此处为nLastRowIndex
和nColIndex
),然后您可以为它们分配值(分别为203和17)。稍后,您可以使用这些值来形成单元格索引,方法是将变量的数值转换为字符串,然后将它们连接到单元格索引"17:203"
中。
如果你想使用另一个包含最后一行编号的单元格(如你问题中的Z10
),你需要做的就是(未经测试的代码,你可能需要调整一下但是它很接近):
nLastRowIndex = CLng(Cells("Z10").Value)
此代码读取单元格Z10
的值,将其转换为Long
(32位整数值),然后将值赋给nLastRowIndex
。
答案 1 :(得分:0)
您需要获取Z10单元格中的值并将此值赋给变量,然后使用此变量而不是常量:
' Ticker Macro
'
' Keyboard Shortcut: Ctrl+t
'
Dim MaxRow As String
MaxRow = Cells(10,26).Value
Rows("17:" & MaxRow).Select
Range("A" & MaxRow).Activate
ActiveWorkbook.Worksheets("Invest daily").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Invest daily").Sort.SortFields.Add Key:=Range( _
"AJ17:AJ" & MaxRow), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Invest daily").Sort
.SetRange Range("A17:DB" & MaxRow)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("AJ17").Select
End Sub