VBA別館・Python別館
VBA セルをボタンにする(完 おまけ) - Tak
2018/09/17 (Mon) 09:18:58
sheet上のセルをダブルクリックすると、処理が出来るようにします。 セルをコマンドボタン代わりにします。
① セルA1で実験
・開発ーVBと行き
・sheet1-コードの表示
・worksheet-BeforeDoubleClickを選択
・すると次のようなcode書込みの準備が出てきます。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ここへcodeを書く
End Sub
Re: VBA セルをコマンドボタンにする - Tak
2018/09/17 (Mon) 19:51:22
② セルA1をボタンにします。
・codeを書く
・セルに適切なタイトルを付ける。 今回は「今日は何日?」と付けました。
・セルを「セルの書式設定」で好きな色・パターン・塗りつぶし効果を選ぶ
------------------------
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim adrs
adrs = Target.Address
Select Case adrs
Case "$A$1"
ActiveCell.Offset(0, 1).Select
Selection = Now
End Select
End Sub
-----------------------
・セルA1をダブルクリックすると、セルB1に今の日付・時刻を表示する「=NOW」と書く。
・ダブルクリックすると、セルB1に日付が表示される。 コマンドボタンと同様な働きをしましたね。
codeの説明は次回。
Re: VBA セルをコマンドボタンにする - Tak
2018/09/18 (Tue) 08:21:15
③ セルボタンのコードの説明
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
<--SingleClickではNGだった。
Dim adrs <--セルの変数宣言
adrs = Target.Address <--アドレス使うときの決まり文句
Select Case adrs <--Select Case ~End Selectはif~と同じだが、Select構文を使うのが良い(if文ではNGだった)
Case "$A$1" <--セルA1の場合 ($を必ずつけること)
ActiveCell.Offset(0, 1).Select <--A1の右隣の意味
Selection = Now <--現在の時刻を表示する
End Select
End Sub
--------------------------
以上がcodeの説明です。
Re: VBA セルをコマンドボタンにする - Tak
2018/09/18 (Tue) 19:52:23
④ 希望のホームページにすぐ行ける
例として二三上げました。 最後のURLは僕の「カメラ別館」へ行けます。
codeは次の通りです。 もう分かりますね。
---------------------
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim adrs
adrs = Target.Address
Select Case adrs
Case "$A$1"
ActiveCell.Offset(0, 1).Select
Selection = Now
Case "$A$2"
Shell "EXPLORER.EXE https://www.nikkei.com/"
Case "$A$3"
Shell "EXPLORER.EXE https://www.sankei.com/"
Case "$A$4"
Shell "EXPLORER.EXE https://kumasan2016.bbs.fc2.com/"
End Select
End Sub
---------------------------
Shell "EXPLORER.EXE ttps://www.nikkei.com/"
これはMSのブラウザーを呼び出す規定語ですので変えないでください。
自分で使うものなので、別にセルを着飾ることは有りません。 アクセスしたいURLが沢山あるようなら、列をジャンル別にして行にこのcodeを書けば、迷わずに希望のサイトへ行けますよ。
この稿完了。
Re: VBA セルをコマンドボタンにする(完) - Tak
2018/09/20 (Thu) 08:47:10
⑤ おまけ
MSのブラウザーの代わりに、GoogleのChromeを使いたい人のためにcodeを載せておきます。
-----------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim URL As Variant
Set URL = CreateObject("WScript.Shell")
Dim adrs
adrs = Target.Address
Select Case adrs
Case "$A$1"
ActiveCell.Offset(0, 1).Select
Selection = Now
Case "$A$2"
URL.Run ("chrome.exe https://www.nikkei.com/")
Case "$A$3"
URL.Run ("chrome.exe https://www.sankei.com/")
Case "$A$4"
URL.Run ("chrome.exe https://kumasan2016.bbs.fc2.com/")
End Select
End Sub
---------------------------
上記の様に以下を追加すればOKです。
Dim URL As Variant
Set URL = CreateObject("WScript.Shell")
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・
URL.Run ("chrome.exe https://kumasan2016.bbs.fc2.com/")
・・・・・・・・・・・・・・・・・
Good luck!