Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
Re: フォームボタン作成時のOnActionの記述制限?について
投稿日時: 21/09/14 13:43:44
投稿者: simple

https://www.moug.net/faq/viewtopic.php?t=80913
[フォームボタン作成時のOnActionの記述制限?について]
について、

引用:
シングルコーテーションで囲うだけではなく、
変数にいったん代入して入力するか、Cstr関数のような結合処理を挟むとうまくいく
と書かれています。
文字列を直書きしても、特段CStrは不要だと思いますがいかがですか?
 
下記でも問題なく動作しました。
Sub test()
    With ActiveSheet.Buttons("ボタン 1")
        .OnAction = "'" & "20210914_01&test.xlsm" & "'" & "!MacroFunctionName"
        .Characters.Text = "マクロボタン"
    End With
End Sub

これだと失敗するのであれば、なにか別の要件があるのでしょうか。

回答
投稿日時: 21/09/14 13:52:02
投稿者: QooApp

simple様
 
ご意見ありがとうございます。
フォームボタン作成の後、そのファイルの一時保存後にRunメソッドでそのファイル内にある別の関数を呼び出して処理する作業があったので、
 
もしかするとRunで呼び出した処理の記述にシングルコーテーションつけ忘れてビルドしてしまい、
OnActionは治ったが、Runメソッドで引っかかったかもしれません。
 
すみません、すでに手元にない為、再現ができないですが僕がやらかしたのが原因と考えております。
ご指摘ありがとうございます。

投稿日時: 21/09/14 13:59:07
投稿者: simple

早速のご返事をいただきありがとうございました。
 
""で囲まれた文字列どうしを&で連結したものは文字列以外にはなりえませんので、
普通はCStrで文字列化する必要はないと思います。
 
せっかくなので、少し開けておきます。

回答
投稿日時: 21/09/14 14:08:18
投稿者: QooApp

流石に申し訳ないので当該データ奪取してきました。
 
Cstr関数無しで動かしたところ、無事正常に動きました。
やはり、Cstr関数じゃないと〜といったところでRunメソッドの設定値にシングルコーテーションを足し忘れただけのようでした。
 
お恥ずかしい話ですが、ご指摘の通りでございます。
ありがとうございます。

投稿日時: 21/09/14 14:27:38
投稿者: simple

ありがとうございました。
 
閲覧者が誤解してもいけないかと思い、コメントしました。
閉じます。