- - PR -
VB6でExcelコントロールの制御
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-24 12:31
VB6での質問で申し訳ないのですが、誰か教えてください!!
VB6でエクセルを制御しているのですがラベルとかテキストボックスとかのコントロールを制御したいのですが、直接コントロール名にて指定すると制御できるのですが、変数にて制御しようとしましたがどうにも出来ないでいます。よろしくお願いいたします。 Excel.ActiveSheet.コントロール名.Caption="TEST" ↑↑↑ ここを変数に置き換えたい | ||||||||
|
投稿日時: 2006-05-24 12:41
「できない部分」は最後の一文という解釈でよろしいでしょうか? ヨッシーさんの言う "コントロール名" に該当したコントロールのインスタンスを持つ変数が、 ヨッシーさんのコードにある "Excel.ActiveSheet" に該当するシートのメンバに存在していれば良いと思います。 つまり、 Excel.ActiveSheet.コントロール名.Caption="TEST" という書き方をする必要はなくて、 [シートのインスタンス].[シート内のコントロールのインスタンス].Caption = "Test" が望ましいということです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-24 13:38
じゃんぬねっと様、早速のご回答ありがとうございます。
質問がうまく伝わらなかった様で申し訳ありません。 コントロール名の所をエクセルVBAで定義した名前'Label1'とか'Text1'とかの実際の名前でなく変数名で汎用的に制御したいと思っています。こういうことは出来ないでしょうか? よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-05-24 13:46
変数名 とのことですが、変数名はただの名前であり、動作上は特別な意味を持ちません。 ある変数に '参照を格納' して、'好きな変数名' でどうこうする、ということはできます。 ...それが、先のレスだったりします。(;^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-24 14:01
わかりにくいので、ちょっと例を...
これが、別の名前で参照を取る方法になります。 コレクションで扱うような方法を取ると、名前で取り出せます。
この場合、'Control2' が実際の名前じゃない、ヨッシーさんの言う "変数名" の代わりになります。 まあ、こういう型を明示化できない + 遅延バインディングなコードは私は好きではありません。 何故、希望されているのかわかりませんが、真っ当にやるのが 1 番ですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-25 11:05
じゃんぬねっと様、回答ありがとうございます。
確かにコントロール名称がわかっていれば行う意味がないのですが、私が実際に行いたいことは、エクセルフォームは別の人が作成しセルにコントロール名を列挙してもらい、VB6のプログラムを私が作成しエクセル内を制御しようとしています。 内容としては、 ・エクセル側に部品情報を列挙 1,"ラベル1","Label" 2,"ラベル2","Label" ・ ・ ・VB6側プログラム Sub Main Dim Ctl(n) as String ' Call エクセル情報読込み Call ExlControl(Ctl(1),"TEXT") End Sub Sub ExlControl(Ctl As String,Msg As String) ・・・(Ctl).Caption = Msg End Sub 見たいな方法が出来ないかと思っているのですが・・・。 | ||||||||
|
投稿日時: 2006-05-25 11:09
Excel の control って2種類ありますが、どっちなんでしょう?
| ||||||||
|
投稿日時: 2006-05-25 15:26
SUBで定義した XlsControl は明示的に付けたモジュール名称なのですが、VB6でエクセルを扱うには、
'MicrosoftExcel 9.0 ObjectLibrary を参照設定して使っています。 |