• ベストアンサー

Get_○○っどういう意味?「ExelVBA」

初心者向けのVBAの本を読んでいるのですが、Get_の説明がなく、あるモジュールに書いてあった次の2つがわかりませんでした。 (1)「税込価格=Get_税込価格(税抜き価格)」とsubプロシージャ中に書いてあるのですが、 どういう意味でしょうか? (2) Function Get_税込価格(a As Integer)As Integer Dim 税率 As Double 税率=0.05 Get_税込価格=a*(1+税率) a=100 End Function と(1)のSubプロシージャの下に書いてあったのですが、 「Get_税込価格=a*(1+税率)」とはどういう意味でしょうか? よろしくお願いいたします。

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

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

プログラムを組んだ人が勝手に、ユーザー関数につけた名前だよ。気にするはことなく、意味を詮索する必要なし。Set_でもCalc_でもありえるのではとおもう。中身は「計算させる」といった意味か。「税込価格計算後」という名も付ける人がいてもおかしくはない。 Function()はVBAの常識でしょう。まだ作ったことがないのかな。 ーー 連想で http://officetanaka.net/excel/vba/statement/PropertyGet.htm に載っているようなGetなら、質問も出そうだが。

schuler
質問者

お礼

遅くなりましたが、ありがとうございます。

その他の回答 (5)

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.5

schulerさん こんにちは。 「初心者向けのVBAの本」とのことですが、悪い例題なのでしょうか? ちょっと本題とずれてしまいますが、以下の問題点があるのを認識してください。 ※EXCEL2003のVBAだとして説明します。 ・Function Get_税込価格(a As Integer)As Integer  税込価格、税抜き価格共にInteger(2バイト整数)なので+32767~-32768しか指定できません。  よってそれ以上(5万とか)だとエラーを起こします。  IntegerではなくLongに変更した方が良いかと思います。 ・a=100  呼び出した「税抜き価格」の変数は100になってしまいます。  例)     Dim 税抜き価格 as Integer     Dim 税込み価格 as Integer     税抜き価格=5000     税込み価格=Get_税込価格(税抜き価格)  結果)     税抜き価格は100     税込み価格は5250     になります。 ・税率の指定もちょっと気になります。  通常0.05は変数にしないで定数で指定すると思います。    Dim 税率 As Double  税率=0.05  Get_税込価格=a*(1+税率)       ↓  Const 税率 As Double = 0.05  Get_税込価格=a*(1+税率) 余計なお世話だったかも知れませんが、VBAの変数、関数等々基本をしっかり覚えて、バグ(プログラムミス)を出さないようにしてください。

schuler
質問者

お礼

ありがとうございます。 >a=100  呼び出した「税抜き価格」の変数は100になってしまいます。  例) ここがわかりませんでした。 a=税抜き価格、みたいな式がないのに、どこでaと税抜き価格がリンクしたのか不明です。

  • uruz
  • ベストアンサー率49% (417/840)
回答No.4

「Get_税込価格()」はNo1~3さんが説明されているようにFunctionで定義されている関数名です。 で、関数名の先頭の「Get_」は英語で「得る」「取得する」という意味があります。プログラムになれた人はこういう書き方をよくします。「Get_税込価格()」と定義することで関数名を見ただけで税込価格を返す関数だとすぐ解ります。 「Get_xxxx」の反対の意味で「Set_xxxxx」という書き方もよくします。

schuler
質問者

お礼

ありがとうございます。

  • ariseru
  • ベストアンサー率56% (930/1659)
回答No.3

>1. Get_税込価格:"Get_税込価格"という名前のFunctionプロシージャの呼び出し (税抜き価格):Functionプロシージャに"税抜き価格"という変数をパラメータとして渡す 税込価格=Get_税込価格(税抜き価格):Functionプロシージャの実行後に返ってきた数値を"税込価格"という変数に入れる >2. 税率=0.05:現在の消費税率を"税率"という変数に入れる a*(1+税率):aという変数はパラメータとして渡された"税抜き価格"なので、税抜き価格×(1+0.05)という計算、つまりは税込価格を計算している Get_税込価格=a*(1+税率):Functionプロシージャの戻り値に税込価格を入れている a=100:何の意味も無い処理、有っても無くても結果は変わらない とりあえず、SubプロシージャとFunctionプロシージャについての説明を読んだ方が良いかな。 あとは、プログラムを読むときはどの変数にどんなデータが入っているのかを確認しながらじゃないと内容が理解出来ませんよ。

schuler
質問者

お礼

ありがとうございます。 遅くなってしまいましたが、以下の点が理解できませんでした。 >a*(1+税率):aという変数はパラメータとして渡された"税抜き価格"なので、税抜き価格×(1+0.05)という計算、つまりは税込価格を計算している aはどこで税抜き価格として扱われることになったのでしょうか? >a=100:何の意味も無い処理、有っても無くても結果は変わらない aに100を代入するという意味があるのではないですか? 遅くなりましたが、お願いいたします。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.2

>税率=0.05 >Get_税込価格=a*(1+税率)  税率が・・・  0.05    これに 1 を加えたものを 元値に掛け算しているので、   消費税込 の 価格を   Get_税込価格 に代入しています。

schuler
質問者

お礼

ありがとうございます。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

Function Get_税込価格(a As Integer)As Integer 「Get_税込価格」の部分は、ユーザーが任意で設定する部分で、「関数名」です。 セルに「=SUM(A1:A10)」と入れた場合の「SUM」に相当する部分です。 「Get_税込価格=a*(1+税率)」は、「Get_税込価格」という関数の答えを「a*(1+税率)」の計算結果としますよ、という意味です。ちなみに、「税率」は変数として使っているだけです。

schuler
質問者

お礼

ありがとうございます。

関連するQ&A

  • VBAのプロシージャーと変数の名前の区別について

    VBAの初心者です。教えてください。 Sub ex() Dim a As Integer Dim b As Integer a = 2 a a, b MsgBox b End Sub Sub a(a As Integer, b As Integer) b = a End Sub 上記のプログラムを実行するとうまくいきません。VBAのプロシージャーと変数って同じ名前を使うとだめなのですか?教えてください。

  • Functionプロシージャの便利さがわかりません

    私はVBAコードを作る時は、もっぱらsubプロシージャーを使ってしまうのですが、 http://excelvba.pc-users.net/fol5/5_4.html を参考に、 Functionプロシージャとsubプロシージャの違いを確認してみたのですが、 Functionプロシージャの便利さがわかりません。 *********************************** Sub Test() SubプロシージャとFunctionプロシージャのテスト i = 1 Call Subプロシージャ(i) i = Functionプロシージャ(i) MsgBox "Functionプロシージャ結果:" + CStr(i) End Sub Sub Subプロシージャ(ByVal i As Integer) MsgBox "Subプロシージャ結果:" + CStr(i) End Sub Function Functionプロシージャ(ByVal i As Integer) As Integer i = i + 1 Functionプロシージャ = i End Function *********************************** Functionプロシージャは、 (ByVal i As Integer) As Integer のように、、二回もデータ型(Integer)の指定をしなくてはいけないのでしょうか? リンク先の説明には、 「SubプロシージャとFunctionプロシージャの違いは Subプロシージャが引数を受け取るのみに対して Functionプロシージャは引数を受け取り、 戻り値を返すという関数としての役割を果たすことができる点です。」 と記載されてますが、 それはSubプロシージャでも出来てますよね? サンプルコードにおいてのFunctionプロシージャの便利さを教えてください。

  • 標準モジュールとクラスモジュールの違い

    マイクロソフトのAccess2000でVBAプログラミングを行なっておりますが、 基本的なことを教えてください。 「標準モジュール」と「クラスモジュール」の違いはなんですか? 例えば、どこからでも使えるプロシージャ Public Function getSum( i1 as integer, i2 as interger ) getSum = i1 + i2 End Function を定義したとして、標準モジュール内に書くのとクラスモジュール内に 書くのとでは、何が違ってきますか?その他とにかく「標準モジュール」 とクラスモジュールの違いを教えてください。

  • VB2005での関数への配列の参照渡しの方法

    Visual Basic 2005で、 =============================================================== Function func(ByVal a As Integer, ByRef b() As Integer) As Integer  a += 1 : b(0) = 1 : b(1) = 2 : b(2) = 3 Return 0 End Function ============================================================== という関数があったとしてメインのプロシージャに ================================================================ Dim c As Integer Dim d As Integer Dim e() As Integer = Array.CreateInstance(GetType(Integer), 10) d=7 c = func(d, e) ================================================================ と書き入れると結果はd=7(∵値渡し)、e(0)=1,e(1)=0,e(2)=0(∵参照渡し)となってしまうと思います。 e(0)=1,e(1)=2,e(2)=3としたい場合はどのように記述すればよいのでしょうか?

  • エクセルVBAの次のコードの意味教えて下さい。

    Sub macro1() Dim a As Integer, b As Integer a = 1 b = 5 macro2 a, b MsgBox a + b End Sub Sub macro2(c As Integer, d As Integer) c = c * 10 d = d * 5 End Sub 答えは35と出ます。 よろしくお願いします。

  • VBA 標準モジュールとフォーム

    ある標準モジュール内で生成した変数の値をフォームのコマンドボタンをクリックしたら表示されるプログラムはどうやってつくるのですか? 標準モジュール sub test() dim a as integer dim b as integer dim sum as string a=5 b=1 sum=a+b End sub フォームのコマンドボタンクリック Sub CommandButton1_Click() MsgBox sum End Sub 標準モジュールで計算した答えがフォームのコマンドボタンをクリックしたら答え6が表示されるようにしたいのですが、どうしたらできますか?

  • 階乗のマクロ

    階乗のマクロを作りたいのですが、全然できません。どこを変えたらいいのか教えて下さい。ちなみに今こうなっています。 ------------------------------------------------ Sub exam5() Dim intA As Integer Dim intB As Integer Dim intC As Integer intA = Application.InputBox("数値を入力してください。") intB = (intA - 1) intC = (intA) * (intB) MsgBox (intC) End Sub Function kaijou(intA As Integer, intB As Integer) As Integer kaijou = intA * intB End Function ------------------------------------------------ どうかお願いします。

  • VBAでプロシージャ間のデータを渡したい

    VBAでプロシージャ間のデータを渡したい main関数の中でget_Recordという関数を呼んでいます。この中でアクセスの テーブルからデータを取得して、「this_Hensuu」という変数に格納します。 やりたいことは、get_Recordで取得した変数をmain関数の中で利用したいです。 main()関数外で変数を宣言してグローバル変数とすれば解決するのは わかりますが、その他の方法でmain関数に値を渡すことは可能でしょうか? Sub main() Dim x = 10 Call get_Record(x) ... ... end sub Sub get_Record(Byref x As Integer) Dim rs As Dao.recordset Dim this_Hensuu As String Dim this_Hensuu2 As String get_SQL As String get_SQL ="" get_SQL="Select * from TABLE1 where ID='" & x & "'" rs = Openrecordset(get_SQL,opendynaset) this_Hensuu = rs!名前 this_Hensuu = rs!名前2 end sub

  • 【vb.net】クラス化について

    大学で以下のような練習問題を頂きました。 ----- Public Sub test()  Dim a As b = New c  Dim i As Integer = 1  a.disp(i) End Sub 問:この時のbとcを実装せよ。 ----- Public Class c  Public Function disp(ByVal i As Integer) As String   return "iは" & i & "です"  End Function End Class までは書いてみたのですが、b の扱いがどうもわかりません。 どなたか教えていただけませんでしょうか。

  • 引数付のFuncitonプロシージャと引数付のSUBプロシージャの違い

    親プロシージャに数値を渡すときに、引数付のFuncitonプロシージャと引数付のSUBプロシージャは、結果を見ると同じ動きをするように思います。 このような場合、両者には、どのような違いがあるのでしょうか? Sub 親プロシージャ() Cells(1,MyNOend)=123 end Sub ・子プロシージャ Function FMyRowCnt(MyNOend As Integer) MyNOend = TMYKanriBkWs1.Range("D1").CurrentRegion.Rows.Count End Function Sub FMyRowCnt(MyNOend As Integer) MyNOend = TMYKanriBkWs1.Range("D1").CurrentRegion.Rows.Count End Sub 以上 よろしくお願い致します。

専門家に質問してみよう