EXCELで画像やシェイプを含めた使用範囲を取得したい – プログラミング – Home

EXCELで画像やシェイプを含めた使用...
 
通知
すべてクリア

[解決済] EXCELで画像やシェイプを含めた使用範囲を取得したい


ぽこ
 ぽこ
(@ぽこ)
ゲスト
結合: 20年前
投稿: 23
Topic starter  

初心者のため、分かりづらいかもしれませんがすみません。
EXCELでVBで、使用範囲を取得したいです。

LastC = Range(A1:AA100).SpecialCells(xlCellTypeLastCell).Column
LastR = Range(A1:AA100).SpecialCells(xlCellTypeLastCell).Row

とやったところ、セルに直接入力している部分の最後のセルは取れたのですが、画像や
シェープやグラフなどが入ったセルも含めた使用している範囲を知りたいのですが、そ
の方法がわかりません。またRange(A1:AA100)というのもできれば、シート内全部の中
にしたいので、AA100とか調べる範囲の制限をつけたくないです。
どうしたらよろしいかご教授いただけたらと思います。
よろしくお願いします。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

図形用のものはないようですね。
すべてのShapes(DrawingObjects)をループして、TopLeftCell、BottomRightCellを見て
いくんでしょうかね。

sample)
Sub test()
Dim r As Range

Set r = GetDrawingObjectUsedRange
If Not r Is Nothing Then
' セルを選択
r.Select
End If
End Sub

' 図形の使用しているRangeを取得
Private Function GetDrawingObjectUsedRange() As Range
Dim o As Object
Dim r As Range
Dim tl As Range
Dim br As Range

For Each o In ActiveSheet.DrawingObjects
' 常に図形の最左上を指定するようにする
Set r = o.TopLeftCell
If tl Is Nothing Then
Set tl = r
ElseIf tl.Row > r.Row And tl.Column > r.Column Then
Set tl = r
ElseIf tl.Row > r.Row Then
Set tl = tl.Offset(r.Row - tl.Row)
ElseIf tl.Column > r.Column Then
Set tl = tl.Offset(, r.Column - tl.Column)
End If

' 常に図形の最右下を指定するようにする
Set r = o.BottomRightCell
If br Is Nothing Then
Set br = r
ElseIf br.Row < r.Row And br.Column < r.Column Then
Set br = r
ElseIf br.Row < r.Row Then
Set br = br.Offset(r.Row - br.Row)
ElseIf br.Column < r.Column Then
Set br = br.Offset(, r.Column - br.Column)
End If
Next

If Not tl Is Nothing And Not br Is Nothing Then
Set GetDrawingObjectUsedRange = ActiveSheet.Range(tl, br)
End If
End Function


返信引用
ぽこ
 ぽこ
(@ぽこ)
ゲスト
結合: 20年前
投稿: 23
Topic starter  

大変ありがとうございました!!おかげで解決できました。
質問には書きませんでしたが、最右下がObjectか値が入力されているセルになるかわか
らないのと先頭(最左上)位置はいつも、A1セルにしたかったので、「' 常に図形の最
左上を指定するようにする」の部分を省略し、For文の前に下の二行を入れました。

Set tl = Range(A1) '最左上を指定
Set br = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell) '使用範囲(除く
図形)の右下セット

これによって、最左上を常にA1、そして、最右下がObjectでなくても選択できるように
なりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました