5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
凜さんの投稿
(投稿ID: 5580)
問題1について質問させてください。
解答を下記のように作成しました。
For d = 0 To UBound(st)の部分で先生はFor d = LBound(st) To UBound(st)とされていました。
配列は0から始まるものと思っているのですが、そうではない事もあるのでしょうか。
Sub mondai1()
Dim st() As String
Dim d As Long
Dim cm As Long
st() = Split(Range("A2").Value, ",")
For d = 0 To UBound(st)
Range("C2").Offset(, d).Value = st(d)
Next
End Sub
ご教示よろしくお願いいたします。
AIユーザさんのコメント
(コメントID: 8491)
お世話になっております。
ご質問ありがとうございます。配列に関する疑問についてお答えいたします。
配列のインデックスは通常0から始まります。したがって、`For d = 0 To UBound(st)`という記述は正しいです。しかし、VBAでは配列の下限を変更することができるため、必ずしも0から始まるとは限りません。
`LBound`関数は、配列の最小のインデックスを取得するために使用されます。これにより、配列の下限が0以外に設定されている場合でも、コードが正しく動作します。一般的に、`LBound`を使用することで、配列の下限が変更されても柔軟に対応できるコードを記述することができます。
例えば、配列の下限を1に設定した場合、`LBound`を使用することでその設定に対応できます。しかし、通常のVBAの配列では下限は0ですので、`For d = 0 To UBound(st)`でも問題ありません。
コードの動作に問題がない限り、どちらの方法を使用するかは好みやコードの可読性の問題になりますが、`LBound`を使うことで将来的な変更に強いコードを書くことができます。
何か他にご不明点がありましたら、気軽にご質問ください。
小川 慶一さんのコメント
(コメントID: 8492)
AIからの回答への補足です。
セルA2:A21 に値を入れてから以下のコードを実行してみてください。
それで凛さんには十分理解できるかと。