数値の入力されたセルとその隣にあるセルの文字列を結合して、その結果を(数値と同じ名前を持った)図形にテキストとして貼りるという動作を下に向かって繰り返しています。
下記のようにするとdは前回の値を持ったままになるようで、Loopさせるとテキストの結合がどんどん増えて行ってしまいます。
.Characters.Text = dの後で、結合された値をリセットする方法は無いでしょうか。
また、図形のサイズをテキストの長さに合わせる為にAutoSizeとしていますが、以下の方法では図形は中心を基準として大きさが変わってしまいます。
マクロの記録で確認するとmsoScaleFromTopLeftで有ろう事は分かったのですが、この構文での使い方が判りません。
欲張った質問ではありますが宜しくお願い致します。
Do While minno <= maxno
Range(ActiveCell, ActiveCell.Offset(0, 1)).Select
For Each c In Selection
d = d & c
A = ActiveCell.Formula
ActiveSheet.Shapes(A).TextFrame.AutoSize = True
With ActiveSheet.Shapes(A).TextFrame
.Characters.Text = d
End With
Next
ActiveCell.Offset(1).Select
minno = minno + 1
Loop
プログラムを見るとFor~Eachを使う必用もありませんし、Nextの位置が間違っているのでループ内で同じ図形に2回書き込みをして、2度目の結果がシェイプに残る事になってしまっています。
Cells() の位置してはシートに合わせてください。
Do While minno <= maxno
d = ""
A = Cells(minno, 1)
d = A & Cells(minno, 2)
With ActiveSheet.Shapes(A).TextFrame
.AutoSize = True
.Characters.Text = d
End With
minno = minno + 1
Loop
お礼
WEBで見つけたセルへの書き込みプログラムの内容(For Each)を良く判らずに改造した事が原因です。 大変勉強になりました。ありがとうございます。