PR

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

改行「vbCrLf」

Visual Basic for Applications


前回触れなかったのですが。
プログラムが全て実行されると、プログラムは自動で終了し(止まり)ます。



_
何が言いたいのかと言うと、
「マクロの実行ボタン(右向きの△)で実行するのだから、終了ボタン(□)を押さなくてはっ!」
という事はない。です。


いきなり初心者染みた事を書きましたが、決して初心者向きの学習サイトではありません。
むしろ初心者に難解で暴力的な事を書くこともあるかと思います。

それは、あくまで「はなみずの覚え書き」であり、一応「説明付き」程度なブログだからです。
今後も局所的なプログラムをアップする予定なので、もし同じ難問にぶつかった方が参考にして頂ければ幸いです。


「もっと初心者に分かりやすく教えて」
と言う方は、本格的な学習サイトなどがありますので、そちらを参考にされた方がいいです。

とは言え・・・
書いてる本人が初心者なのであまり難しい話もありませんし、サンプルコードをコピペすれば動かせます。
※不明点、問題点、不審な点などありましたらコメントに書いてください。


まずは、エクセルVBAおさらい。
1.エクセルを起動する
2.Alt +F11キーを押す
3.VBAのメニューバー「挿入」から「標準プロシージャ」をクリックする
4.プログラムを書いて実行(F5キー)する

非常に分かり易いですね!
では前回微かに触れた「メッセージボックス」についての覚え書き。

◆VBAの「改行」と文字列の「改行」◆
皆さんは改行はご存じだと思います。

ここFC2ブログを書く時は、テキストボックス内でEnterキーを押せば、→
この通り。
行が改められます。

ではVBAのマクロコードで実践してみましょう。
下のような異常に長い文字列をメッセージボックスに表示するマクロがあります。


コピペでGO!
-------------------------------------
Sub msgboies1()

MsgBox "Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ、VBA)は、マイクロソフト社製のMicrosoft Officeシリーズに搭載されているプログラミング言語である。"

End Sub
-------------------------------------


VBA1.jpg
:右端が見えない。。。

でも大丈夫。見えなくても実行できます。

VBA2.jpg

実行すると、長すぎて自動的に改行されます。
横長で非常に見づらいですね。


そこで、見栄えよく改行していきたいと思います。
前回のプログラムをEnterキーで格好良くチョン切っていきます。

-------------------------------------
Sub msgboies1()

MsgBox "Visual Basic for Applications
(ビジュアルベーシック・フォー・アプリケーションズ、VBA)は、
マイクロソフト社製のMicrosoft Officeシリーズに
搭載されているプログラミング言語である。"

End Sub
-------------------------------------
こんな感じに区切ってみましょう。

VBA4.jpg
:怒られたっ!!

「OK」を押さないとプログラムに触れることが出来ないので、とりあえず「OK」ボタンを押しましょう。


さて、何度改行しても実行させて貰えないことが分かったと思います。
要するにVBAではステートメントの最中に改行してはイケナイ!んです。

※ステートメントとは
プログラムの1命令のこと。
(今回は「メッセージボックスにVisual Basic~という文字列を表示する」という命令)
基本的にはプログラムの1行が1ステートメントとなる。


とは言え、右端が見えなくなったりする状態でプログラムを書かなくてはいけないのでは、やりづらくてしょーがない。
では、解決方法を。

コピペでGO!
-------------------------------------
Sub msgboies3()

MsgBox "Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ、VBA)は、" _
& "マイクロソフト社製のMicrosoft Officeシリーズに搭載されているプログラミング言語である。"

End Sub
-------------------------------------

何行にでも分けられますが、ひとまず2行にしてみました。
エラーも表示されてないはずです。

さて、このプログラムと前回Enterキーでチョン切ったプログラム。
何がどう違うでしょうか?

パッと目に付くのは、改行した後の2行目先頭に「&」が付いているところではないでしょうか。
それにダブルコーテーション(”)が増えている事。

実はコレってあまり改行のネタではなく、
「文字列を改行したら付けなくてはいけないルール」
なんです。。。

正解は「 _(半角スペースとアンダーバー)」で改行マークとするんです。
この文字を入力後、Enterキーで改行する事ができます。

ただ今回の場合は、文字列改行のルールに従って、
改行後に「&」を、そしてスペースを空けて文字列の前に「”」を入力して完成です。

幾分見やすくなったかと思います。
ちなみに文字列ではない場合・・・

コピペでGO!
-------------------------------------
Sub おまけ()

Dim a

a = _
1 _
+ _
1

MsgBox a

End Sub
-------------------------------------
見ての通り、「&」や「”」は不要です。
そして見辛い。。。


では、元のプログラムに戻りましょう。
早速改行したプログラムを実行すると。

VBA1.jpg
何ぃーΣ( ̄Д ̄;)ーん!?

変化無し。。。
(上の方の画像の使い回しなんで当然ですが、実行しても同じ事です)

そーなんです。VBAではプログラム上の改行とメッセージボックス上の改行は違うんです。
いきなり答えを書いちゃいます。

コピペでGO!
-------------------------------------
Sub msgboies3()

MsgBox "Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ、VBA)は、" _
& vbCrLf & "マイクロソフト社製のMicrosoft Officeシリーズに搭載されているプログラミング言語である。"

End Sub
-------------------------------------

早速実行してみましょう。

VBA1.jpg
:やれやれ。このステートメントを書くがために大変な労力だ。。。

「vbCrLf」

はなみず的には、この1文が覚え書きです。
どうにも「r」や「L」の位置があやふやになりがちで、いつも調べる羽目になります。


メッセージボックスに限らずなのですが、文字列改行の要です。
文字列の改行を命令します。
命令文はただの文字列ではないので「”」は不要。
「&」で前後の文字列を連結し、1つのステートメントとします。

最後におまけ。
メッセージボックス以外の場合。

コピペでGO!
-------------------------------------
Sub おまけ2()

Cells(1, 1) = "Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ、VBA)は、" _
& vbCrLf & "マイクロソフト社製のMicrosoft Officeシリーズに搭載されているプログラミング言語である。"

End Sub
-------------------------------------
実行すると、一瞬でマクロが終了します。
終了したらエクセルを見てみましょう。
セル「a1」に文字列が入力されているので、クリックします。

数式バーを見ると、2行に改行されている事が確認できます。
スポンサーサイト

テーマ : パソコン初心者 - ジャンル : コンピュータ

コメント

No title

えーっと、リンクページ設置しました。
こちらのサイトを含め、omu3bのお気に入りの写真ブログ様をリンクさせていただいているのでご覧ください → http://omu3b.blogspot.com/2009/07/blog-post_6844.html


もし、宜しかったら相互リンクお願いできますか?

Re: No title

やってみたけど、コレでOKかな?

> こちらのサイトを含め、omu3bのお気に入りの写真ブログ様をリンクさせていただいているのでご覧ください
いや~、みんな凄いなあ。
一眼欲しくなっちゃうな~。。。

コメントの投稿

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。