15

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

ただし、これは機能していません。多分誰かがそれの何が悪いのか考えています。どうもありがとう!

4

6 に答える 6

46

「相対参照」を使用してマクロを記録したところ、次のようになりました。

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
于 2012-11-30T06:59:10.510 に答える
13

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

これはうまくいきました:

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

これで、セルの数値位置が、Range が期待する A1 形式に変換されました。

于 2015-03-25T19:29:08.813 に答える
7

使用範囲を選択したいだけの場合は、

ActiveSheet.UsedRange.Select

A1から使用範囲の最後まで選択したい場合は、このようにSpecialCellsメソッドを使用できます

With ActiveSheet
    .Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Select
End With

最後のセルが何であるかについて、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(.Cells(1, 1), rLastCell).Select
Selection.Font.Bold = True

あなたはできる

.Range(.Cells(1,1), rLastCells).Font.Bold = True
于 2012-08-30T14:58:56.367 に答える
5

閉じ括弧がありません。IEは閉じていませんRange()

これを試してRange(cells(1, 1), cells(lastRow, lastColumn)).Select

しかし、あなたはディック・クスレイカからの他の答えを実際に見て、あなたにより良いサービスを提供する可能性のある代替案を探す必要があります。具体的には、ActiveSheet.UsedRange.Selectこれはコードと同じ最終結果になります。

于 2012-08-30T15:29:56.217 に答える
1

私は使用してみました:

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

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

うまくいったのは、以下を使用することでした:

Range(Chr(64 + firstColumn) & firstRow & ":" & Chr(64 + lastColumn) & firstColumn).Select.  
于 2014-09-23T18:23:38.847 に答える