Excel VBA質問箱 IV

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

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


13083 / 13644 ツリー ←次へ | 前へ→

【7094】TextBoxについて教えてください VBA超初心者 03/8/22(金) 14:37 質問
【7097】Re:TextBoxについて教えてください つん 03/8/22(金) 16:07 回答
【7103】Re:TextBoxについて教えてください VBA超初心者 03/8/22(金) 16:59 質問
【7104】Re:TextBoxについて教えてください INA 03/8/22(金) 17:13 回答
【7105】クラスとか つん 03/8/22(金) 17:25 回答
【7107】Re:クラスとか Jaka 03/8/22(金) 17:29 回答
【7108】Re:クラスとか VBA超初心者 03/8/22(金) 17:48 お礼

【7094】TextBoxについて教えてください
質問  VBA超初心者  - 03/8/22(金) 14:37 -

引用なし
パスワード
   テキストボックスの値を配列に入れたいのですが,うまくいきません。
ボックスの名前をBox1〜Box10 として以下のようなマクロを書いてみましたけど
うまくいきません。
何か根本的な間違いをしているとおもうのですが良くわかりません。

Dim MyTextBox(1 To 10) As Object
Dim ISNG(1 to 10) As Single : Dim ICNT As Integer
ThisWorkbook.Sheets(MySheet).Activate
With ActiveSheet
For ICNT = 1 To 10
  Set MyTextBox(1) = Controls("Box" & ICNT)
  ISNG(ICNT) = MyTextBox(ICNT).Text
Next ICNT
End With

【7097】Re:TextBoxについて教えてください
回答  つん E-MAIL  - 03/8/22(金) 16:07 -

引用なし
パスワード
   VBA超初心者 さん、こんにちは

>テキストボックスの値を配列に入れたいのですが,うまくいきません。
>ボックスの名前をBox1〜Box10 として以下のようなマクロを書いてみましたけど
>うまくいきません。
>何か根本的な間違いをしているとおもうのですが良くわかりません。
>
>Dim MyTextBox(1 To 10) As Object
>Dim ISNG(1 to 10) As Single : Dim ICNT As Integer
>ThisWorkbook.Sheets(MySheet).Activate
>With ActiveSheet
>For ICNT = 1 To 10
>  Set MyTextBox(1) = Controls("Box" & ICNT)
>  ISNG(ICNT) = MyTextBox(ICNT).Text
>Next ICNT
>End With

Set MyTextBox(1) = Controls("Box" & ICNT)
ここなんですが、MyTextBox(1) じゃなくて、
MyTextBox(ICNT)なんじゃないですか?

ところで、なんで 
With ActiveSheet
 ・・・
End With

としてるのでしょう?
中で、シートを参照してない・・・・よね????

【7103】Re:TextBoxについて教えてください
質問  VBA超初心者  - 03/8/22(金) 16:59 -

引用なし
パスワード
   ▼つん さん:
>VBA超初心者 さん、こんにちは
>
>>テキストボックスの値を配列に入れたいのですが,うまくいきません。
>>ボックスの名前をBox1〜Box10 として以下のようなマクロを書いてみましたけど
>>うまくいきません。
>>何か根本的な間違いをしているとおもうのですが良くわかりません。
>>
>>Dim MyTextBox(1 To 10) As Object
>>Dim ISNG(1 to 10) As Single : Dim ICNT As Integer
>>ThisWorkbook.Sheets(MySheet).Activate
>>With ActiveSheet
>>For ICNT = 1 To 10
>>  Set MyTextBox(1) = Controls("Box" & ICNT)
>>  ISNG(ICNT) = MyTextBox(ICNT).Text
>>Next ICNT
>>End With
>
>Set MyTextBox(1) = Controls("Box" & ICNT)
>ここなんですが、MyTextBox(1) じゃなくて、
>MyTextBox(ICNT)なんじゃないですか?
>
>ところで、なんで 
>With ActiveSheet
> ・・・
>End With
>
>としてるのでしょう?
>中で、シートを参照してない・・・・よね????
すいません単純な間違いをいていまいた。
ところで,テキストボックスの配列かはできるのですか。
お手数ですが教えてください。

【7104】Re:TextBoxについて教えてください
回答  INA  - 03/8/22(金) 17:13 -

引用なし
パスワード
   >ところで,テキストボックスの配列かはできるのですか。

VBと違って、VBAではコントロール配列は使用できません。
そのため、「コントロール配列もどき」として
変数を使ってループ等で処理するしかないと思います。

【7105】クラスとか
回答  つん E-MAIL  - 03/8/22(金) 17:25 -

引用なし
パスワード
   >VBと違って、VBAではコントロール配列は使用できません。
>そのため、「コントロール配列もどき」として
>変数を使ってループ等で処理するしかないと思います。

あとは、クラスかなあ?
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=4844;id=excel

【7107】Re:クラスとか
回答  Jaka  - 03/8/22(金) 17:29 -

引用なし
パスワード
   こんにちは。
違った?

Dim MyTextBox(1 To 10) As Object
Dim ISNG(1 To 10) As Single, ICNT As Integer
ThisWorkbook.Sheets(MySheet).Activate

For ICNT = 1 To 10
  With Worksheets(MySheet).OLEObjects("Box" & ICNT).Object
    MISNG(ICNT) = .Value
  End With
Next ICNT

【7108】Re:クラスとか
お礼  VBA超初心者  - 03/8/22(金) 17:48 -

引用なし
パスワード
   ▼Jaka さん:
無事,うまくいきました。
いろいろ教えてくださってありがとうございます。

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