Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13252 / 76734 ←次へ | 前へ→

【68988】Re:テキストボックスの値取得
発言  kanabun  - 11/5/5(木) 20:18 -

引用なし
パスワード
   ご存知のように、マクロの記録の修正の基本は
Select  Selection を取ることです。

-------------------------------------------------
たとえば、マクロの記録結果が以下のようであるとき、
 Range("B2").Select
 Selection.Copy
 Sheets("Sheet2").Select
 Range("B2").Select
 ActiveSheet.Paste
 Sheets("Sheet1").Select
 Application.CutCopyMode = False

修正したコードは、次のようになります。
 Range("B2").Copy Worksheets("Sheet2").Range("B2")


-------------------------------------------------
図形(TextBox)にテキストを登録する作業を記録すると、
以下のような記録コードが得られます。
 ActiveSheet.Shapes("buf").Select
 Selection.Characters.Text = "abc"

Selectすることが目的ではなく、図形にテキストを登録することが
目的なので、前のセルのコピー&ペィストと同じ方式で、
1行目の .Selectと 2行目の Selection を取って、
 ActiveSheet.Shapes("buf").Characters.Text = "abc"
と修正して、実行すると、エラーになってしまいます。

これは、
> ActiveSheet.Shapes("buf").Select
で選択したオブジェクトと、
2行目の
> Selection
の正体が、実は異なっているからです。

記録マクロのコードの
> ActiveSheet.Shapes("buf").Select
の次に、
  MsgBox TypeName(Selection)
を挿入して、確認してみてください。オブジェクトの型は Shape
ではなく、 TextBox オブジェクトに変わっています。
 Shapes のメンバを選択すると、
 選択されたものは Excelオブジェクト(Rectangleとか Ovalとか
 Picture とか ChartObject とか... TextBoxなど)になるのです。
 Excelオブジェクトというのは昔からある図形関係のオブジェクト
 のことです。 Shape のほうは あとでExcelオブジェクトとその他
 図形関係のコメントFrameとかオートフィルタの▼マークなどを
 十把ひとからげにまとめた新しいオブジェクトです。

図形のばあい、 .Select、Selectionをとって、1行で書く方法は
すでに例示しましたように、
Selection の正体であるTextBoxオブジェクトを使って、

 ActiveSheet.TextBoxes("buf").Characters.Text = "abc"

とするか、

ShapeオブジェクトとCharactersオブジェクトの間に TextFrame
オブジェクトを介在させて(このTextFrameオブジェクトが Shape
グループをExcel図形オブジェクトの一つであるTextBoxオブジェクト
に変換してくれます)、一行で書くことです。

 ActiveSheet.Shapes("buf").TextFrame.Characters.Text = "abc"

Selectされたオブジェクトが必ずしも Selection であるとは限らない
ことに注意してください
(渡辺ひかるさん『実用サンプルコレクション』 より (^^)
3 hits

【68984】テキストボックスの値取得 komarinko 11/5/5(木) 17:35 質問
【68986】Re:テキストボックスの値取得 kanabun 11/5/5(木) 17:50 発言
【68988】Re:テキストボックスの値取得 kanabun 11/5/5(木) 20:18 発言
【68989】Re:テキストボックスの値取得 kanabun 11/5/5(木) 20:28 発言
【68990】Re:テキストボックスの値取得 kanabun 11/5/5(木) 20:36 発言
【68987】Re:テキストボックスの値取得 UO3 11/5/5(木) 19:11 発言
【68995】Re:テキストボックスの値取得 komarinko 11/5/6(金) 0:48 お礼

13252 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free