初心者ですが、宜しくお願いします。
Application.OnTime EarliestTime:=TimeValue(time_ptn), Procedure:="my_func"
上記コードの、末尾のプロシージャの指定において、
Dim prm1 As String, prm2 As Long
Function my_func(prm1,prm2)
~内容~
End Function
または、
Sub my_func(prm1,prm2)
~内容~
End Sub
というプロシージャを指定したいのですが、
末尾の書き方が分からず困っております。
「Procedure:="my_func(prm1,prm2)"」
「Procedure:= my_func(prm1,prm2)」
のようにやっても、うまくいきません。
正しい書き方をどなたか教えて下さい。
No.4ベストアンサー
- 回答日時:
Option Explicit
Sub test()
Dim s As String
Dim i As Long
Dim j As Long
Dim x As String
s = "a"
i = 1
j = 2
'文字列 & 変数 & 文字列...みたいに繋ぎます。
MsgBox "'my_func """ & s & """," & i & "," & j & "'"
Application.OnTime EarliestTime:=Now + TimeValue("0:00:01"), _
Procedure:="'my_func """ & s & """," & i & "," & j & "'"
'
'x = "'my_func """ & s & """," & i & "," & j & "'"
'MsgBox x
'Application.OnTime EarliestTime:=Now + TimeValue("0:00:01"), _
Procedure:=x
End Sub
Sub my_func(prm1 As String, prm2 As Long, prm3 As Long)
MsgBox prm1 & prm2 & prm3
End Sub
レスポンスが大変遅くなり、申し訳ございませんでした。
早速、試させて頂きました所、うまくいきました。
ありがとうございます。
ちなみに、
Application.OnTime EarliestTime:=Now + TimeValue("0:00:01"), _
Procedure:="'my_func """ & s & """," & i & "," & j & "'"
の箇所における、「_Procedure:="」の部分にあります、先頭のアンダーバーは、
これは何でしょうか?
このアンダーバー無しで試して上手くいきましたので、これは無視していますが、
何か意味のある記号なのでしょうか。
もしよろしければ、また教えて下さい。
近々、締め切らせて頂くつもりです。
その際には、ベストアンサーとさせて頂きます!
No.5
- 回答日時:
VisualBasicEditorでの作法みたいなものです。
基本、コードは1ステップを1行で記述します。
右に長くなりすぎると見にくいですよね。
適宜折り返して可読性を良くします。
http://www.accessclub.jp/actips/tips_108.htm
No.3
- 回答日時:
先のアドバイスコードをそのままコピーペーストしてもらえればいいんですけど。
新規Book、新規標準モジュールで試して、どうなのか教えてください。
MsgBox "a"
ってやると『a』と表示されますよね。
VBAで『"』で囲むと文字列とみなされます。
では『"』をMsgBoxで表示させたい場合はどうするか。
MsgBox """"
外側の『"』2つは、中の文字を文字列として扱うために囲ったものです。
中の『"』2つでMsgBoxの結果『"』を表示します。
ダブルクォートを2つ重ねる事で『"』を表現します。
今回、引数Procedure:=に設定したいプロシージャ名の文字列は
'my_func "a",1'
です。
MsgBoxで文字列として表示させる場合
MsgBox "'my_func ""a"",1'"
シングルクォート
my_func
半角スペース
ダブルクォート
ダブルクォート
a
ダブルクォート
ダブルクォート
カンマ
1
シングルクォート
と記述しなければいけません。
まずは単純なもので確認するなら
Sub test()
Application.OnTime EarliestTime:=Now + TimeValue("0:00:01"), _
Procedure:="'my_func 1'"
End Sub
Sub my_func(prm As Long)
MsgBox prm
End Sub
こんな感じのものからやってみてください。
再度、分かりやすく教えて頂き、ありがとうございます。
教えて頂いたコードをテストし、そのコードに問題がないことが確認できました。
しかし、私の問題は依然として解決していません。
なぜかと言いますと、
プロシージャの引数に渡したいものは、「変数(prm)」なのです。
1とか"a"という、具体的な数値や文字列ではないので、
それが原因でうまくいかないようです。
つまり、
Procedure:="'my_func 1'" :○(うまくいく)
↓
Procedure:="'my_func prm'" :×(うまくいかない)
とすると、プロシージャが見つかりません、とアラートが出ます。
(prm は変数です。prm = "この変数を渡したい" とでもしておきましょうか。)
変数を引数として渡す場合の記述方法はまた違ったものになりそうですね?
もし、お分かりでしたら、教えて頂けると助かります。
ちなみに、引数に渡したい変数の数は、3つあります。
(当初2つでしたが、3つになりました)
型としては、string、long、それぞれ1つは含む可能性があります。
以上、宜しくお願い致します。
No.2
- 回答日時:
Sub test()
Application.OnTime EarliestTime:=Now + TimeValue("0:00:01"), _
Procedure:="'my_func ""a"",1'"
End Sub
Sub my_func(prm1 As String, prm2 As Long)
MsgBox prm1 & prm2
End Sub
こんな感じでスペースで区切って引数を渡し、シングルクォートでプロシージャ文字列を括ります。
でも
>Dim prm1 As String, prm2 As Long
>
>Function my_func(prm1,prm2)
>:
という書き方から推測すると、グローバル変数を利用する事を想定しているのでしょうか。
Option Explicit
Dim prm1 As String
Dim prm2 As Long
Sub test2()
prm1 = "a"
prm2 = 1
Application.OnTime EarliestTime:=Now + TimeValue("0:00:01"), _
Procedure:="my_func2"
End Sub
Sub my_func2()
MsgBox prm1 & prm2
End Sub
この回答への補足
「お礼」を書かせて頂いた後、実際に試してみましたところ、
「マクロ"~~ファイルの存在場所~~ my_func "a",1" が見つかりません」
というようなアラートが出ました。
教えて頂いた記述の、シングルorダブルクォートが、とても繁雑であるため、
本当に、これで良いのだろうかとも思ってしまっているのですが、
教えて頂いたアドバイスの記述には、問題はないでしょうか?
ちなみに、もし宜しければですが、
ここで教えて頂いているクォートの意味、について、
分解して教えて頂けると大変助かります。
またよろしければ、教えて下さい。
アドバイスありがとうございます
> Procedure:="'my_func ""a"",1'"
> こんな感じでスペースで区切って引数を渡し、シングルクォートでプロシージャ文字列を括ります。
そういった方法があるのですね!
まだ試していませんが、早速試してみたいと思います。
試しましたら、改めて、こちらにてご連絡致します。
> という書き方から推測すると、グローバル変数を利用する事を想定しているのでしょうか。
いえ、グローバル変数を利用しようという考えは、今のところありませんが、
本件の解決にあたり、必要とあれば、使うかもしれません。
ただ、本件とは関係のない所における、グローバル変数の使用というのは、ない、と考えて頂いて結構です。
では、早速、教えて頂いた記述方法を試してみますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Application.OnTimeで引数付き関数を呼び出したい
Visual Basic(VBA)
-
OnTimeを使ったのですが「エラー」になってしまいます
Visual Basic(VBA)
-
エクセルVBAにおけるON TIMEメソッドの解除方法について
Visual Basic(VBA)
-
-
4
Excel(エクセル) VBA プロシージャーをミリ秒で繰り返し実行する方法
Excel(エクセル)
-
5
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
6
Excelマクロで、稼働中のマクロを確認する方法
その他(Microsoft Office)
-
7
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
8
vba セルに入力した時間をマクロで受け取るには?
Excel(エクセル)
-
9
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
10
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
11
ontimeのリセット方法
Excel(エクセル)
-
12
OnTime の中断方法について
Excel(エクセル)
-
13
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
14
VBA 半角スペースを入れるには...
その他(Microsoft Office)
-
15
エクセルで定期的(30分おき)にマクロを実行させる方法は?
Excel(エクセル)
-
16
どこにもフォーカスを当てたくない
Access(アクセス)
-
17
UserForm1.Showでエラーになります。
工学
-
18
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
19
エクセル マクロ 指定日の指定時刻にプロシージャを実行
Visual Basic(VBA)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
vbsからバッチファイル実行時の...
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列をtxtファイル...
-
Excelで指数表現しないようにす...
-
A B C D E の五文字のすべてを...
-
VBAを使って選択した範囲の数字...
-
Msgboxの×が押されたとき
-
リストボックスの文字列の取得
-
16進数を10進数に簡単に変換す...
-
VBScriptでEUC文字列をSJIS文字...
-
Left関数とRight関数を合わせた...
-
ファイルの中身検索と表示
-
C言語でファイルから特定の文字...
-
UWSCに詳しい方簡単なテキスト...
-
アクセスでのインポート時の改...
-
teratermマクロ 文字列分岐
-
エクセルVBA
-
文字列からタブコードを取り除...
-
【Excel VBA】複数ある特定の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
Left関数とRight関数を合わせた...
-
同一セル内に関数と文字列を同...
-
アクセスで特定の数字以外(複...
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列の最大値を抽...
-
VBA2005 16進を2桁で表示したい。
-
ORCLEでの小数の表示方法の変更...
-
エクセル 数値データを桁をそ...
-
VBの「As String * 128」とは?
-
CStringの文字列検索&抜き出し...
-
エクセルでセル内の文字列の最...
-
Msgboxの×が押されたとき
おすすめ情報