• ベストアンサー

シート上のコントロール(TextBoxのみ)のカウント

お世話になります。 現在Excel2003 VBAでファイル生成プログラムを書いております。 処理の一部で、シート上に配置されたコントロール(TextBoxのみ)の総数を取得したいのですが、どのようにすればよろしいでしょうか。 テキストのみに限らない場合は、 OLEObjects.Countで取得できます。 For i = 1 To Sheet1.OLEObjects.Count 省略 Next i 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

http://msdn.microsoft.com/en-us/library/bb237228.aspx コレ見る限り、多分 Sub hoge() Dim i As Integer For i = 1 To ActiveSheet.OLEObjects.Count If ActiveSheet.OLEObjects(i).progID = "Forms.TextBox.1" Then MsgBox ("テキストボックス見つかったよ") End If Next i End Sub という感じでprogIDプロパティを見るんだろうけど, Forms.TextBox.1だけなのかは自信がない 僕は持ってないけどひょっとしたら他の人は Forms.TextBox.2とかForms.TextBoxとかいうのが登録されているかもしれない。

xYAMATOx
質問者

補足

himajin100000様 回答ありがとうございます。 progIDというのがあるんですね、初めて知りました…。 勉強させていただきます!

その他の回答 (1)

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.2

シート上のコントロールのProgIdをワイルド検索し、 Forms.TextBoxを含むコントロールをテキストボックスと 判断し、カウントアップする。 Dim obj As Object Dim txtCnt As Integer txtCnt = 0 For Each obj In ActiveSheet.DrawingObjects If obj.ProgId Like "Forms.TextBox*" Then txtCnt = txtCnt + 1 End If Next

xYAMATOx
質問者

補足

Hardking様 回答ありがとうございます。 himajin100000への回答にも書きましたが、 progIDというのがあるのを初めてしりました。 無事に値を取得できました。 ありがとうございました!

関連するQ&A