電子書籍の厳選無料作品が豊富!

VBAの基本的な事なのですが(すいません、あまりに初歩的な事なのでこちらに質問させていただきました。)

よく、プログラミングを書く時に、プログラム途中で、行が1つ2つ続けて空いている時ありますよね。あれは、何か意味があるのですか。
改行した所で、一つの処理が終わってますよね?(1行、2行・・空いて無くても処理は変わらないですよね?)

それと、プログラム途中で、書き出しの頭がそろえる時とづらす時もありますよね。
あれも、何か意味があるのですか?(ここからここまでの処理と見やすくするため?)
例 づらしてない時
Sub test01()
With Sheets("Sheet1").Range("A1")
.Value = Time
.NumberFormatLocal = "h:mm:ss"
End With
Application.OnTime Now + TimeValue("0:00:01"), "test01"
End Sub

づらしている時
Sub test01()
  With Sheets("Sheet1").Range("A1")
    .Value = Time
    .NumberFormatLocal = "h:mm:ss"
  End With
 Application.OnTime Now + TimeValue("0:00:01"), "test01"
End Sub

それと、もう一つすいません
VBAの→標準モジュールの→モジュール1内にプログラムが一つ入っています。
そのプログラムはシート1でDDEで取り込んだデータ(シート1の特定のセルに入っている)を計算、蓄積、記録など処理するようにプログラムが入っています。
そのシート1と同じ処理をシート2、3、4、(セル位置は一緒)にも同じくさせたいのですが、(それぞれのシートでDDEのデータが変わってくるのですが)
そのような場合は、基本的な考え(作り方)として
標準モジュールのプログラム内で書き換えるだけで対処出来るのでしょうか?
それとも、エクセルオブジェクト内→シート1やシート2などに、個別にプログラムを(多少書き換えて)入れていく感じになるのでしょうか?

どなたか、ご存じの方おられましたら、よろしくお願いします。

A 回答 (4件)

こんばんは。



'プログラム途中に文字が入力されていますが、
'自分が覚えとけば入れなくてもいい訳なんですか?
コメントといいますが、以下にサンプルが出ています。

VBAエキスパートサンプル問題 VBA Professional Office 2003
http://vbae.odyssey-com.co.jp/training/smpl_pro2 …

問4.編集効率が良いものを1つ選びなさい。

話の流れから答えは、分かると思います。

他にも、#3でも書いたように、With ステートメントのブロックの手前などに、コメントを入れます。こまごま書く人もいますが、それはプログラマとしては、邪魔な存在になってしまいます。

>"一時停止" や
>""結果:""@"   などは処理に使う(セルに入れたり)のに使うんですよね?

単独では、どうこう判定できませんが、文字列なら、" " で括ります。
    • good
    • 0
この回答へのお礼

夜分遅くすいません。ありがとうございます。
このような、サイトもあるのですね。
いろいろ他の事もやってみたいと思います。

ありがとう、御座いました。

お礼日時:2009/10/08 02:10

こんばんは。



>それと、プログラム途中で、書き出しの頭がそろえる時とづらす時もありますよね。
>あれも、何か意味があるのですか?(ここからここまでの処理と見やすくするため?)

Sub test01()
  With Sheets("Sheet1").Range("A1")   '-------始まり
    .Value = Time
    .NumberFormatLocal = "h:mm:ss"
  End With '-----------------------------------終わり
 Application.OnTime Now + TimeValue("0:00:01"), "test01"
End Sub

見やすさ?それは、結果ですね。
コードの構造的なまとまりを見るためと、ミスをしないために、インデントを付けます。
If ~ End If, For i = 1 To EndNum ~ Next など、重ねていくと、上下と縦のラインが合っているか見るわけです。

>そのシート1と同じ処理をシート2、3、4、(セル位置は一緒)にも同じくさせたいのですが、(それぞれのシートでDDEのデータが変わってくるのですが)

DDEのChannel の出力先を換えてあげればよいのですから、Channel の中が、Sheet1 になっているところを、ActiveSheet.Name とか、サブルーチンの引数にして呼び出してあげれば、その呼び出しプログラム自体はひとつで済むはずです。

しかし、最近は、VBAではなく、COMアドインになっているものがほとんどで、どのようなコードなのか仕様が分かっていないと、こちらではなんともいえないと思います。

この回答への補足

ご回答いただき、ありがとうございます。
参考になりました。後はプログラミングの・・・・知識ですね。
もしよろしければ、補足した所もお答えいただけたら幸いです。
ありがとうございました。

補足日時:2009/10/08 00:11
    • good
    • 0

空行、字下げは、プログラムを見やすくするためです。

空行、字下げしなくてもプログラムの動作は変わりません。
どのシートのデータも標準モジュールから扱えます。データがどのシートのものなのかを区別するだけです。

a1 = Sheets("Sheet1").Range("A1")
a2 = Sheets("Sheet2").Range("A2")
    • good
    • 0
この回答へのお礼

お早いご回答有難うございました。
やはり、そうでしたか。
つまらない質問をして申し訳ありませんでした。
ありがとう、ございました。

お礼日時:2009/10/07 22:48

>あれも、何か意味があるのですか?(ここからここまでの処理と見やすくするため?)



見やすさの面で改行やインデント(字下げ)を行います。
これを行う習慣が付いていれば、ある程度は見やすいプログラムになっているのでデバッグ等がやりやすくなります。

>標準モジュールのプログラム内で書き換えるだけで対処出来るのでしょうか?

実際のプログラム内容が解らないので何とも言えませんが、同じ物をそのまま呼び出しても全く問題無い場合もありますし、処理内容によっては一部を書き換える必要があるでしょう。

知識があれば、処理内部で実行シートを判断してそれに合わせた処理を行うように変更する事も出来ますから、処理内容と貴方のプログラミング能力次第でどのようにでもなると思います。

この回答への補足

お早いご回答有難うございます。
すいません、もう一つ二つお聞きしたいんですが
プログラム途中に文字が入力されていますが、
'スリープする
' 時刻を算出   などは、
処理をするのに文字を使ってる訳ではないですよね。(説明的な事で入れるんですか?)極端に言うと無くても自分が覚えとけば入れなくてもいい訳なんですか?

"一時停止" や
""結果:""@"   などは処理に使う(セルに入れたり)のに使うんですよね?

すいませんが、宜しくお願いします。

補足日時:2009/10/07 23:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!