2017-10-17 27 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 

の上で「必要なオブジェクト」得続けるそれを把握するように見えることはできません。そして、ここでのコードの第2セグメントだ

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

キーとして複数の列を使用しようとしています。 –

+0

関数呼び出しの前後に角括弧を入れてください。また、 'Key1'は最初のソートフィールドを指定しなければなりません。意図しない結果を招くような範囲全体を使用しています。 – SJR

答えて

1

並べ替えのために、より多くの基準があります

範囲( "A1")形式のフォーマット使用
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 

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

ボタンの操作方法に応じて、範囲オブジェクトの前にシートオブジェクト名を指定できます。 – Cyril

+0

私の 'SortData(Range As Range)'関数を編集したのにまだエラーが出てしまったので、修正したものにコメントを更新しました。現在取得中です**オブジェクトはこのプロパティをサポートしていませんまたは方法** – Maldred

+0

また、並べ替えの列が何を意味するか尋ねることはできますか?私はそれ以外のことを理解しています – Maldred

関連する問題