[[20250606152832]] 『ハイパーリンク関数のようにVBA実行ボタンを作りax(エリス) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『ハイパーリンク関数のようにVBA実行ボタンを作りたい』(エリス)

HTMLで上記のように書くとスクリプトを実行できますが、

hyperlink関数のようにマクロを実行できる自作関数を作る方法はないでしょうか?

[挿入]>[ハイパーリンク]のような方法ではなく
数式バーを見れば実行するVBAがわかって、Followerlinkを都度変更しなくても別のセルに動かせるものを

下記のように書くイメージ
<a href="javascript:メッセージ('Hallo!world')">テキスト</a>
=MacroRun("メッセージ('Hallo!world')","テキスト")

下記サイトの右クリックメニューを使わないver
https://tech.hikware.com/article/20240225_02.html

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 そのようなことはできない仕様になっています。

 ユーザーが自由にセルに書けるものはユーザー定義関数に限られます。
 ユーザー定義関数は、
 ・書かれたセルの主として値の変更に限定され、
 ・そのセルの値以外の変更や、
 ・ましてや、そのセル以外の変更や入出力
   といったものは、できないことになっています。
   (正確にいうと、Excel365 による Dynamic Arrayの導入で、
   ユーザー関数が動的配列を返して、それがスピルされて隣のセルたちに表示される
   ことは認められています。
   しかし、任意の他のセルを変更することはできません。)

 これは関数型言語の世界では、一般に「副作用」と呼ばれるもので、
 その実行は抑止されるのが普通です。
 そういう縛りを入れることで、関数の機能が限定され一層理解可能なものになり、
 想定外の機能が忍び込むことを回避できるのです。

 このため、そうした他のセルの変更や入出力といったものは、
 ワークシート上の言語空間とは別に、VBAという仕組みで対応することにしている訳です。

(xyz) 2025/06/06(金) 17:22:02


 「Excel のユーザー定義関数の制限について」が参考になります。
https://support.microsoft.com/ja-jp/help/170787/description-of-limitations-of-custom-functions-in-excel
(xyz) 2025/07/10(木) 20:52:08

ある種の変化球

=HYPERLINK("C:\Users\user\Desktop\実行.vbs","VBS")

実行.vbs(保存時のファイルの種類はANSI)

MSGBOX "実行"
WScript.Quit

ウイルスがどうのこうのとアラートが出ます
(普通) 2025/07/10(木) 23:49:27


大変遅くなりまして申し訳ありません

返答したつもりになってました

(xyz)さん
ハイパーリンクからのマクロ実行は作ってたはずなんだけどなぁ、と過去作品を漁ったところ
SheetFollowHyperlink ではなく SheetSelectionChange(シート名とアドレスでIF)で実装してました
カーソルがそこを通過するだけで実行されるという無体なやり方です

(普通) さん
アイデアのひとつとして覚えておきます。ありがとうございます
(エリス) 2025/07/31(木) 18:31:00


 本来、HYPERLINK関数はリボンの中に入れるのが相応しいくらいのレベルの、
 特殊用途に限定した作り込まれた道具でしょう。
 HYPERLINK関数で作成されたリンクをクリックしても、
 FollowHyperLinkイベントは発生しません。
 HYPERLINK関数は単にリンクを作るだけに使途が限定されており、
 その影響をできるだけ少なくしようとする意図が推測されます。

 従って、HYPERLINK関数は本来の目的にだけ使うべきで、
 それで作成されたリンクにマクロ代替の機能を持ちこませようといった参照記事の方向性は、
 方向違いの議論だと思います。
 いくらハックを積み重ね、高度な技術魂を発揮しようとも、それは評価に値しないと思っています。
 私は賛成できません。

(xyz) 2025/07/31(木) 19:04:29


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.