
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No2です。
>オートシェイプの位置固定の参考URLなどご存じでしたら教えてください。
検索すればよいだけの話。
http://www4.synapse.ne.jp/yone/excel2013/excel20 …
https://supvalue.net/archives/3153
No.2
- 回答日時:
No1です。
何をなさりたいのかさっぱりわかりませんけれど・・
>オートシェイプが連続する場合などは罫線のセルのように
>オートシェイプのアドレス範囲が重複してしまいます。
オートシェイプがセルにまたがっていれば、セル範囲は複数セルになりますし、シェイプが重なっていれば当然範囲も重複します。
そもそもですが、ユーザが自由に操作できる環境であれば、(誤操作も含めて)シェイプは自由に位置を変えられます。
また、セルの幅や高さの変更でも、そのサイズが変わることがあります。
(変わらない設定もありますが)
位置が変わっては困るのであれば、初めから位置固定にして、セルサイズの変更もできないようにロックをかけておけば済むのではないでしょうか?
>オートシェイプの位置とセル位置を使って情報の分析をしています
位置がわかりさえすれば良いのなら、生成する際にシェイプの名称をセルアドレスにしておくなども考えられます。
こちらであれば、どこに移動されても最初に設定した(はずの)位置は、名称を見ればわかりますので。
ただし、同じ位置に複数のシェイプを設定できるようなシステムであれば、連番を振るなどの工夫が必要になるかも知れません。
No.1
- 回答日時:
こんばんは
どのような「調整」をなさりたいのか不明ですが、ロジカルに説明できる内容であれば可能と思われます。
例えば、当該ShapeのTopLeftCellプロパティで、左上に該当するセル位置を取得できますので、それを基準に調整するとかでしょうか?
https://learn.microsoft.com/ja-jp/office/vba/api …
普通に、Left、Topプロパティで、シートに対する位置を取得することもできますし、Width、HeightでShapeのサイズ(=外包矩形)も取得できます。
>(VBA作成者と操作者が異なる為)
通常は、「作成者しか使えないコード」は作成者が個人的に使う為にしか利用しません。
汎用的に利用するのなら、そちらのコードを修正すべきかと想像します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 【Excel:条件付き書式 データバー】 正負の軸の位置を変更する方法を教えてください 3 2023/01/08 19:41
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
- Visual Basic(VBA) VBAについて教えてください。 Excelで セルのB6~BG24でダブルクリックすると ダブルクリ 1 2022/06/02 17:07
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
エクセルで指定したセルのどれ...
-
(Excel)数字記入セルの数値の後...
-
セルをクリック⇒そのセルに入力...
-
エクセル オートフィルタで絞...
-
対象セル内(複数)が埋まった...
-
excelの特定のセルの隣のセル指...
-
EXCEL VBA セルに既に入...
-
数式を残したまま、別のセルに...
-
Excelでのコメント表示位置
-
エクセル セルの中に縦線が入っ...
-
【エクセル】IF関数 Aまたは...
-
EXCELで右詰の数値でセルを(左...
-
EXCELのセルの中の半角カンマの...
-
Excelについての質問です 並べ...
-
Excelで、「特定のセル」に入力...
-
エクセルの一つのセルに複数の...
-
Excelで数式内の文字色を一部だ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報
オートシェイプの数がすごい量なので自動調整ができると、とても助かります。何卒よろしくお願いします。
Sub テスト()
Dim i As Long
For i = 1 To Worksheets("テスト").Shapes.Count
Worksheets("テスト").Cells(i, 1).Value = Worksheets("テスト").Shapes(i).TopLeftCell.Address
Worksheets("テスト").Cells(i, 2).Value = Worksheets("テスト").Shapes(i).BottomRightCell.Address
Next i
End Sub
Sub テスト2()
Dim i As String
Dim j As String
Dim pos As Range
Dim row As Long
For row = 1 To 2
i = Worksheets("テスト").Cells(row, 1).Value
j = Worksheets("テスト").Cells(row, 2).Value
Set pos = Application.Intersect(ActiveCell, Range(i & ":" & j))
If pos Is Nothing Then
MsgBox i & ":" & j & "範囲外です"
Else
MsgBox i & ":" & j & "範囲内です"
End If
Next row
End Sub
オートシェイプが連続する場合などは罫線のセルのようにオートシェイプのアドレス範囲が重複してしまいます。(オートシェイプの位置とセル位置を使って情報の分析をしています)オートシェイプの正しい位置が特定できません。発想変えて元のセルにオートシェイプを戻せないのかと考えました。
>位置が変わっては困るのであれば、初めから位置固定にして、セルサイズの変更もできないようにロックをかけておけば済むのではないでしょうか?
オートシェイプの位置固定の参考URLなどご存じでしたら教えてください。
使っているオートシェイプは沢山の指定したセルをダブルクリックするとオートシェイプがセル内に入ります。イベントプロシージャを使っています。
つたいない説明で恐れ入りますがよろしくお願いします。