2017-10-17 54 views
0

我想基於特定標準來排序範圍時,從Excel中的用戶窗體用戶選擇複選框。排序的具體範圍VBA

用戶被授予的4個複選框的選項(每個複選框將排序的特定範圍)。我已經嘗試了一些方法和似乎無法弄清楚,我不斷收到「對象需要」在運行時錯誤

Private Sub btnConfirm_Click() 

    If (chkbxValid.value) Then 
     SortData (Range("H4:I1000")) 
    End If 
    If (chkbxValidDuplicate.value) Then 
     SortData (Range("K4:L1000")) 
    End If 
    If (chkbxInvalid.value) Then 
     SortData (Range("N4:O1000")) 
    End If 
    If (chkbxInvalidDuplicate.value) Then 
     SortData (Range("Q4:R1000")) 
    End If 

End Sub 

然後這裏的代碼的第二部分

Private Function SortData(rng As Range) 

    FR = 1 
    FC = 1 
    LR = 1000 
    LC = 2 
    SC = 2 

    Sheets("TRACKER_2.0").rng(cells(FR, FC), cells(LR, LC)).Sort Key1:=Range(cells(FR, SC), cells(LR, SC)), Order1:=xlAscending 

End Function 
+0

你試圖使用超過1列的關鍵。 –

+0

刪除函數調用的括號。此外,'Key1'必須指定第一個排序字段,您正在使用整個範圍,因此可能會產生意想不到的後果。 – SJR

回答

1

對於排序,有更多的標準:

fr = 1 'first row 
fc = 1 'first column 
lr = 200 'last row 
lc = 10 'last column 
sc = 4 'sort column 
Range(Cells(fr,fc),Cells(lr,lc)).Sort key1:=Range(Cells(fr,sc),CellS(lr,sc)), order1:=xlAscending, Header:=xlNo 

使用範圍( 「A1」)風格的格式:

lr = 200 'last row 
Range("A1:J" & lr).Sort key1:=Range("D1:D" & lr), order1:=xlAscending, Header:=xlNo 
+0

您可能希望在範圍對象之前指定圖紙對象名稱,具體取決於按鈕的交互方式。 – Cyril

+0

我編輯我的'SortData(RNG由於範圍)'功能仍然得到有錯誤,我也更新到了我糾正它...現在我就**對象不支持此屬性的評論或方法** – Maldred

+0

另外,請問排序欄的含義是什麼?我瞭解除了那 – Maldred