2017-06-26 5 views
0

最初のセルの選択に基づいてダイナミックレンジの長さを保存してから、カラムの最後まで選択する必要があります。ここに私は、コードを実行し、行を取得する場合、私は今ダイナミックレンジの長さを取得するVBA

Sub Macro1() 
Dim number_prop_components As Integer 
Dim range_prop As Range 
Range("C26").Select 
Set range_prop = Range(Selection, Selection.End(xlDown)).Select 
number_prop_components = range_prop.Height 
MsgBox (range_prop.Height) 
End Sub 

で午前どこ私はエラーを取得する「ランタイム 『=範囲(セレクション、Selection.End(xlDown))。選択をrange_prop設定』エラー '424':オブジェクトが必要です "

ダイナミックレンジを保存し、その高さまたは幅を整数として保存するにはどうすればよいですか?どんな助けもありがとう!

答えて

0

あなたは、範囲変数=選択、あなたはおそらく範囲を望んですることはできません。

Set range_prop = Range(Selection, Selection.End(xlDown)) 

その後、サイズを取得するために、変数に対して.rows.countと.columns.countを使用することができます:range_prop.rows.count

本当に使いたいですか.end(xldown)?空白があれば全体の方法ではなく、最初の空白にのみ移動します。

私はここで少しあなたのためにあなたのコードをクリーンアップしています

Sub Macro1() 
    Dim number_prop_components As Long, range_prop As Range 
    Set range_prop = Range(Range("C26"), Range("C26").End(xlDown)) 
    number_prop_components = range_prop.Rows.Count 
    MsgBox (number_prop_components) 
End Sub 
+0

はどうもありがとうございました!私はVBAを学ぶ初期段階にあり、あなたの提案はとても役に立ちました! – Omar123456789

1
Set range_prop = Range(Selection, Selection.End(xlDown)).Select 
number_prop_components = range_prop.Height 
MsgBox (range_prop.Height) 

は次のようになります。

Set range_prop = Range(Selection, Selection.End(xlDown)) 
number_prop_components = range_prop.Rows.Count 
range_prop.Select 
MsgBox number_prop_components 

1 - あなたが最後に.Selectを追加すると、何も返さないサブルーチンを呼び出しているので、結果を代入することはできません。範囲の

2 - 高さmyRange.Rows.count

、3-いけないを使用して、行のその数によって得られるサブルーチンパラメータの周りに括弧を置くが、何かを返す関数を呼び出すときにのみ。

4-一般的に、VBAでの選択作業は避けてください。読むHow to avoid using Select in Excel VBA macros

+0

ありがとうございます!私はVBAを学ぶ初期段階にあり、あなたの提案はとても役に立ちました! – Omar123456789

0

あなたはので、ここでいくつかのオプションがあり、「長さ」によって何を意味するかわからない:

Option Explicit 

Public Sub ShowSelectedDims() 
    Dim startCell As Range, endCell As Range, rng As Range, h As Long, w As Long 

    With Sheet1 
     Set startCell = .Range("C26") 
     Set endCell = startCell.End(xlDown) 
     Set rng = .Range(startCell, endCell) 
    End With 

    With rng 
     h = rng.Height 
     w = rng.Width 
    End With 

    Debug.Print h 
    Debug.Print w 
    Debug.Print "Total cells: " & rng.Cells.Count 
    Debug.Print "Total rows: " & rng.Rows.Count 
    Debug.Print "Total columns: " & rng.Columns.Count 

    '75 
    '48 
    'Total cells: 5 
    'Total rows: 5 
    'Total columns: 1 
End Sub 
+0

ありがとうございます!私はVBAを学ぶ初期段階にあり、あなたの提案はとても役に立ちました! – Omar123456789

関連する問題