Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2016)
動的配列の要素数、格納される要素の型について
投稿日時: 20/07/01 16:22:24
投稿者: かつん

Excel VBAの質問は何回かさせてもらいましたが、Accessは初めてです。皆さま、どうぞよろしくお願いいたします。
 
オデッセイのVBAエキスパート公式テキスト「Access VBA ベーシック」の書籍を使い現在勉強中なのですが、分からない箇所が出てきましたので質問させて下さい。
 

Sub Test10()
    Dim Mystring() As String
    Mystring = Split("123,456,789", ",")
    MsgBox Join(Mystring, "/")
End Sub

 
上記では、
Dim Mystring() As String
として、要素数を指定しない動的配列にて宣言がなされています。次の行にて
Mystring = Split("123,456,789", ",")
とすることで、Split関数で文字列が、3つに区切られて、動的配列に格納されます。ReDimステートメントで要素数を指定していませんが、指定しない場合、幾らでも(無限では無いと思いますが)要素を格納出来るという認識で良いのでしょうか?
 
それと、書籍内にて『コード3行目Split("123,456,789", ",")で文字列「123,456,789」が、3つの要素に分けられてバリアント型変数「MyString」に格納されます。』と記載があるのですが、MyStringは1行目にて、
Dim Mystring() As String

と、String型で宣言しています。これはどういうことでしょうか?ただの誤植でしょうか?
何方かご教授お願いいたします。

回答
投稿日時: 20/07/01 17:53:49
投稿者: sk

引用:
Dim Mystring() As String
Mystring = Split("123,456,789", ",")

引用:
ReDimステートメントで要素数を指定していませんが、
指定しない場合、幾らでも(無限では無いと思いますが)
要素を格納出来るという認識で良いのでしょうか?

概ねそういう理解でよいと思います。
(事前に ReDim ステートメントを実行したところで、
Split 関数の戻り値が渡される際に再定義されるので
あまり意味がありません)
 
引用:
ただの誤植でしょうか?

それは出版元か筆者に問い合わせるべき問題。

投稿日時: 20/07/01 18:11:12
投稿者: かつん

skさん
 
回答ありがとうございます。
Split関数の戻り値が返ってくる時に再定義されるのですね。それであれば、むしろ配列の要素数を事前に設定する必要自体あまり無いように思います。
 
誤植の件は確かにその通りですね。どうも出版関係は問い合わせても返事が無いイメージが強くて、聞く気になりませんでしたが、それは聞いてみないと分からないですよね。問い合わせてみます。返事いただきましたら、改めてご報告したいと思います。少々お待ちください。

投稿日時: 20/07/06 17:10:18
投稿者: かつん

オデッセイコミュニケーションズから返答がありました。
以下、返答内用です。
 

お問い合わせいただいた「公式テキストAccess VBAベーシック」テキストについて、
著者に確認いたしました。
ご指摘のとおり、Mystringの宣言部に誤りがございました。
ご迷惑をおかけして誠に申し訳ございません。
------------------------
誤)Dim Mystring() As String
  ↓
正)Dim MyString As Variant
------------------------

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