Kazuki.io

プログラミングやITガジェットなどの備忘録だよ。人の役に立てばいいな。

VBA セル選択範囲を取得する

VBAでセルの選択範囲に対する処理を行うことが多々あったので、セルの選択範囲から行番号と列番号を取得するコードをメモしておく

'フィルタ後に表示されている行を表示
    Dim i As Integer, j As Integer, k As Long
    Dim rang As Range
    Dim member() As Long
    '列の位置はB固定になっているので、ここを変える
    ReDim member(Range("B1", Range("B" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Count)
    
    For Each rang In Range("B1", Range("B" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible).Rows
        member(i) = rang.Row
        i = i + 1
    Next rang
    
    With Selection
    For i = 1 To .Areas.Count
    For j = 1 To .Areas(i).Rows.Count
    Dim selectedCells As Range
    Set selectedCells = .Areas(i).Rows(j)

    For k = 0 To UBound(member)
    If member(k) = selectedCells.Row Then         
        Dim r As Long: r = selectedCells.Row
        Dim c As Long: c = selectedCells.Column
        Debug.Print "Row:" & r & " Col:" & c
        'ここに処理を書く
                        
                        
    End If
    Next k
    Next j
    Next i
    End With

HHKB Professional Hybrid Type-S 雪 を無刻印にした


HHKBの雪モデルをギリギリで購入してはや1ヶ月程度が経とうとしています。おそらく自分が買ったものが1250台目だと思っています。
(購入後amazonのサイトを見たら販売停止となっていたため)

 

HHKBはLite2, Classic(白), Hybrid Type-S(墨)に続き4代目となります
完全に沼ですね。

追加抽選販売された無刻印キートップが12/24にPFUから届き、早速つけてみました。(なんとも美しい)

f:id:kazukisaito:20211225170330j:plain

発送日を勘違いしており、希望日に届かないときは相当焦りましたよ。

ップが今日届くはずなんだけど、届かない… さっそく明日から仕事で使おうと思っていただけに残念。届け"希望"日時だから希望通りにならなかっただけだよね?]

 

話はすこし変わって、過去に通常の白モデルを英語配列の無刻印キートップを2セットも買って無刻印化したことがあります。
このときはEnterキーと左Shiftキーは英語配列のキートップとサイズが違うため刻印ありになっており惜しい。

f:id:kazukisaito:20211225170648j:plain

 

雪モデルでは日本語配列の無刻印キートップが用意されているのでこれは嬉しいですね。

しかし、実はこの白モデル…大金はたいてキートップを2セットも購入したのに刻印ありに戻しています。やはり記号がどうしても覚えられない…

そんな苦い思い出を軽く忘れて、今回雪のキートップを購入したのです。

 

2022年の目標は「HHKBの無刻印を使いこなすこと」としておきましょうか。
記号の覚え方何かないもんですかね。

 

HHKBで数値入力を楽にする方法

こんにちは。

HHKBを使い初めて1年程度が経ちました。
HHKBは打鍵感や打鍵音が素晴らしく、今ではHHKB以外のキーボードは使えない手になってしまいました。

HHKBはとても素晴らしいキーボードですが、使用期間1年を通じてどうしても解決できなかったのが数字入力

テンキーレスのキーボードどれに対しても当てはまるのですが、Esc行のキーからしか入力ができません。

私の力量不足でもありますが、ブランドタッチでこの範囲の入力はどうしてもできませんでした。

f:id:kazukisaito:20211022225312p:plain

 

すこし話題は変わり…

HHKBというキーボードはFnキーを押下したままで入力すると1つのキーで別の動作をさせることができます。
例えばFn+1でF1になったり、Fn+LでPage Upになったり…

「キーボード上のセカンドレイヤーを使用する」という感覚でしょうか。

f:id:kazukisaito:20211022225631p:plain

 

そこで思いついたのが別のレイヤーを更に作り、既存のキー配列上にテンキーを作ってしまえば?と思ったのです。

 

私は日頃からAutoHotkeyというフリーツールを使っています。

www.autohotkey.com

ここでは説明を省きますが、自由にショートカットキーを作ることができるツールです。

私はAutoHotkeyでよく「変換」「無変換」のキー + 何かのキー で動作するショートカットを使っています。この2つのキーは親指で押下しやすいためです。日本語配列のキーボードを選んでいる理由でもあります。

そして今回は

「無変換」+ M = 1

「無変換」+ < = 2

...

「無変換」 + O = 9

 という割当にしました。

 

f:id:kazukisaito:20211022230329p:plain

テンキーっぽい配列になっています。

 

ちなみにAutoHotkeyのスクリプトは以下のように記載しました。

そのままコピペで使えると思います。

;----------------------
;Key Map Number
;----------------------
vk1D & /::Send,0
vk1D & M::Send,1
vk1D & vkBC::Send,2
vk1D & .::Send,3
vk1D & J::Send,4
vk1D & K::Send,5
vk1D & L::Send,6
vk1D & U::Send,7
vk1D & I::Send,8
vk1D & O::Send,9

 

 

個人的にはこれが私の最適解なのですが、実はまだ課題があります。

  • 0入力の位置。
  • ホームポジションでないと入力できない
  • AutoHotkeyが必要。

HHKBにはキーマップツールがあり、キーマップを変更することができます。よって

Fn + M = 1とすることも可能ですが、会社ではHHKB Professional JPを使っているため、このキーマップツールが使えないためにAutoHotkeyとの組み合わせとしました。

 

片手で入力できるようにしたいのならば無変換キーではなく、変換キーを使用してもよいかもしれませんね。(私は変換キー+JKLIで方向キーを割り当てています)

f:id:kazukisaito:20211022231444p:plain

 

以上