2012-08-30 18 views
8

Excelシートの書式設定された範囲を選択します。私はこの地域を選択する次のステップではVBA:変数で範囲を選択する

lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count 
lastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row 

: 式は次のようになります。

Range(cells(1, 1), cells(lastRow, lastColumn).Select 

しかし、これは私は、次の機能を使用し、最後と最初の行を定義するには 働いていない。たぶん、誰かが間違っていることを考えているかもしれません。どうもありがとう!

+0

正確には動作しません。私はランダムなデータでD4からD4までの範囲を埋もうとしました。あなたのコードはA1からD4を選択しました。あなたが期待するものではありませんか? – ssarabando

答えて

6

あなただけの使用範囲を選択したい場合は、使用範囲の最後にA1から選択したい場合は、この

With ActiveSheet 
    .Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Select 
End With 
のようなSpecialCellsメソッドを使用することができます

ActiveSheet.UsedRange.Select 

を使用

Excelが最後のセルと混同されることがあります。実際の使用範囲よりも小さい範囲ではありませんが、一部のセルが削除された場合は大きくなることがあります。これを避けるには、Findとアスタリスクのワイルドカードを使用して実際の最後のセルを見つけることができます。

Dim rLastCell As Range 

With Sheet1 
    Set rLastCell = .Cells.Find("*", .Cells(1, 1), xlValues, xlPart, , xlPrevious) 

    .Range(.Cells(1, 1), rLastCell).Select 
End With 

最後に、本当に必要な場合のみ選択してください。 Excel VBAで行う必要がある作業のほとんどは、まずRangeを選択するのではなく、Rangeに直接行うことができます。代わりに

.Range(.Cells(1, 1), rLastCell).Select 
Selection.Font.Bold = True 

のあなたは閉じ括弧を

.Range(.Cells(1,1), rLastCells).Font.Bold = True 
3

不足していることができ、すなわち、あなたはRange()を閉じていません。

このRange(cells(1, 1), cells(lastRow, lastColumn)).Select

を試してみてくださいしかし、あなたは本当に、より良いサービスを提供する可能性のある代替のためのディックKusleikaから他の回答をご覧ください。具体的には、コードと同じ最終結果を持つActiveSheet.UsedRange.Selectです。

22

私は「相対参照」とマクロを記録し、これは私が得たものである:

Range("F10").Select 
ActiveCell.Offset(0, 3).Range("A1:D11").Select 

相続人は私が考えたもの:範囲選択が引用符で囲まれている場合は、VBAが本当にSTRINGを望んでいるし、細胞を解釈します次のように試しました。

Dim MyRange as String 
MyRange = "A1:D11" 
Range(MyRange).Select 

あなたがにそれらを回っている

Sub Macro04() 

Dim Copyrange As String 

Startrow = 1 
Lastrow = 11 
Let Copyrange = "A" & Startrow & ":" & "D" & Lastrow 
Range(Copyrange).Select 
End Sub 
1

:)

は、テストの結果、見つかった作業以下、単に文字列変数としてディメンションに確認し、Excelが右のそれのオフに読み込みます、あなたの変数を使用して文字列を作成しますアドレスが、細胞だけlastRow = ActiveSheet.UsedRange.Rows.countlastColumn = ActiveSheet.UsedRange.Columns.Count

1

を使用して(#、#)が整数入力を使用して入力に対処しない私が使用してみました:

Range(cells(1, 1), cells(lastRow, lastColumn)).Select 

ここでlastRowlastColumnは整数ですが、実行時エラー1004を受け取りました。古いVB(6.5)を使用しています。仕事をやった

は、次を使用していた:

Range(Chr(64 + firstColumn) & firstRow & ":" & Chr(64 + lastColumn) & firstColumn).Select. 
+1

実際にfirstColumnはlastRow ==> Range(Chr(64 + firstColumn)&firstRow& ":"&Chr(64 + lastColumn)&lastRow)を読むべきです.Selec –

7

私は似たように走った - 私はいくつかの変数に基づいて範囲を作りたかったのです。セルの値がRangeに渡されたと思うので、Worksheet.Cellsを使用して直接動作しませんでした。

この

は、しかし仕事をした:A1形式で範囲が期待するものにセルの数値の位置を、変換の世話をした

Range(Cells(1, 1).Address(), Cells(lastRow, lastColumn).Address()).Select 

+0

ありがとうございました。このために構文上の問題があります。 :) – Michelle

+0

あなたは私の日を救ってくれてありがとう! –

関連する問題