• ベストアンサー

As Longって二つ必要ですか?

Sub test() MsgBox 税込み金額(100) & "円" End Sub Private Function 税込み金額(金額 As Long) As Long 税込み金額 = Int(金額 * 1.05) End Function 公式サイトのマクロなのですが As Longが2つあるのですが、二つ必要な理由を教えてください。 '2個目のAs Longが無くても問題なく動きました。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8052/17213)
回答No.1

Private Function 税込み金額(金額 As Long) As Long これの左のAs Longは金額がLong型だと言っていて,右のAs Longは税込み金額がLong型だと言っているのです。 As Longが無くても問題なく動いたのはVariant型として動作したためです。

IDUBKVIZDIXE
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 関数(Function) カッコの後のデータ型は必要?

    Function あ() あ = "あああ" End Function Sub test3() MsgBox あ End Sub と、 Function あ() As String あ = "あああ" End Function Sub test3() MsgBox あ End Sub は同じ動作をするのですがやはり「As String」をつけたほうがいいのですか? ウォッチウインドウで確認すると 「As String」がないほうは「Variant/ String」型ですが あるほうは「String」型のみです。

  • Functionとsub どちらを使った方がいいで

    Functionとsub どちらを使った方がいいですか? VBA初心者です。 ------------------------ Sub test1() MsgBox "testです" End Sub Function test2() MsgBox "testです" End Function ------------------------ どちらのコードも結果は同じです。 基本的に、マクロを組む時は、Functionとsubとどちらを使った方が良いのでしょうか? ------------------------ Sub tset3() MsgBox test4 End Sub Function test4() test4 = "testです" End Function ------------------------ のように戻り値・返り値がある場合のみFunctionを使うべきなのでしょうか? ご回答よろしくお願いします。

  • マクロ subプロシージャーは指定できない?

    accessのマクロの アクション:プロシージャの実行 は、 subプロシージャーは指定できないのでしょうか? 標準モジュールに Sub test1() MsgBox "プロシージャーの実行のテストです" End Sub Function test2() MsgBox "プロシージャーの実行のテストです" End Function と作り、 マクロのプロシージャの実行で プロシージャ名をtest2()にすると、うまく表示されますが、 test1()だと、失敗します。 subプロシージャーをマクロで呼び出す方法を教えてください。

  • エクセル デバッグできるのとできないのがある

    シートイベントについて教えてください。 シートモジュールに --------------------------------------------------------- Option Explicit Private Sub Worksheet_Activate() MsgBox "" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "" End Sub Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "" End Sub --------------------------------------------------------- と記載した時に、 F8で動かせるのは、Worksheet_Activateだけなのですがなぜでしょうか? ほかのイベントは、F8で実行させても、OSの音が鳴るだけで、マクロの実行はされません。 ご回答よろしくお願いします。

  • プロシージャーの外で宣言した変数の値の破棄の仕

    プロシージャーの外で宣言した変数の値の破棄の仕方について教えてください。 ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i End Sub ++++++++++++++++++ を実行すると、どんどん値が増えていきますが、 回避するには、 ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i i = 0 End Sub ++++++++++++++++++ とするしかないのでしょうか? ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i Set i = Nothing End Sub ++++++++++++++++++ としたら、エラーになりました。

  • 変数を続けて宣言した場合はEmpty型になる?

    Sub test1() Dim Int1, Int2 As Long Debug.Print "---------- test1の実行結果 ----------" Debug.Print TypeName(Int1) Debug.Print TypeName(Int2) End Sub Sub test2() Dim Int1 As Long Dim Int2 As Long Debug.Print "---------- test2の実行結果 ----------" Debug.Print TypeName(Int1) Debug.Print TypeName(Int2) End Sub を実行すると、 ---------- test1の実行結果 ---------- Empty Long ---------- test2の実行結果 ---------- Long Long の結果が得られます。 test1のInt1がEmpty型になりますが、変数の型にEmptyはないですよね? どういうことなのでしょう???

  • 変数の宣言(s As String)で良い理由

    vbaについてしつもんです。 標準モジュールで Option Explicit Dim s As String Sub test1() Call test2("qqq") End Sub Sub test2(s As String) MsgBox s End Sub としたのですが、もしかしてDim s As Stringって必要ないのでしょうか? あってもなくても動きます。 (s As String)があるからDim s As Stringは不要なのですか? だとしたら、(s As String)に dim や publicをつけなくて良い理由を教えてください。

  • 何カロリーかを出すマクロを組みたいのですが

    200gあたり216カロリーの食材を140gあたり何カロリーかを出すマクロを組みたいのですが Sub test2() Dim int量 As Integer Dim intkcal As Integer int量 = 140 MsgBox int量 & "は、" & intkcal & "カロリーです" End Sub これしか式が作れなかったのですが どう計算すれば指定した量のカロリーを出せるのでしょうか? 小学生レベルだと思いますが教えてください。 食材サイトで検索したら答えは、152kcalでした。

  • VB6でのmmioOpen関数の使い方

    VB6でwaveファイルから音の波形を取得するプログラム を作りたいと思っているのですが、mmioOpen関数の使い方 が分からずに困っています。とりあえず現在の状況を書くと、 Private Declare Function mmioOpen Lib "winmm.dll" Alias "mmioOpenA" (ByVal szFileName As String, lpmmioinfo As MMIOINFO, ByVal dwOpenFlags As Long) As Long Private Declare Function mmioClose Lib "winmm.dll" (ByVal hmmio As Long, ByVal uFlags As Long) As Long Private Type MMIOINFO dwFlags As Long fccIOProc As Long pIOProc As Long wErrorRet As Long htask As Long cchBuffer As Long pchBuffer As String pchNext As String pchEndRead As String pchEndWrite As String lBufOffset As Long lDiskOffset As Long adwInfo(4) As Long dwReserved1 As Long dwReserved2 As Long hmmio As Long End Type Dim p1 As MMIOINFO Dim h As Long Dim closewav As Long Private Sub Command1_Click() openfilename = "C:\sample.wav" 'WAVEファイルを開く h = mmioOpen(openfilename, p1, MMIO_READ) MsgBox h If h <> 0 Then MsgBox "WAVEファイルのオープンに失敗" End If 'WAVEファイルを閉じる closewav = mmioClose(h, MMIO_FHOPEN) MsgBox closewav End Sub だれか分かる方がいれば、間違っている箇所、やり方などを教えてください。 よろしくお願いします。

  • 押されているキーの評価について

    Excel2002のVBAです。 次のコードで押されたキーを判別していますが、Altの時だけ、 キーを離なしても、離したあと1度だけ、押されていると評価 されてしまいます。 これは回避できないのでしょうか? '--------------------------- Declare Function GetAsyncKeyState Lib "user32.dll" _ (ByVal vKey As Long) As Long '--------------------------- Private Sub CommandButton1_Click() If GetAsyncKeyState(vbKeyControl) <> 0 Then MsgBox "CTRLキーを押しながらクリックされました。" End If If GetAsyncKeyState(vbKeyShift) <> 0 Then MsgBox "Shiftキーを押しながらクリックされました。" End If If GetAsyncKeyState(vbKeyMenu) <> 0 Then MsgBox "Altキーを押しながらクリックされました。" End If End Sub

専門家に質問してみよう