• ベストアンサー

VBA超初心者の質問ですけど・・・

VBAを勉強しています。超初心者の質問なんですけど、モジュール 変数 引数 関数 定数 このへんのことがごっちゃでよく区別がつきません。軽い説明でもいただけたらうれしいです!教えてくださいm(__)m

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

  • ベストアンサー
  • Ryuku
  • ベストアンサー率28% (2/7)
回答No.1

モジュールは作ったプログラムを保存するときに一つのファイルとなる単位です。フォームを作る度に「フォームモジュール」が一つ出来る。(あまり深く考えないでいいと思います) 変数は数字をわかりやすい言葉に置き換えることとでも言いましょうか。 たとえば 一個100円のもの20個の値段を出したければ Kosuu(個数のこと) Tanka(単価) Goukei(合計) という変数を作れば Tanka = 100 Kosuu = 20 と置き換えることによって Goukei = Tanka * Kosuu と計算する、といったように使います。 関数は先ほどの例で言えば Goukei = Tanka * Kosuu というのを一つの関数としてあらかじめ作ることによって合計を出したいときには Tanka Kosuu の値を指定して関数を呼び出すことによってGoukeiが出てくるというものです。関数に関しては実際に演習でもやってみると簡単に解ると思いますよ。 そして引数はこのときの関数で言うところのTankaとKosuuのことです。 定数は変数と同じようなものですが 変数はプログラムの途中で値が変えられるのに対し変えることが出来ません。 たとえばリンゴの計算をするときに Tanka = 100 として計算した後にミカンの計算をするときには再び Tanka = 50 のようにしてTankaの変数の値を変えることが出来ますが 定数として Tanka = 100 としてしまうとプログラムの途中で変えることは出来ません。 変数にしておいて万が一どこかで値が代わってしまうといけないときに定数にします。 言葉で書くとこんな所ですが実際に演習でもしてみてから言葉を覚えた方がいいですよ。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

変数と定数 質問に○数と数がついた言葉が4つありますが、算術の数のイメージを捨ててください。算数の数直線をイメージしてください。それがメモリーのイメージです。メモリーの一部(したがってスタートポイントがあり)が何バイトか(したがって終わりがある)確保されている。1バイトを最小にして何バイトかの領域が確保される。何バイトになるかは変数の型で決まり、言語仕様で決まる。個々の変数は変数名を持ち、メモリー上に(スタートアドレスと長さ)を持ち、変数(名)はスタートアドレスに名前をつけ扱い憶えやすくして、長さを(陰に)背負わせたものといえる。コンピュータはその領域に値をセットできる仕組みがあり、上書きすれば前の内容は消え、上書きした内容に置き換わる。Basicは徹底してアドレスの考え、それを指し示すポインターの考えを隠しており、長さもLen,Midなど関数を考えるときに意識するぐらいでこれが初心者向けといわれる1つの理由と思う。 定数は変数にプログラマーの指定する内容をセットしたものと考えられる。ただVBではConst a=2 a=3はエラーにしている。それは そのルーチン(スコープ)中は内容を変えないという考えを具現しているに過ぎない。代入式の右辺に書く値そのものを「リテラル」と言うことにすれば、Constを使わなくてもc=1とかc=”a”のリテラル表記をその言語がゆるせば、目的は達せられる。自分で変えなければ良いのだから。 変数に内容をセットする仕方は (1)ファイルから読みこみ Input#1,a (2)キーボードから入力してa=Inputbox(”a=”) (3)演算して a=b+2 (4)他の部分より移送 a=c  (5)リテラル利用 a=3 a=”abc” (6)定数利用 Const a=3.14 (7)システムから a=Today() 定数を使う場面は (1)数学の定数と同じく演算式 y=a*x+cのa,c (2)比較の右辺 If a=c Then のc (3)VbRedやxlThinなどの実は決めたコードを単語らしく表現 (4)具体的に順序数として a(c) のc For i=1 To 3 と Start=1 End=3 For i=Start to End と は同じなのだが、何かが違うと思う

関連するQ&A

  • VBAでの戻り値と引数について

    最近VBAでプログラムを勉強しています。 引数と戻り値について教えてください。 定義としては、 引数:プロシージャに渡される定数、変数、および式。 戻り値:呼び出し元に処理の結果を戻す値。 となっているのですがいまいちピンときません。 SubプロシージャとFunctionプロシージャでその違いがあると思うのですが、具体的にどれが引数でどれが戻り値なのかわかりません。 他のプログラミングも全く経験がない初心者で初歩的な質問ですみませんがご教授お願いします。

  • 関数と変数と定数と式をまとめて [C言語]

    はじめまして。私はC言語初心者です。 C言語では、関数の引数や変数への代入や配列の添え字などに、変数や定数や、式や関数の値を利用できるじゃないですか。私は今C言語について勉強したことをファイルにまとめていっているのですが、上記のようなことを説明するたびに「関数と変数と定数と式」と書くと長ったらしくなってしまいます。そこで、これらをまとめていう言葉があったら教えて欲しいのです。 回答よろしくお願いします。

  • VBA 引数の簡単な命名規則ありますか?

    Excel VBAで 簡単なプロシージャを作る時に引数名で詰まります。 関数化するなら引数は別に名前を付けたい。でも単純すぎてわざわざ別名が 思いつかない…できれば呼びだし元の変数名をそのまま使いたい hoge(text,loop) sub hoge( _text, _loop ) とかできればいいんですが先頭_(アンダーバー)ってダメなんですよね 最後_(アンダーバー)は行継続と紛らわしいし… いまんとこ、 定数UPPER 関数UpperCamelCase 変数loweCamelCase と簡単な程度なんですがなにか短くて気楽な引数の命名規則は無いもんでしょうか?

  • VBAの中でユーザー定義関数を使うときに

    VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。

  • VB初心者の私に教えてください!

    最近VBを始めたんですけど、関数 定数 変数 引数 の意味がよく理解できません・・・。値を返すとか戻り値とか、あとプロシージャを作るってどういうことですか?なにかにたとえて教えてくれればうれしいです! お願いします(^。^)

  • VBAで

    VBAで モジュールAで定義された変数を、モジュールBに引継ぐ事はできますか? モジュールAである値の入っているセルを検索し、その行番号を変数 HitRowNo に入れます。 この変数 HitRowNo をモジュールBでも使いたいんですが、変数(の値?)を引継ぐことは可能ですか? 質問の意味がわかりずらいかもしれませんが、よろしくお願いします。

  • VBA 変数・定数名の付け方

    いつもお世話になっております。 現在VBAを勉強中の初心者です。 変数や定数名について質問させていただきます。 自分でコードを作成した場合、変数名や定数名について、『何にしようか?』と結構な時間迷ってしまします。 決められたルールの中であれば、自由に命名して良いのでしょうが、参考書等を見ると同じような役割の変数・定数には似通った名前がつけられているように見受けられます(まあ当然かもしれませんが・・・) 私も今後の事を考えて、規則?に沿った名称を使って行きたいと考えています。 何か参考となるサイトなどはありますでしょうか? どうぞよろしくお願いいたします。

  • VBAの質問です2

    たびたび申し訳ありません。 繰り返し処理の中でSUM関数を使うときに、引数をA1のような書き方ではなくて(1,1)のようにしたいのですが、そうするとエラーになってしまいます。 これはVBAの問題ではなくて単にSUM関数の引数を(1,1)のように書きたいときにはどうすればいいかという問題だと思いますが。 =SUM((30*I-18,5):(30*I+8,5)) ではだめなんです。 よろしくお願いいたします。

  • ExcelのVBA。public変数の値が消える

    VBAについて。Excelの2003や2007を使っています。標準モジュールで public 変数を定義しました。 ユーザーformを使い、パブリック変数に値を入れたり変更し、標準モジュールに戻ったとき、そのpabulic変数が resetされてしまっている事があります。全く同じマクロで、この現象が起こることと、起こらないことがあります。excelの2003でも2007でも、同じ現象が起こります。簡単なマクロで再現性のある具体的なものを示したいと思い、試しましたが、できませんでした。簡単なマクロでは、きちんとパブリック変数は保持されています。問題のあるマクロはかなり長いものなので、とても示せません。問題がどこにあるのかわかりません。このマクロで不都合があるという具体的なマクロを示すことができない状態での質問で、申し訳ありません。 また、このようなプログラミングをしていて思ったのですが、ユーザーフォームに対してユーザーが任意の引数を渡す方法あるいは、ユーザーフォームから引数を受け取る方法はあるのですか?今は、pubulic変数を用いたり、具体的なセルに値を代入したりしていますが、どう考えてもそれはエレガントではないし、汎用性もないと思います。引数で引き渡すのが一番綺麗でいいとは思うのですが、それが可能かどうかわかりません。

  • EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作り

    EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作りました。そのワークシート上での定数や、プロシージャや関数をワークシートのモジュールに置いています。そして、その定数や関数などをユーザーフォームのイニシャライズなどで使いたいと思いますが、ユーザーフォームのモジュールはワークシートのモジュールとは別なので、使えません。他への影響を考えると、標準モジュールには、置くのは不適切だと思います。 特定のワークシート上でのみ使うユーザーフォームと、そのワークシートとで、共通の定数や関数などを使う方法は、あるのでしょうか。どのようにすればよいのでしょうか。