提前抱歉,因為這個問題很可能已被問到,但是我似乎找不到有效的解決方案 - 我有一個宏可以接收用戶的輸入,在 SQL 資料庫中搜索資訊,然后獲取該資訊并粘貼將其放入表格中,并將按字母順序排序。我唯一的問題是排序,我可以按字母順序對一列進行排序,但是相鄰的列也不會排序。下面是用于排序的代碼片段以及原始測驗資料集的影像,在我的宏之后會發生什么,以及它實際上應該是什么:
Sub testSort()
'Sheets(1).Range("A2", Sheets(1).Range("A2").End(xlDown)).Select
'Sheets(1).Range("A2:" & Sheets(1).Range("A2").End(xlDown).Address).Select
Dim testrange As Range
Set testrange = Sheets(1).Range("A2", Sheets(1).Range("A2").End(xlDown))
testrange.Sort key1:=Range("A2"), _
order1:=xlAscending, _
Orientation:=xlSortColumns
End Sub

uj5u.com熱心網友回復:
下面是更新成功的代碼
Sub testSort()
Dim testrange As Range
Set testrange = Sheets(1).Range("A2", Sheets(1).Range("B2").End(xlDown))
testrange.Sort key1:=Range("A2:B2"), _
order1:=xlAscending
End Sub
uj5u.com熱心網友回復:
您用于排序的范圍testrange, 只是一列。這意味著它對 A 列中的名稱進行排序,但不會將 B 列中的數字移動到名稱的新位置。要解決此問題,請在testrange類似中包含 B 列
Set testrange = Sheets(1).Range("A2", Sheets(1).Range("B2").End(xlDown))
testrange 現在包括 A 列和 B 列。
為了在多個相鄰表上進行回圈,我們可以使用一個變數作為起始位置,然后移動每個回圈的起始位置。
Sub testSort()
Dim topCorner As Range
Set topCorner = Sheets(1).Range("A2")
For i = 1 To 3
Dim testrange As Range
Set testrange = Sheets(1).Range(topCorner, topCorner.End(xlDown).Offset(, 1))
testrange.Sort Key1:=testrange.Columns(1), _
Order1:=xlAscending, _
Orientation:=xlSortColumns
Set topCorner = topCorner.Offset(, 3)
Next
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/314579.html
