2017-02-14 16 views
3

角がSelectionの場合、各コーナーにどのようにCellがありますか?具体的には、右上と左下。VBA選択の角を見つける

など。ユーザーが範囲B2:G9を選択した場合は、Selectionオブジェクトから各コーナーのアドレスを取得したいと考えています。

Selection corners

私は左上と右下の角を取得するために.Addressを使用し、私はクリーンな方法があるかどうかを知りたいそれらに置き換えた文字列を分割開始し、正規表現を行うことができながら。

答えて

4

あなたは以下のコードのようなものを意味しますか?

:それは離れてSelectSelectionから滞在する方が良いでしょう、あなたが代わりに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 
+2

(下記のコードではまだ実装されていない)のはなぜで '0.1'' BottomLeft = .Cells (.Count、0.1).Address'?どうして 'BottomLeft = .Cells(.Rows.Count、1).Address'? –

+0

@AxelRichterそれはタイプミスです、ありがとう –

2
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 

このような行と列の値を取得できます。エラーがある場合はコードをテストしません

関連する問題