• ベストアンサー

エクセルのマクロ(VBA)の変数でスペースを認識しません

お世話になります。エクセルのマクロ(VBA)を組んでいてどうしても解せないことがあります。 Data1 = "9" Data2 = "               "(←スペースはとりあえず半角30文字とでもしておきます。) Data = Data1 & Data2 Range("a1").Value = Data 上記の命令を実行すると、9のあとに半角スペースが30文字分ある文字データが入力されると思うのですが、実際には9の数字データだけが入力されてしまいます。つまりスペースだけのData2という変数は無視されているみたいです。 一方、2行目を例えば Data2 = "               x" と、スペースのあとに一文字入れるとA1カラムには "9               x" と表示されます。 これはどういった現象なのでしょうか?また、スペースだけの文字列を変数として認識させるのはどうすれば良いのでしょうか? よろしくお願いします。 ※この質問を書いていて変に思いました。質問の文中にあるダブルクォーテーションの中のスペースは半角で入力すると全て無視されて""となってしまいます。全角で15文字分のスペースを入れたら入りました。この辺も同じような理由によるものでしょうか・・・

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

  • ベストアンサー
回答No.2

Range("A1").NumberFormatLocal = "@" Range("a1").Value = Data でも変わりませんか。

tomochan25
質問者

お礼

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

その他の回答 (2)

  • trytrytry
  • ベストアンサー率37% (13/35)
回答No.3

No.625236でも回答させていただきましたが。 結局、スペース+数字ではセルが値を数値と判断し、勝手に数値にしてしまう(trimされてしまう)ようです。 マクロではなく、セルに直接" 1 "等入力してみてください。結果は"1"になると思います。 セルの書式を文字列にすれば大丈夫だと思いますが、問題ありですか?

tomochan25
質問者

お礼

回答ありがとうございました。セルの書式を文字列にしてもこの問題は解決しないみたいです。

回答No.1

セルの書式を文字列にして下さい。 ちなみに、VBAでなくてもなりますよ。

tomochan25
質問者

補足

早速の回答ありがとうございます。 A1カラムを「セルの書式設定」→「表示形式」→「文字列」にするということですよねぇ・・・ やってみても直らないのですが・・・

関連するQ&A

  • スペースが認識されません(エクセルVBA)

    空白文字に囲まれた文字を抜き出すマクロを製作したいのですが うまくいかず困っています。お助けください。 例えば、以下のような文字がA1セルに入力されているような場合に使用しています。 ”ab c d” f1 = Cells(i, "A") Cells(i, "A") = Mid(f1, InStr(f1, " ") + 1, InStr(InStr(f1, " ") + 1, Mid(f1, InStr(f1, " ") + 1), " ")) このマクロを動作させると、一つ目のスペースは認識されるのですが 二つ目のスペースは認識される場合とされない場合があります。 原因を調査するために以下のようなコードを上記マクロの下に追記したところ MsgBox Mid(f1, InStr(f1, " ") + 1) & " " & InStr(InStr(f1, " ") + 1, Mid(f1, InStr(f1, " ") + 1), " ") 表示は cd 0 のようになります。二つ目のスペースが認識されていないようです。 また、エクセルに数式を入力すれば、上記の式でも認識しておりますが 他の操作との関係もあって、できればVBAで処理したいのです。 データはテキストデータから取り込んでおります。 実際にはセルには漢字や仮名、数字などのデータが混在しております。 エラー回避のために試した方法としては以下の2つです。 1.文字列として変換する方法 Cells(1, "A")=Format(f1, "@") 2.スペースの全角半角をそろえる方法 (下記の文では全角を半角にしておりますが、その逆も試しました) If Cells(1 ,"A") = Cells(1 "A") Like "* *" Then Cells(1, "A") = Replace(Cells(1, "A"), " ", " ") End If どちらを行っても改善はみられませんでした。 どこに間違いがあるのか、思い当たらず苦戦しています。 よろしくお願いいたします。 (エクセル2003、VISTA)

  • アクセス2000のVBAで変数に係数をつける方法

    アクセス2000を使っています。 一つのレコード内に、下記のように、「半角4文字の番号+スペース」という規則正しいデータがあります。  ↓↓ 11A11 10A11 22B11 09A22 しかし、このデータの数は不規則で、番号が1個のものもあれば、20個のものもあります。  ↓↓ 11A11 11A11 10A11 22B11 09A22 ・・・ このデータ内にある半角4文字の番号を全て別々のデータにしたいと思い、VBAのコードを使って、InStr関数でスペースを検索し、そのスペースの手前から4文字のデータをleft関数やMid関数で抽出し、それを変数data(x)に代入し、次に、InStr関数で前のスペースの位置から次のスペースを探して、また、そのスペースの手前から4文字のデータをMid関数で抽出し、それを変数data(x)に代入する。 要するに、data(x) の中の x を1から1づつ増加させていき、data(1),data(2),data(3)という変数を自動的に生成し、その生成された各変数にデータを代入していきたいのですが、どうすればいいのでしょうか?

  • VBAマクロの文字列認識について

    立て続けの質問ですみません。 Data1 = 1 Data2 = "234567890123457890" Data = Data1 & Data2 Range("A1").Value = Data  上記のマクロを実行すると、A1カラムに"12345678901234567890"と文字列で表示されるはずなのですが、実際には"12345678901234500000"と表示されてしまいます。 A1カラムの書式設定はユーザー定義で"00000000000000000000"としています。 一方、下記のマクロを実行すると Data1 = 1 Data2 = "234567890123457890" Data3 = "x" Data = Data1 & Data2 & Data3 Range("A1").Value = Data "12345678901234567890x"と表示されます。これはどういう現象なのでしょうか?最初のマクロを実行すると右寄せになるので文字として認識されていないと思いますが、文字として認識させるやりかたが良くわかりません。T関数やTEXT関数を使ったりもしてみましたがどうもうまくいきません。 自分がやりたいのは、100桁以上もある数字と半角文字(カナ、アルファベット)混合の文字列を作って一行一データのCSVファイルを作りたいのですが、どうも数字の桁数が多いとうまくいかないことがわかってきたのですが・・・よろしくお願いします。

  • カラムの末尾にスペースが入る

    VBAで固定長のファイルをテーブルに取り込みCSVファイルとしてカンマ区切りで書き出すというプログラムを作っています。 1111,55___,77____,5_____,77__,555____,999__      _はスペースのことだと思って下さい。 などといった感じのファイルを取り込むのですが、スペースを削除するためにTrimで切ってテーブルに取り込んでいるのですが、取り込むと必ずいくつかの決まったカラムに半角スペース6個分のスペースが入ってしまいます。 カラムの文字制限10で入力文字が2などなら、6個分のスペースが入り、 入力文字が7ならスペースは3つ入り、入力文字が10ならスペースは入らないという現象が起きています。 Trimで切っているのですから、入力文字が何文字であろうとスペースは入らないはずなのですが、決まったカラムにだけこの現象が起きています。 デバッグで見てみたところ、データを取得しているところでは、きちんとTrimで切られている形で取得することが出来ているのですが、テーブルの中を見ると半角スペースが上の規則で入っているというのが現在の現象です。 なぜこのようなことが起きるのか・・どなたか解決策が分かる方はいらっしゃいますでしょうか。お願いします。

  • エクセルで、【スペース除き】【半角⇒全角へ】

    タイトルの件、質問します。 A1セルに、下記のように、全角と半角の文字数字及び、スペースが入っています。 これを ・全角のみ ・半角文字、半角スペース 削除 を出来ないでしょうか? あいうえお12345 アイウエオ 12345

  • 半角スペースを全角スペースに

    文字列で、半角スペースを全角に置き換える方法がわかりません。。。 正規表現が苦手で、MySQLに登録する画面を作りましたが、半角スペースがあると、それ以降が無視されてしまうため、その半角スペースを全角スペースに置き換えたいのですが、書式がわかりません。 すいませんが、ご教授お願いします。 あと、もし全角スペースに置き換える方法以外で何かいい策などもしありましたら、それもよろしくお願いします。

    • ベストアンサー
    • PHP
  • wordでスペースが半角になる

    word2007なのですが、 英数文字のまじった(2011年1月など)言葉を入力してスペースをいれると スペースが半角になってしまいます。(スペース半角、全角、半角・・・) 全角スペースになるように設定できないものでしょうか? 何が原因でしょうか?

  • VBAの記述の中で半角スペースで区切らなければいけない時、区切ってはい

    VBAの記述の中で半角スペースで区切らなければいけない時、区切ってはいけない時を教えてください。 以下は参考書のとうりに記述しました。 ------------------------------------- Sub 分割() 氏名 = Range("A2").Value 姓 = Left(氏名, 2) 名 = Mid(氏名, 4, 10) Range("B2").Value = 姓 Range("C2").Value = 名 End Sub ------------------------------------- ・氏名 = Range ・Left(氏名, 2) ・姓 = Left ・名 = Mid ・氏名, 4, 10 半角スペースは無しで記述を入力したのですが 上記の    = の前後と   2 と 4 と 10 の前に 勝手に半角スペースが入りました。 試しに Range("C2")の Range と ("C2") の間に半角スペースを入れようと Range ("C2")とすると 強制的に排除され Range("C2") に戻されました。 試しに 氏名 = Range("A2").Value の「.Value」の前に半角スペースを入れて 氏名 = Range("A2") .Value としたら記述が赤字になって エラーメッセージが出ました。 試しに Range("B2").Value = 姓 の Range の部分でRとaの間に半角スペースを入れて  R ange と記述したら確定されました。 (強制的に戻らないのでしょうか?  またエラーメッセージが出ないのでしょうか?) 1.記述の中で半角スペースを入れなければならない所。 2.記述の中で半角スペースを入れてはいけない所。 3.入力してはいけない所に半角スペースを入力した場合エラーと表示される時。 4.入力してはいけない所に半角スペースを入力した場合エラーと表示してくれない時。 5.半角スペースが必要な部分に自動で入力してくれない時。 6.半角スペースが必要な部分に自動で入力される時。    上記4種類の定義を教えていただきたいです。 NO.4とNO.5は実害があります。 NO.3とNO.6は実害はないのですが理屈を知らないので、 NO.1とNO.2を知っていないと駄目ではと思いました。 参考書では見当たりませんでした。 わかりやすいサイトがあったら教えていただけるとありがたいです。 お願いします。

  • 半角スペースの見分け方を教えて下さい。

    初歩的な質問ですいません。 Javaで簡単なプログラムをコーディングしているのですが コンパイルエラーになりどうやら全角スペースが含まれているようです。 ただ、何度やり直してもエラーとなります。 VistaのノートPCを利用していますが半角スペースは文字入力が "A"になっている状態で入力しています。 カーソルで何度確認しても全角文字・全角スペースはないのですが・・ 基本的なことですいません。 何かご説明頂ける方お願いします。

  • エクセルの空白欄

    エクセルの関数で空白を指示して示すとき「””」の様に半角スペースをダブルクォーテーションで囲んだ物を使用する様ですが、これはあくまで、半角のスペースという空欄を示すだけなのでしょうか?当然全角 スペースは別のデータとして存在しているので、ヒットはしないのでしょうか?つまり半角スペースというデータにヒットしているということですか?

専門家に質問してみよう