Stringに数字をかけることでスペースを作る方法とは?

このQ&Aのポイント
  • String型変数に数字を掛けることで、スペースを作ることができます。
  • VBAのString型変数を指定の長さにするために、掛けられるようになっています。
  • 文字列にスペースを付けたい場合は、スペース文字に掛けることで実現できます。
回答を見る
  • ベストアンサー

Stringに数字をかける事によってスペースを作る

Stringに数字をかける事によってスペースを作るのですか? vbaなのですが Dim tmp As String * 10 このような宣言の仕方をたまに見かけますが 使い道がわかりません。 Sub test01() Dim tmp As String * 100 tmp = "aaaaaaaaaa" MsgBox tmp End Sub このようなコードを書いたら、スペース代わりになったのですが 文字列にスペースを付けたい時に使うのでしょうか? だったら Sub test01() Dim tmp As String tmp = "aaaaaaaaaa" MsgBox tmp & " " End Sub でもいいような気がしますが、 もし、スペースを付ける以外に意味があるなら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • t-aka
  • ベストアンサー率36% (114/314)
回答No.1

VBだけで考える場合には、なかなかピンとこないと思います。 Dim variableString as String *10 とすると、variableStringに10文字分のNULL文字(アスキーコード0x00)が確保されます。 用途として、あらかじめ文字分、確保しておきたい場合に使用します。 似た方法、よく使う方法としてString関数を使用することもあります。 variableString = String(10, vbNullChar) 意味は上のDim~と同じです。 当方がよく使用する方法は、以下のような処理でテキスト形式のファイルを読み込むときです。 大量のテキストが格納されているファイルを読み込むとき、この方法を使用すると より速く読みだすことができます。 Dim fn As Integer fn = FreeFile() Dim testFile As String testFile = "C:\TEST.txt" Open testFile For Binary As #fn Dim sizeOfFile As Long sizeOfFile = LOF(fn) Dim stringBuffer As String stringBuffer = String(sizeOfFile, vbNullChar) Get #fn, , stringBuffer Close #fn Dim lineOfFile() As String lineOfFile() = Split(stringBuffer, vbCrLf)

NTKYYKASUK6
質問者

お礼

ありがとうございます。

関連するQ&A

  • 変数の宣言(s As String)で良い理由

    vbaについてしつもんです。 標準モジュールで Option Explicit Dim s As String Sub test1() Call test2("qqq") End Sub Sub test2(s As String) MsgBox s End Sub としたのですが、もしかしてDim s As Stringって必要ないのでしょうか? あってもなくても動きます。 (s As String)があるからDim s As Stringは不要なのですか? だとしたら、(s As String)に dim や publicをつけなくて良い理由を教えてください。

  • vbaで配列に値を格納する場合

    vbaで配列に値を格納する場合 変数の宣言はどちらを使った方が良いのでしょうか? Sub Sample1() Dim i As Long Dim myStr As String Dim tmp() As String myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub か Sub Sample1() Dim i As Long Dim myStr As String Dim tmp As Variant myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub でも問題なく動くのですが、 Variant型での宣言はあまりしない方が良いですか? あと Dim tmp() As String ならエラーにならないのですが Dim tmp As String だとエラーになってしまう理由がよくわからないので教えて頂けますか?

  • 参照渡しをする時は、渡される側は違う変数を使う?

    参照渡しをする時は、渡される側は違う変数を使うべきなのでしょうか? VBAのお勉強をしているのですが Sub test1() Dim mystr As String mystr = "a" Call test2(mystr) Call test3(mystr) End Sub Sub test2(ByRef mystr As String) MsgBox mystr End Sub Sub test3(ByRef mystr2 As String) MsgBox mystr2 End Sub この場合、test2とtest3ではどちらを使ったほうがいいのでしょうか? test3は、mystr2 というmystrとは違う変数を使っていますが、 test2は、test1のmystrと同じ変数を使っています。 test1と同じ変数を使おうが違う変数を使おうが どちらにしろ (ByRef 変数名 As String) で宣言するから、変わらないのでしょうか?

  • これも「デバッグをしている」と言う事になりますか?

    VBAです。 プログラミングの知識が浅いので教えてほしいのですが ------------------- Sub test() Dim a As String a = "abc" MsgBox a End Sub ------------------- のコードをF8を押しながら実行する事を 「デバッグをしている」と言う事になりますか? それとも「ステップインをしている」と言う事になるのでしょうか?

  • Const に dim は使えない?

    標準モジュールに ''''''''''''''''''''''''''''''''''''''''''' Dim Const moji As String = "a" Sub test1() MsgBox moji End Sub Sub test2() Dim Const moji As String = "a" MsgBox moji End Sub ''''''''''''''''''''''''''''''''''''''''''' とするとエラーになりますが ''''''''''''''''''''''''''''''''''''''''''' Public Const moji As String = "a" Sub test3() MsgBox moji End Sub ''''''''''''''''''''''''''''''''''''''''''' なら大丈夫です。 Const に対してdimは使えないのでしょうか?

  • InputBox  String型・Variant

    VBAです。 InputBox  String型・Variant型がエラーにならない理由がわかりません。 Sub 日付型() Dim 日 As Date 日 = InputBox("値をいれてください") End Sub Sub 数値型() Dim i As Long i = InputBox("値をいれてください") End Sub Sub 通貨型() Dim 円 As Currency 円 = InputBox("値をいれてください") End Sub Sub String型() Dim a As String a = InputBox("値をいれてください") End Sub Sub Variant型() Dim v As Variant v = InputBox("値をいれてください") End Sub String型・Variant型以外は、 「実行時エラー '13'; 型が一致しません。」になります。 String型・Variant型はならない理由を教えてください。ご回答よろしくお願いします。

  • VBAでワイルドカードを使った文字列検索

    初めて投稿いたします。 環境は、WinXP Access2000 下記のVBAモジュールで、文字列検索がヒットしません。 数字の比較でヒットするのはナゼでしょうか? ちなみに、変数に導入したのは、全角半角どちらも入れてみました。 この疑問・・・どなたか解決お願いします。 Sub TEST() Dim AAA As String Dim BBB As String Dim YYY As String AAA = "0" BBB = "2" YYY = AAA & BBB Select Case YYY Case "0*" MsgBox "ココを通り過ぎないで!" Case "15" MsgBox "やったね" Case Is > 0 MsgBox "なぜかココでヒットします??" End Select End Sub

  • vbaの 変数の宣言 記号は使えない?

    vbaの 変数の宣言 記号は使えない? Sub test1() dim st @ End Sub みたいに変数の型を As String ではなく記号で表現ってできないんでしたっけ? エラーになってしまいます。

  • 違いを教えてください。

    VBAについて質問です。 ///////////////////// Sub sample1(a As String) a = "abc" MsgBox a End Sub --------------------- Sub sample2() Dim a As String a = "abc" MsgBox a End Sub ///////////////////// sample1とsample2の違いは何でしょうか? どちらも標準モジュールに記載しました。 sample2はF5で実行できますが、sample1はF5を押しても何も起きません。 それだけの違いでしょうか? Sample1の使い道がわかりません。 ///////////////////// Option Explicit Sub sample2() Call sample1 End Sub --------------------- Sub sample1(a As String) a = "abc" MsgBox a End Sub ///////////////////// にしたら、 「引数は省略できません。(Error 449)」というコンパイルエラーになりました。

  • グローバル変数などについて

    Option Explicit Dim str1 As String '・・・(1) Sub テスト() Dim str2 As String '・・・(2) str1 = "テスト1" str2 = "テスト2" MsgBox str1 MsgBox str2 End Sub (1)はグローバル変数と言うとの事ですが (2)は何変数と言うのでしょうか? ローカル変数ですか? また、(1)がdimではなく、 Public str1 As String となった場合でも、 プロシージャーの外にあれば、グローバル変数と言うのでしょうか?

専門家に質問してみよう