VBA-2 セルからリンクを張る

マクロの記録でリンクを張るコードを取得
1.
2.
3.
4.
5.
6.
7.
8.
'セルA1にリンクを設定する
Sub setLink()
    Cells(1, 1).Select
    ActiveSheet.Hyperlinks.Add _
        Anchor:=Selection, _
        Address:="<a href="http://tekitou.link" target="_blank" rel="noopener">http://tekitou.link", _
        TextToDisplay:="表示する文字列"
End Sub

定数部分を変数に変更
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
'アドレスはセルに記述してあるものとする
Sub setLink()
    Dim i, j As Integer
    Dim link As String
    
    i = 1
    j = 1
    Cells(i, j).Select
    link = Cells(i, j).Value
    ActiveSheet.Hyperlinks.Add _
        Anchor:=Selection, _
        Address:=link, _
        TextToDisplay:=link
End Sub

後は、i,jをループなんかで変化させればいいです。

リンクを解除する
1.
2.
3.
4.
Sub delLink()
    Sheets(1).Activate       'シート1を選択
    Cells.Hyperlinks.Delete  'シート内の全てのリンクを解除
End Sub

リンクを解除するとセルの枠やら書式やらもいっしょに解除されます。
書式は、文字色と下線を解除するため仕方がないと思いますが、なんで、枠も?


オブジェクト指向とか、全く理解できていないので、プロパティとか、メソッドとか、クラスとか、どういったものかのかが全くわかりません。

フォルダ構造のみをコピーする

フォルダ構造だけをコピーしたいときがあります。
普通にコピーすると中身も一緒にコピーされるので時間がかかるし、コピーした後で中身を消す必要があるので面倒です。

そんなときはコマンドプロンプト。
xcopy コピー元 コピー先 /e /t

オプションの
/e は空のサブディレクトリもコピーする
/t はディレクトリのみコピーする

てかこれ、ジャンルはプログラム?
まあ、いいや。

其は誰が涙か(ソハ タガ ナミダカ)

その日雪が降り
世界を白く染める

降り積もるその雪は
世界がいつもと違うことを物語る

電車

はしるはしる電車がはしる
かたんことんと電車がはしる
十人十色のおもい乗せ

にこ動 VOCALOID-SONG

わPさんのMEIKOが歌うSwallowtail Butterfly ~あいのうた~ (原曲はこっち)
最近のお気に入りです。

最近、リンちゃんの歌声が普通に聞こえるようになったのですが、
それはきっと、作者さんの技術が上がっているからです。
きっと。

Catch the Windとか
Promiseとか
TからSへとか
mirrorとか
ONPAとか
リンリンリンってしてくりん♪
なんかもいい感じです。

りんりん りんりん りんりん りんりん りんりん りんりん みかん♪

API-11 エディットボックスで全選択

エディットボックスが選択されたときに全ての文字が選択されるようにしたくて、EM_SETSELメッセージを送ったけれどうまくいきません。

サブクラス化すればできるらしいのですが、エディットボックスの数が多くなると面倒そうです。
 EM_SETFOCUSが来たらPostMessageで自作メッセージを送る
 自作メッセージが来たらSetFocus
という方法を見つけました。
http://homepage1.nifty.com/MADIA/vc/vc_bbs/200606/200606_06060046.html

SendMessageだったのがいけなかったのかと思い、
EM_SETFOCUSが来たらPostMessage
1.
2.
3.
case EN_SETFOCUS:
        PostMessage(GetFocus(), EM_SETSEL, 0, -1);
        break;
で試してみたところ、期待通りに動いてくれました。

雑誌 日経ソフトウェア

日経ソフトウェア

連載記事「こちらユーザー・インタフェース研究所」が面白いです。
インターフェースとは、とか
使いにくいCUI,GUIの例とか
アイコンについて、とか
配置について、など
使いやすいソフトを作るうえで参考になります。


以下、ちょっとした意見


お菓子の紹介

頭脳労働に必要なものは何だ?
それは糖分だ!

てなわけで、お気に入りのお菓子の紹介。

名糖 アルファベットチョコレート


常に冷蔵庫に入ってます。

Kasugai 5連グミ100
グミの中では一番好きです。
実家の方のスーパーでは売っているのに、こっちでは探しても見つからない。
会社のHPに通販がありました。
しかも、送料無料・代金引換手数料も会社負担


流れを読むなら、センター前くらいに投稿するのがよかったですね。

にこ動 VOCALOID-SONG ゲーム

ツイン・ストライクス
AEGISさんの最新作。
お気に入りの作者さんです。

ストラトスフィア -2008 Remix-
t.Komineさんの代表作ストラトスフィアを本人がリミックス。
tkomine.comにてCD情報。


気功砲のロックマン2完結
攻撃すると自分のライフが減る 回復アイテムは出てこない 常に残機0
というルールでプレイ。
始め、クリアできないだろうと思ってました。ごめんなさい。
作者さん、お疲れ様でした。

API-9 ダイアログのコントロール

Tabストップ
ダイアログウィンドウの中のコントロールに対してTab移動ができない。
普通にWindowを作って、そこからダイアログを作成した場合はTab移動できる。

ダイアログに来たメッセージかを判断するIsDialogMessageをメッセージループに書くとTab移動ができるようになった。


WM_COMMAND
なぜか、エディットコントロールだけ、選択時にWM_COMMANDメッセージが複数回やってくる。
ラジオボタンとか、プッシュボタンとかはちゃんと1回だけなのに。


ダイアログウィンドウの初期化
普通ダイアログを作ったときはWM_INITDIALOGメッセージがやってくる。
だが、ダイアログウィンドウの場合、やってくるのはWindowと同じWM_CREATEメッセージ。

ここで初期化のためにGetDlgItemでコントロ-ルのハンドルを取得しようとするが、できない。
Windowからダイアログを作った場合はちゃんと取得できている。
ならばと、ハンドルを取得しなくてもコントロールを操作できるSendDlgItemMessageを使ってみたが、反応しない。

コントロールのプッシュボタンを押したときに同じことをやってみると、GetDlgItemもSendDlgItemMessageもうまくいく。
が、これではエディットボックスの読込みはできても、ラジオボタンの初期化は結局できないまま。

ちなみに、
WM_CREATEはCreateWindowがreturnする前に届く
WM_INITDIALOGはダイアログが表示される前に届く
というタイミングの違いがある。

試しにCreateWindowがreturnした後に適当なメッセージ(まあWM_INITDIALOGが妥当だと思う。どうせシステムからは送られて来ないし)を送って、そこで初期化してみるとうまくいった。

考えてみると、この方法ならWM_INITDIALOGメッセージを処理しているので、そのまま通常のダイアログプロシージャにも使える。


なぜか、wsprintfが%fを正しく処理してくれない。
アクセラレータも動作しない。


wsprintfについて
そもそもwsprintfは小数点数を扱えないみたいです。
sprintfなどprintf系の関数を使うのがいいです。

MSDNライブラリ