悩んでいるブログの方向性のひとつに
職業訓練で習ってない、関係もあまりない内容を書いてよいかがあります。
ブログのタイトルがタイトルだけに……。
VBAならいっぱいネタがあるのですけれども。
選択肢はこんなかんじ。
- 気にせず書く
- もう一つブログを作る
- ブログのタイトルをIT雑記系に変更しちゃう
あまり深入りしない程度に気になったのだけ、とりあえず書いてみます。
今回はこちらのお題に便乗させていただきます。
記載されてるコードがよくわからなくて悔しかったので
わたしならどう作るかなーって考えてみました。
動作はこんなかんじ
クリックした瞬間に(*)がぶっ飛んでちょっとした感動があります。
思いついた(思い出した)方法は2つです。
InStrで"(“の場所を特定。Left関数で抽出(こっちは複数かっこに対応できません)
Replaceメソッドのワイルドカードを利用。
gifの動作はreplaceのほうです。
コードはこちら
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim obj For Each obj In Selection ''Replaceメソッドを使う-------- obj.Replace what:="(*)", Replacement:="" ''---------------------------- ''InStrを使う------------------ 'ifで分岐しないとエラーでます。 'If InStr(obj.Value, "(") > 0 Then 'obj.Value = Left(obj.Value, InStr(obj.Value, "(") - 1) 'End If ''------------------------------ Next End Sub
Sheet1を右クリック>コード表示>WorksheetをSelectionChange
ここに貼り付けると利用できます。(シートのとこに全コピーでもおっけー)
すぐ思いついたのはInStrですねー。そして、存在しないとエラー出すのをわすれて
あわててifを付け足しました←
Replaceの注意点は、Replace関数はワイルドカード使えません
RangeオブジェのReplaceメソッドは使えます。
ぉぉぉ! 昔はこの説明じゃ何いってるかわからなかった!
Rangeクラス(オブジェクト?)メソッドを作った人に感謝!とか言えてしまいます。
1行で済みますし、なんかかっこいいのですが、
引数がいっぱいあって正直よくわかりません
gifのとおり動作がなんとなく気持ちいいです。
VBAerが魔法使いのように思われる所以ですね!