Excelシートのフォーマットされた範囲を選択したい。最後の行と最初の行を定義するには、次の関数を使用します。
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
ただし、これは機能していません。たぶん誰かがそれのどこが悪いのかを知っているかもしれません。どうもありがとう!
「相対参照」でマクロを記録しましたが、これは私が得たものです:
Range("F10").Select
ActiveCell.Offset(0, 3).Range("A1:D11").Select
私が考えたものは次のとおりです。範囲選択が引用符で囲まれている場合、VBAは実際にSTRINGを必要とし、そこからセルを解釈するので、次のことを試みました。
Dim MyRange as String
MyRange = "A1:D11"
Range(MyRange).Select
そして、それはうまくいきました:)...あなたの変数を使用して文字列を作成し、STRING変数としてExcelのディメンションを作成することを確認してください。
動作確認済みであることが判明しました:
Sub Macro04()
Dim Copyrange As String
Startrow = 1
Lastrow = 11
Let Copyrange = "A" & Startrow & ":" & "D" & Lastrow
Range(Copyrange).Select
End Sub
私は似たようなことに出くわしました-いくつかの変数に基づいて範囲を作成したかったのです。セルの値がRangeに渡されたと思うので、Worksheet.Cellsの使用は直接機能しませんでした。
これはうまくいきました:
Range(Cells(1, 1).Address(), Cells(lastRow, lastColumn).Address()).Select
これにより、セルの数値の位置がRangeが期待するもの、つまりA1形式に変換されます。
使用する範囲を選択するだけの場合は、
ActiveSheet.UsedRange.Select
A1から使用範囲の最後までを選択する場合は、次のようなSpecialCellsメソッドを使用できます。
With ActiveSheet
.Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Select
End With
最後のセルが何であるかについて、Excelが混乱することがあります。実際に使用されている範囲よりも小さい範囲になることはありませんが、一部のセルが削除された場合は大きくなる可能性があります。これを回避するには、検索とアスタリスクワイルドカードを使用して、実際の最後のセルを検索します。
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(.Cells(1, 1), rLastCell).Select
Selection.Font.Bold = True
あなたはできる
.Range(.Cells(1,1), rLastCells).Font.Bold = True
かっこがありません、I.E。 Range()
を閉じていません。
これを試してくださいRange(cells(1, 1), cells(lastRow, lastColumn)).Select
しかし、Dick Kusleikaからの他の回答を見て、より良いサービスを提供できる可能性のある選択肢を探してください。具体的には、コードと同じ最終結果を持つActiveSheet.UsedRange.Select
。
それらをアドレスに変換していますが、Cells(#、#)はアドレス入力ではなく整数入力を使用するため、lastRow = ActiveSheet.UsedRange.Rows.count
とlastColumn = ActiveSheet.UsedRange.Columns.Count
を使用してください
私は使用してみました:
Range(cells(1, 1), cells(lastRow, lastColumn)).Select
lastRow
とlastColumn
は整数ですが、実行時エラー1004を受け取りました。古いVB(6.5)を使用しています。
うまくいったのは、次のものを使用することでした:
Range(Chr(64 + firstColumn) & firstRow & ":" & Chr(64 + lastColumn) & firstColumn).Select.