つらつら Excel VBA

私の備忘録です。

Interior.ColorとInterior.ColorIndex

Interior.Colorでは背景色未設定が判別できないので、以下のようにする。

If Interior.ColorIndex=xlNone Then

 

最悪、16777215で比較するとできる

偶数、奇数行だけ消したい

=mod(row(),2)

後はオートフィルタでOK

フリガナ削除

For Each rng In Selection
    rng.Characters.PhoneticCharacters = ""
Next rng

漢字の並べ替えに注意

50音順の並べ替えが何故か期待通りに動かない!フリガナを疑いましょう。

 

自分でセルに入力した文字、コピペした文字、フリガナの有無で並べ替え結果が変わります!!

 

フリガナ嫌い!!!!

Interior.ColorIndex

背景色をコピーする時、結果が異なるのは仕様なのだろうか

r.Interior.ColorIndex = rr.Interior.ColorIndex

r.Interior.Color = rr.Interior.Color

私は下を使う事にする

 

ユーザー定義書式

無理矢理文字を表示させたい時

 

ユーザー定義書式に「@"文字"」と入力

セルに「なんたら」と入力

「なんたら文字」と表示される

この場合、セル未入力だと何も表示されない

 

 

完全に非表示にしたい場合

 

ユーザー定義書式にセミコロンを3個入力「;;;」

何を入力しても非表示になる!

実際には入力されてるので計算とか問題無し

 

上記捕捉

プラスの数値;マイナスの数値;0;文字

 

ランダム値を重複なしで取得

 

Dim DIC As Object, mKey

Dim i As Integer, rd As Integer, no As Integer
Set DIC = CreateObject("Scripting.Dictionary")
For i = 1 To 52 '連想配列の作成。
    DIC.Add i, i
Next

For i = 52 To 1 Step -1
    rd = getRandom(1, i) '1~iの範囲でランダム値を得る自作関数。これは自分で作る!
    mKey = DIC.keys
    no = mKey(rd - 1) 'ここで得た数値を使用する。

    'Debug.Print "i=" & i & ",rd=" & rd & ",no=" & no
    DIC.Remove no '使用した数値を削除。

Next

※使用例としてはトランプ。もっと良い方法があると思います。