|
▼あくたいおん さん:
こんばんは。
>でも、
>なぜこんな動きになっているのかわからない部分があります。
>教えていただけるとうれしいのですが...。
>
>> On Error Resume Next
>> Do While Selection.Name = .Name
>> If Err.Number <> 0 Then Exit Do
>> DoEvents
>> 'Sleep 100
>>' これのコメントもはずして試してみてください
>> Loop
>> On Error GoTo 0
>> .TextFrame.AutoSize = True
>> DoEvents
>
>DoEventsでキーボード入力させ、その後閉じてから位置修正していることはよくわかりました。アイデアですね(^_^)
Doeventsで入力させ というより、これで監視しています。
>
>
>・不思議なのは、Alternativetextに書き込んだ文字が入っていること。
>(どこにもAlternativetextの文字が無いのに!)
これは、仕様みたいですよ!!手動でふき出しを作成し、文字を入力しても
Alternativetextには、文字が入っています。
気になるなら 最後に
.AlternativeText = ""
なんて入れとけば良いです。
> もうメモる必要が無いのですか?
私の投稿したコードでは要りません!!
>・上記のDoEventsの際に.Nameが使われていること。
> なぜ.Nameなのでしょう? .Nameは、AutoShape(33)とかのはずで、これは文字をかいてるうちには変化しないはず。
ん?疑問に思っていることがよくわかりませんが・・・。
オートシェイプの名前はふき出しを作成するたびにユニークな名前が付けられます。
固定の名前などコードに記述するわけにはいきません。
いや、仮に固定の名前だとしても"kotei1"なんて、
書くべきではありません。
固定名が仕様で変わったら、コードを変更しなければなりませんので・・・。
コードの意味はおわかりですか?
作成したオートシェイプをSendkeysを記述している上のほうで
.Select しています。
作成したオートシェイプの名前(.Name)と
選択されているオブジェクト(Selection)の名前(Selection.Name)が
同じ間は待機しているというコードです。
例えば、文字入力が終了し、適当なセルを選択すれば、
Selectionは、選択したセルを取得します。
すると、オートシェイプの名前と選択したオブジェクト(Selection)の名前が違うので
ループ処理から抜ける という仕組みです
(実際には、セル(Range)にNameというプロパティがないので
エラートラップによってループを抜けていますが・・・)。
|
|