Excel VBA質問箱 IV

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

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


4083 / 13646 ツリー ←次へ | 前へ→

【58522】TextBoxの変数の使い方 まつ 08/10/28(火) 21:56 質問[未読]
【58523】Re:TextBoxの変数の使い方 neptune 08/10/28(火) 22:22 回答[未読]
【58529】Re:TextBoxの変数の使い方 まつ 08/10/29(水) 0:10 お礼[未読]
【58527】Re:TextBoxの変数の使い方 ichinose 08/10/28(火) 23:35 発言[未読]
【58530】Re:TextBoxの変数の使い方 まつ 08/10/29(水) 0:32 お礼[未読]

【58522】TextBoxの変数の使い方
質問  まつ  - 08/10/28(火) 21:56 -

引用なし
パスワード
   すいません、教えてください。

下のような記述をして動かしているのですが、

  .Cells(EndRow, TB111.Col) = UserForm1.TB111.Text
  .Cells(EndRow, TB112.Col) = UserForm1.TB112.Text
  .Cells(EndRow, TB113.Col) = UserForm1.TB113.Text
  .Cells(EndRow, TB121.Col) = UserForm1.TB121.Text
  .Cells(EndRow, TB122.Col) = UserForm1.TB122.Text
  .Cells(EndRow, TB123.Col) = UserForm1.TB123.Text
  .Cells(EndRow, TB131.Col) = UserForm1.TB131.Text
  .Cells(EndRow, TB132.Col) = UserForm1.TB132.Text
  .Cells(EndRow, TB133.Col) = UserForm1.TB133.Text

これですとTextBoxが増えていくにつれて大変になると思い、
下の記述のような変数を使ってやろうと試みたのですが

For i = 1 To 3
For j = 1 To 3
   .Cells(EndRow, TB1ij.Col) = UserForm1.Controls("TB1" & i & j).Text
Next j
Next i

動かすとオブジェクトが必要ですとエラーがでて動きません。

どのようにしたらよいでしょうか?
わかるかたいらっしゃいましたら、お願いします。

【58523】Re:TextBoxの変数の使い方
回答  neptune  - 08/10/28(火) 22:22 -

引用なし
パスワード
   ▼まつ さん:
こんにちは
変数に入れておいて、使いまわす。

以下はcollectionに入れる例

Private mcol As Collection

Sub t()
  mcol = New Collection
  
  mcol.Add UserForm1.TB111
  '以下全部コレクションする
End Sub

Sub 他のプロシージャ()
   '面倒なので1個だけ書いときます。
   Sheets("Sheet1").Cells(EndRow, TB111.Col) = mcol(0).Text
End Sub


>わかるかたいらっしゃいましたら、お願いします。
これ止めた方が多分Resが付きやすいですよ。なんかイラッと来ます。
そもそもわからんかったらRes付けんと思いますよ。

【58527】Re:TextBoxの変数の使い方
発言  ichinose  - 08/10/28(火) 23:35 -

引用なし
パスワード
   こんばんは。

>すいません、教えてください。
>
>下のような記述をして動かしているのですが、
>
>  .Cells(EndRow, TB111.Col) = UserForm1.TB111.Text
>  .Cells(EndRow, TB112.Col) = UserForm1.TB112.Text
>  .Cells(EndRow, TB113.Col) = UserForm1.TB113.Text
>  .Cells(EndRow, TB121.Col) = UserForm1.TB121.Text
>  .Cells(EndRow, TB122.Col) = UserForm1.TB122.Text
>  .Cells(EndRow, TB123.Col) = UserForm1.TB123.Text
>  .Cells(EndRow, TB131.Col) = UserForm1.TB131.Text
>  .Cells(EndRow, TB132.Col) = UserForm1.TB132.Text
>  .Cells(EndRow, TB133.Col) = UserForm1.TB133.Text
>
>これですとTextBoxが増えていくにつれて大変になると思い、
>下の記述のような変数を使ってやろうと試みたのですが
>
>For i = 1 To 3
>For j = 1 To 3
>   .Cells(EndRow, TB1ij.Col) = UserForm1.Controls("TB1" & i & j).Text
'           ↑エラーの原因は、 TB1ij.Col じゃないですか?
>Next j
>Next i
>
>動かすとオブジェクトが必要ですとエラーがでて動きません。

まず、TB111.ColとかTB112.Colの説明をしてください。

【58529】Re:TextBoxの変数の使い方
お礼  まつ  - 08/10/29(水) 0:10 -

引用なし
パスワード
   ▼neptune さん:
collectionを使ってやってみたいと思います。
ありがとうございました。

【58530】Re:TextBoxの変数の使い方
お礼  まつ  - 08/10/29(水) 0:32 -

引用なし
パスワード
   ▼ichinose さん:

ご指摘ありがとうございます。

>>For i = 1 To 3
>>For j = 1 To 3
>>   .Cells(EndRow, TB1ij.Col) = UserForm1.Controls("TB1" & i & j).Text
>'           ↑エラーの原因は、 TB1ij.Col じゃないですか?
>>Next j
>>Next i

ご指摘の場所がエラーの原因でした。


TB111.ColとかTB112.Colには列番号が入ります。
TB111.Col = 54
TB112.Col = 55

ありがとうございました。

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