角がSelection
の場合、各コーナーにどのようにCell
がありますか?具体的には、右上と左下。VBA選択の角を見つける
など。ユーザーが範囲B2:G9
を選択した場合は、Selection
オブジェクトから各コーナーのアドレスを取得したいと考えています。
私は左上と右下の角を取得するために.Address
を使用し、私はクリーンな方法があるかどうかを知りたいそれらに置き換えた文字列を分割開始し、正規表現を行うことができながら。
角がSelection
の場合、各コーナーにどのようにCell
がありますか?具体的には、右上と左下。VBA選択の角を見つける
など。ユーザーが範囲B2:G9
を選択した場合は、Selection
オブジェクトから各コーナーのアドレスを取得したいと考えています。
私は左上と右下の角を取得するために.Address
を使用し、私はクリーンな方法があるかどうかを知りたいそれらに置き換えた文字列を分割開始し、正規表現を行うことができながら。
あなたは以下のコードのようなものを意味しますか?
注:それは離れてSelect
とSelection
から滞在する方が良いでしょう、あなたが代わりにWith Range("B2:G9")
を使用して試みることができる
Option Explicit
Sub GetRangeSelectionCorners()
Dim TopLeft As String, TopRight As String, BottomLeft As String, BottomRight As String
Dim TopLeftRow As Long, TopLeftCol As Long, BottomRightRow As Long, BottomRightCol As Long
Range("B2:G9").Select
With Selection
TopLeft = .Cells(1, 1).Address '<-- top left cell in Selection
TopRight = .Cells(1, .Columns.Count).Address '<-- top right cell in Selection
BottomLeft = .Cells(.Rows.Count, 0.1).Address '<-- bottom left cell in selection
BottomRight = .Cells(.Rows.Count, .Columns.Count).Address '<-- last cell in selection (bottom right)
' get row and column number
TopLeftRow = .Cells(1, 1).Row '<-- top left cell's row
TopLeftCol = .Cells(1, 1).Column '<-- top left cell's column
BottomRightRow = .Cells(.Rows.Count, .Columns.Count).Row '<-- bottom right cell's row
BottomRightCol = .Cells(.Rows.Count, .Columns.Count).Column '<-- bottom right cell's column
End With
MsgBox "Top Left cell address is :" & TopLeft & vbCr & _
"Top Right cell address is :" & TopRight & vbCr & _
"Bottom Left cell address is :" & BottomLeft & vbCr & _
"Bottom Right cell address is :" & BottomRight
MsgBox "Top Left cell's row is : " & TopLeftRow & _
", and column is :" & TopLeftCol & vbCr & _
"Bottom Right cell's row is : " & BottomRightRow & _
", Bottom Right cell's column is :" & BottomRightCol
End Sub
top_right_row=selection.rows(1).row
top_right_col=(selection.columns(1).column+selection.columns.count-1)
bottom_right_row=(selection.rows(1).row+selection.rows.count-1)
bottom_right_col=selection.columns(1).column
このような行と列の値を取得できます。エラーがある場合はコードをテストしません
(下記のコードではまだ実装されていない)のはなぜで '0.1'' BottomLeft = .Cells (.Count、0.1).Address'?どうして 'BottomLeft = .Cells(.Rows.Count、1).Address'? –
@AxelRichterそれはタイプミスです、ありがとう –