質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

0回答

419閲覧

Group内のパーツを移動

ABII

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/17 06:20

Group化された中のパーツを移動するとGroup全体が伸縮するする問題の回避方法をご教授下さい。
Excel sheet上にRectangleを配置、その中にTextBoxを置きます。
両者をグループ化します。
イメージ説明
内部のテキストボックスには"insideTbx"と名前を付けます。
この状態で下記のマクロを動かすと表示倍率が100の倍数の時は、TextBoxが右に100Pt、左に
100Pt移動して戻ってきます。 
しかし100%の倍数以外では外側のRectangleが伸縮してしまいます。
何故このような事になるの分かりません。
グループ化を解かずに任意の倍率で内部のパーツだけを動かす方法はありませんでしょうか?
win10 excel2016 win8.1 excel2013で同じ現象を確認しています。
又内部のTextBoxはLineでもFreeFormでも同じ現象が生じます。

Excel

1Sub move() 2 Dim shp As Shape 3 Set shp = ActiveSheet.Shapes("insideTbx") 4 Dim i As Integer 5 For i = 0 To 200 6 shp.Left = shp.Left + 0.5 7 DoEvents 8 Next i 9 For i = 0 To 200 10 shp.Left = shp.Left - 0.5 11 DoEvents 12 Next i 13End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bebebe_

2021/12/17 07:43

「shp.Left = shp.Left」や「shp.IncrementLeft 0」でも同じ挙動になるので根本的な解決は難しそうな気がします。 解決方法が見つからない場合代替案として マクロ開始時に現在の倍率を取得して倍率100%で動作後に取得した倍率に戻す もしくは マクロ開始時に指定したグループのすべての名前を取得後グループを解除して動作後に取得した名前をグループ化するなどが考えられます。
ABII

2021/12/17 10:57

早速のコメント有難うございます。 操作中常に倍率を100%の整数倍に強制するようにして逃げるしかないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問