VBAのスペース区切りに関する注意点とエラー表示

このQ&Aのポイント
  • VBAの記述の中で半角スペースを入れなければならない所とは、変数や関数の引数の区切りや演算子の前後です。
  • VBAの記述の中で半角スペースを入れてはいけない所とは、変数や関数の名前と等号の間や、式の中での変数や関数名と括弧の間です。
  • 半角スペースを入力してはいけない場所に入力した場合、エラーメッセージが表示されます。
回答を見る
  • ベストアンサー

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を知っていないと駄目ではと思いました。 参考書では見当たりませんでした。 わかりやすいサイトがあったら教えていただけるとありがたいです。 お願いします。

  • gx9wx
  • お礼率95% (440/460)

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

> Range("B2").Value = 姓 の Range の部分でRとaの間に半角スペースを入れて > R ange と記述したら確定されました。 それは R と ange というSubもしくはFunctionだと 理解されるからです。 =の前後と , の後ろにスペースが入るのは見栄えですね。 > Range("A2") .Value これは一行に2個のステートメントを記述したと勘違いされてしまうのでエラーになります > Range ("C2")とすると > 強制的に排除され Range("C2") に戻されました。 それ以外考えられないので戻されます。 1.記述の中で半角スペースを入れなければならない所。 if x=1 then などのようなトークンごとの区切り 2.記述の中で半角スペースを入れてはいけない所。 トークンがバラバラになるような場合 3.入力してはいけない所に半角スペースを入力した場合エラーと表示される時。 文法上間違いとなる場合 4.入力してはいけない所に半角スペースを入力した場合エラーと表示してくれない時。 文法上間違いといえない場合 5.半角スペースが必要な部分に自動で入力してくれない時。 特になし 6.半角スペースが必要な部分に自動で入力される時。 特になし

gx9wx
質問者

お礼

>=の前後と , の後ろにスペースが入るのは見栄えですね。 見栄え?これは私には厄介です。 姓 = Left(氏名, 2) 名 = Mid(氏名, 4, 10) これの 2の前の半角スペース 4の前の半角スペース 10の前の半角スペース は見栄えではなく >トークンごとの区切り なのでしょうか?

その他の回答 (2)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

> 2の前の半角スペース > 4の前の半角スペース > 10の前の半角スペース これは全て「 , 」の後ろに半角スペースと考えてください。 =の前後と同じ考えでしょう。

gx9wx
質問者

お礼

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

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

簡単に言えば、 VBAのエディタ側が文言(予約語)を解読し、判断しています。 >「.Value」の前に半角スペースを入れ 先頭が「.」はそれはそれで意味があります。 よって、先頭を「.」とさせると別の意味になります。 これは学習してみると良いです。

gx9wx
質問者

お礼

ありがとうございました。 >VBAのエディタ側が文言(予約語)を解読し、判断しています。 でも万能ではないのですよね。違うのかな? ありがとうございました。

関連するQ&A

  • VBA 半角スペースを入れるには...

    OSはXP、excelは2003を使っています。 '======================================= '本文を作る、 '[A=社名、C=部署名、D=役職、E=名前&様] '======================================= strMOJI = Range("A" & cellGyo).Value & vbCrLf & Range("C" & cellGyo).Value & vbCrLf & _ Range("D" & cellGyo).Value & Range("E" & cellGyo).Value & "様" と組んでる中で、 Range("D" & cellGyo).Value  と Range("E" & cellGyo).Value  の間に、 半角スペースを入れたいのですが、 どの様にすればいいのか教えて頂けないでしょうか? 部長山田太郎様 となってしまうのを 部長 山田太郎様 としたいと思っています。 説明不足な所もあるかと思いますが、 ご指摘頂ければ追記致します。 何卒よろしくお願い足します。

  • VBAの記述の仕方で

    エクセルのVBAで、A1に Range("B1").Select という文字列を入力させたいのですが、以下の記述だといずれもエラーになってしまいます。 Cells(1, 1).Value = Range("B1").Select   Cells(1, 1).Value = "Range("B1").Select"   どこをどう直せばいいのでしょう?

  • VBAの記述あってますか?それともミスプリ?

    まちゅといいます。よろしくお願い致します。 昔買ったVBAの入門書をみながら、問題を解いていたのですが、どうにも納得いかない部分がありましたので質問させていただきます。 添付した画像のC列はA1×B1の答えが入るようになっています。 C17にはオートSUMなどは入っておらず、A1×B2の答えを計算すると C1に答えを記述、その都度C17に答えが加算されて最後に消費税と合計も記述されるというDo~Loopの問題なのですが、下記のマクロではどうしてもC列が計算されないんですがこれはミスプリントですか? それとも私が勘違いしてますか? ※インプレス「できるexcel2000マクロ&VBA編」P148より Sub test4() Range("C1") = 0 Range("C1").Select Do Until ActiveCell.Offset(0, -2).Value = "" With ActiveCell Range("C17").Value = Range("C17") + .Value .Offset(1, 0).Select End With Loop Range("C18") = Range("C17").Value * Range("D18").Value Range("C19") = Range("c17").Value + Range("C18").Value End Sub

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

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

  • 半角・全角スペースチェック

    エクセルのVBAで質問です。 現在、仕事でデータのコンバートの作業をしています。 送られてくるデータはTXTもしくはCSVなのです。 それを決められたフォーマットに加工しています。 それで現在、置換やオートフィルタの組み合わせで行っている作業を 自動化できないかと思い質問させていただきます。 氏名を 性 名としたいのですが、姓と名の間に半角スペースとしたいのです。 ただ、送られてくるデータが全角スペースだったり、 半角スペースが3つあったりとバラバラの状態です。 なのでいつもは置換で半角スペースに変えながら、 オートフィルタで半角スペースひとつを含まないものを出して 修正している状態です。 VBAでこれらをチェックし、自動修正することは可能でしょうか? よろしくおねがいします。

  • エクセルVBAの記述で・・・OTL

    エクセルVBAの記述で・・・OTL VBA初心者です。 まず、私が記述した内容を書きます。 Sub 実践練習() Dim tuika As String tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する内容を入力して下さい。", _ Left:=650, _ Top:=100, _ Type:=2) If Worksheets("Sheet2").Range("G10").Value <> " FALSE " Then MsgBox "OKです", vbOKOnly + vbDefaultButton2, "追加完了" With Worksheets("Sheet2") .Range("G10").Value = tuika LastRow = Worksheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet3").Range("A" & LastRow).Value = Worksheets("Sheet2").Range("G10").Value End With Else MsgBox "入力が不足しています。", vbOKOnly + vbCritical, "入力ミス" End If End Sub() 完成させたいことは・・・ Sheet1に存在するInputbox(ボタン)を使用し、 Sheet2のG10にFALSE以外が入力されたときは、 MsgBox追加完了のダイアログを表示してSheet2のG10値をSheet3のA列に順番に転送させる。 もしFALSEが入力されてしまったら、 MsgBox入力ミスを表示させて、 Sheet2のG10の値(FALSE)を削除しなさい。 と、記述したいのです。 勿論、上記の記述は完成していません(泣 どなたか、ご教授の程、何卒宜しくお願い致します。 (上記の完成型をお待ちしてます m(_ _)m ) 【環境】 OS:WindowsXP Pro Excel:2003

  • 半角スペース削除について

    半角スペースを一度削除してから禁止語句などがないかチェックし、 その後、半角スペースなどが入っている場合、元状態に戻したいと思います。 以下のように記述することで半角スペースを削除してから チェックはできると思うのですが、 それを元の状態に戻すということは不可能でしょうか? $str =~ s/[\s ]+//g if($str =~ /バカ/){ push(@error, 'バカと投稿はできません'); }

  • 半角スペースが有効にならない。

    前のページで入力された値を取得するCGIですが、どうしても半角スペースを認識しません。 それどころか、半角スペースの後ろを一切消してデータを取得しています。 同じように作成したものはきちんと動いているのに…。 どこが間違ってるかご指摘お願いします。 ---------- #!/usr/local/bin/perl read(STDIN,$buffer,$ENV{'content_length'}); @atai = split(/&/,$buffer); foreach $atais(@atai){ ($key, $value) = split(/=/, $atais); $FORM{$key}=$value; } $buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $buffer =~ tr/+/ /; $value =~ tr/+/ /; $key =~ tr/+/ /; print "Content-type:text/html\n\n"; print "$key<BR>\n"; print "<A HREF=./***.cgi>Back</A><BR>\n"; open (FH,">***.log"); @filew="$buffer\n"; print FH @filew; close(FH); exit; ---------- 以上です。よろしくお願いします。

    • ベストアンサー
    • CGI
  • 教えてマクロの記述?

    シート1に記述した内容をシート2に一覧形式で入力するマクロを以下の通り作成しました。 シート1に記述した内容を、別のブックのシートに一覧形式で入力していくマクロに変更するには どのようにマクロの記述をすれば宜しいのでしょうか?マクロの初心者にも分るようにご教授 いただければ助かります。よろしくお願いします。 Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("B" & Rows.Count).End(xlUp).Row + 1 .Range("B" & LastRow).Value = Worksheets("sheet1").Range("B1").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("B3").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("B5").Value .Range("E" & LastRow).Value = Worksheets("sheet1").Range("B7").Value .Range("F" & LastRow).Value = Worksheets("sheet1").Range("B9").Value .Range("G" & LastRow).Value = Worksheets("sheet1").Range("B11").Value End With End Sub

  • エクセルVBA記述誤りの解決お願い

    A1~A20のセルに入力データが一切無い場合に、入力を促すメッセージを表示させるマクロを作りましたが,「実行時エラー13  型が一致しません」のエラー表示が出ます。 デバックすると下記マクロの「If Range("A1:A20").Value = "" Then」の部分でストップしていました。 いろいろとやってみましたが、うまくゆきません。 If Range("A1:A20").Value = "" Then MsgBox ("参加マークーを入力ください") Exit Sub End If 記述上の誤りがあるようですので、ご教示いただけましたら幸いです。

専門家に質問してみよう