2016-05-24 4 views
0

ダイナミックレンジを作成する最もクリーンな方法を見つけようとしていますが、これは私がやりたいことに近いですが、どうすれば正しいかわかりません。何かご意見は?ダイナミックレンジをコードの1行に集約

Sub Macro1() 
Dim RNG As Range 
With Sheets("Open Jobs Report") 'Change to your sheet 
Set RNG = .Range("A1", .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, .Cells(1, .Columns.Count).End(xlToLeft).Column)) 
End With 

答えて

3

これを試してみてください:

Dim RNG As Range 
Set RNG = .Range("A1", .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, .Cells(1, .Columns.Count).End(xlToLeft).Column)) 

あなたは範囲オブジェクトのいくつかの前に.を使用していたので、私はそれがこのようにして、ブロックであると仮定します。

Sub foooooii() 
Dim RNG As Range 
With Sheets("Sheet3") 'Change to your sheet 
    Set RNG = .Range("A1", .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, .Cells(1, .Columns.Count).End(xlToLeft).Column)) 
End With 
Debug.Print RNG.Address 
End Sub 
+0

コードの.rows.count部分に無効な、または修飾されていない参照エラーが発生しました。 – TonyP

+1

@TonyP私の推測では、あなたがWith Blockでそれを持っていないということです、編集を参照してください。 –

+1

@ScottCranerあなたは "A1"を避け、 "Set RNG = .Range(.Cells(.Rows.Count、" A ")。End(xlUp)、.Cells(1、.Columns.Count) .End(xlToLeft)) "となります。申し訳ありませんが、PCによっては正しく編集できません。 – user3598756

3

は、上の建物スコットの解決策とちょうどそれを少し短くするために:

Set RNG = .Range(.Cells(.Rows.Count, "A").End(xlUp), .Cells(1, .Columns.Count).End(xlToLeft)) 
+0

@ScottCranerありがとう! – user3598756