dポイントプレゼントキャンペーン実施中!

VBAの勉強中です。
VBAフォームのテキストボックスにシートのセルの値を代入する方法を探しています。
text1,text2,・・・text30にセル1から30までの値をfor~nextで入れることはできませんか?
ご教授ください。

A 回答 (2件)

>先生のようにすっと答えが出せるよう精進したいと思います。



誰でもそうなりたいと思いますよね。
でも、一朝一夕にそうなれるわけじゃないですけど
コツというものは存在します。
それは概念を理解することです。

といってもピンとは来ないと思いますけど
見えていないものが、何かを確かめる方法を
知る事で、今まで見えてなかったものを
沢山確かめると概念が理解できるようになります。

例えば、エクセルの中にブックがあって
そのブックの中にシートがあって、
そのシートの中にセルがあるっていうことは判りますよね?

これをコードにすると
Application.Workbook.WorkSheet.Range
こんな感じでドットを挟んで、左が親、右が子という
オブジェクトが繋がった関係性になっています。

そして、確認する方法をこれは練習してもらうしか
ないので、実際に試して欲しいのですが
ステップ実行をしながらコードを追うのです。

例えばNo1で示されたコードで言うと
1行だけステップ実行で進めて
イミディエイトウィンドウに
? Me.Name
これはMeっていうのが何を指すのかを名前から知ることが
できます。
? Me.Controls.Count
これはControlsというコレクションが
何個あるのかを知る事が出来ます。
? Me.Controls(1).Name
そのコレクションの1番めはなんという
名前かを知る事ができます。
? typename(ws.Cells(1,1))
これはカッコ内のオブジェクトの型を
知ることが出来ます。

この様に、今まで見えていなかったものを
どんどん貴方の前に明らかにする方法があって
それを繰り返すことで貴方の中にオブジェクトが
どういう構成で出来ているかの立体的イメージが
出来てきます。

それを私は概念と呼びました。

ですから、貴方が今表面に見えていないものを
自分で見つける方法を理解して、何度も確認すれば
きっとその境地にたどり着けるものと確信しています。
    • good
    • 0

Private Sub UserForm_Initialize()


Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("シート名") ' シート名を適切な名前に置き換える
Dim i As Integer

For i = 1 To 30 ' セル1から30までの値を取得する
Me.Controls("text" & i).Text = ws.Cells(i, 1).Value
Next i
End Sub
    • good
    • 0
この回答へのお礼

素早いご教授ありがとうございます。
確認しました。
やっていることはよく理解できないのですが、やりたいことはお陰様で満足できるものとなりました。
先生のようにすっと答えが出せるよう精進したいと思います。
ありがとうございました。

お礼日時:2024/04/09 14:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A