ラベル VBA の投稿を表示しています。 すべての投稿を表示
ラベル VBA の投稿を表示しています。 すべての投稿を表示

VBA:Hyperlinkクリックでコードを実行する方法


Hyperlinkクリックでコードを実行する方法

Excelに埋め込んだHyperlinkをクリックした際にVBAの処理を実行させたい。

これには "Worksheet_FollowHyperlink" イベントが使えそう。

Worksheet_FollowHyperlink イベント

Hyperlinkをクリックするとイベントが発生する
Hyperlinkの情報は引数 Target にて取得できる

・クリックしたセルの位置 … Target.Range.Address


VBA:HyperLinkを設定する方法


VBAでHyperLinkを設定する方法

以下の命令で設定できる。
Worksheet.Hyperlinks.Add(設定先のセルアドレス, URLなど, サブアドレス, ツールチップ, 表示名)
Me.Hyperlinks.Add でも可

設定先のセルアドレス: Range("$A$1") など
URLなど: "https://www.google.com" など
URLでなく、Excel内のセルに移動する場合などは "" を指定
サブアドレス: "Sheet1:$A$1" など
ハイパーリンク先のWEBページにあるブックマークまたは、ワークシートのジャンプ先のセル
ツールチップ:Hyperlink上にマウスポイントした際に表示する文字列
表示名:セルに設定する文字列


VBA:Changeイベントの引数Targetより行番号・列番号を取得する

Changeイベントの引数Targetより行番号・列番号を取得する

Excelに何等かの文字入力したことを感知するには?
Worksheet_Changeイベントを使う。
引数 Target には、どのセルで入力した?の情報が入ってくる。
例えば Target.Address を参照すれば、"$CB$5" のような絶対アドレスが返ってくる。

Targetより行番号を求めるには Target.Row でわかる。
列番号を求めるには Target.Column でわかる。が、取得できるのは "番号" である。

Targetより列名を取得する

Targetより "1"、"27" のような番号でなく、"A"、"AA" のような列名で取得したい。
手っ取り早いのは "$" で文字列分割する方法
Split(Target.Address, "$")(1)
これで列名が取得できる。

入力した文字列を取得するには?

Target.Value で取得できる。


Excel VBA:選択範囲を取得するには?


Excel VBA:選択範囲を取得するには?

Excelで範囲指定したアドレス(セル位置)をExcel VBAで取得するには?

選択範囲は Selection というオブジェクト?で操作できる。
さらに選択したアドレスを取得するには Selection.Address で取得できる模様。
例えば単純に範囲した場合は "$A$1:$B$2" のようなアドレスが返る。

[CTRL]キーで飛び飛びの範囲を指定した場合は "$A$1:$B$2,$B$4,$C$5:$D$6,$D$8,$E$9:$F$10,$F$12,$G$13:$H$14,$I$15" のように "," 区切りですべての選択が返るようである。

これらを取得するには・・・
(1) arr = Split(Selection.Address,",")で、すべての選択値を配列に分解

(2) For i = LBound(arr) To UBound(arr) で配列の中身をチェック

(3) arr(i) に ":" が含まれていれば範囲指定である

という感じでどうでしょう?


VBA, Excel

その他の記事