午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

午後ツールその51、IMEオフと条件付き書式セル選択ボタンとそのマクロ

前回
午後ツールその50、午後のパレットその他更新 ( Windows ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14639262.html
で追加した午後ツールのボタン
セルに入力規則のIMEオフを設定するボタンとそのマクロ
条件付き書式が設定されているセルを選択するボタンとそのマクロ
 
 
 
選択セル範囲にIMEオフを設定する
イメージ 1
よく使う設定なのに、この操作がめんどくさいので
 
イメージ 2
ボタン付けた
今思ったけどドロップダウンリストじゃなくて専用のボタンのほうがいいかなあ
 
 
 
確認ボタン
何処かに設定したけど、どこに設定したか忘れた入力規則を解除したい時用かなあ

入力規則を設定したセルの確認、シート全体
イメージ 3
D列にIMEオフを設定してあるときに
リストの確認→入力規則確認(シート)を実行すると…
 
イメージ 4
D列が選択状態になって
入力規則が設定されているセル数とエリア数と場所が表示される
 
 
選択セル範囲のなかで入力規則が設定されているセルを選択する
イメージ 5
C4:E6を選択してから
リストの確認→入力規則確認(選択セル)を実行すると…
 
イメージ 6
D4:D6が選択状態になる
 

 
解除(削除)ボタン、シート全体
イメージ 7
入力規則解除(シート)で…
イメージ 8
確認でOKを押すとシート全体のセルの入力規則が解除される
 
確認ボタン押してみると
イメージ 9
全部消えているのがわかる
 
 
解除(削除)ボタン、選択セル範囲
イメージ 10
D列にIMEオフが設定されているときに
C4:E6を選択した状態で
解除→入力規則解除(選択セル)を押すと…
 
イメージ 11
確認が出るのでOK押すとD4:D6の入力規則が解除される
解除しました!とか出ないからわかりにくいかな
 
確認すると
イメージ 12
期待通りの結果になっているのがわかる
 

 
条件付き書式確認
イメージ 13
ホーム→条件付き書式で設定したセルを確認(選択)するのが
 
イメージ 14
条件付き書式確認ボタン(そのまま)
 
イメージ 15
C4:E6に条件付き書式が設定されている
確認ボタン押すと…
 
イメージ 16
条件付き書式が設定されているセルが選択されて
セル数、エリア数、アドレスが表示される
入力規則の確認ボタンと同じ使い方になっている
これもどこに条件付き書式を設定したのか忘れた時用かな
 
 
ここで気づいたのが
セル以外を選択した状態でIMEオフボタンを押すとエラーになる
選択しているのがセルかどうか確認するのを書き忘れていた
↓の2行目を書き忘れていた
Sub 選択範囲のIMEオフ()
    If TypeName(Selection) <> "Range" Then Exit Sub
    With Selection.Validation
        .Delete 'これも必須…みたい
        .add Type:=xlValidateInputOnly '必須、入力規則の種類、今回はすべての値
        .IMEMode = xlIMEModeOff 'これだけだとエラーになる
    End With
End Sub

Sub 入力規則のあるセルを選択_シート全体()
'    If CheckVisibleWindows = False Then Exit Sub
    On Error GoTo myErr
    Set s = ActiveSheet
    If s Is Nothing Then
        MsgBox "ブックを開いてから実行してください"
        Exit Sub
    End If
'    Cells.SpecialCells(xlCellTypeAllValidation).Select
    Dim r As Range
    Set r = Cells.SpecialCells(xlCellTypeAllValidation)
    r.Select
    Dim a As Areas: Set a = r.Areas
    Dim str As String
    str = "このシートで入力規則が設定されているセルを選択しました" & vbNewLine & _
    "セル数:" & r.Cells.CountLarge & vbNewLine & _
        "エリア数:" & a.Count & vbNewLine
    
    For i = 1 To a.Count
        str = str & a.Item(i).Address & vbNewLine
    Next
    MsgBox prompt:=str, Title:="このシートで入力規則が設定されているセル"
    Exit Sub
myErr:
    MsgBox "このシートに入力規則が設定されているセルは見つかりませんでした"
End Sub
 
 
 
参照したところ
VBAで入力規則の設定されたセルを選択する:エクセルマクロ・Excel VBAの使い方-Rangeオブジェクト
http://www.relief.jp/itnote/archives/excel-vba-select-cells-validation.php
ありがとうございます
ここを見る前はセルを一つ一つ確認しようとしていたけど
Cells.SpecialCells(xlCellTypeAllValidation)
たったこれだけでよかったw
 
同じように条件付き書式のあるセルの取得も
Cells.SpecialCells(xlCellTypeAllFormatConditions)
なのでコードもほとんど一緒になっている
Sub 条件付き書式のあるセルを選択_シート全体(control As IRibbonControl)
    If CheckVisibleWindows = False Then Exit Sub
    On Error GoTo myErr
    Set s = ActiveSheet
    If s Is Nothing Then
        MsgBox "ブックを開いてから実行してください"
        Exit Sub
    End If

    Dim r As Range
    Set r = Cells.SpecialCells(xlCellTypeAllFormatConditions)
    r.Select
    Dim a As Areas: Set a = r.Areas
    Dim str As String
    str = "このシートで条件付き書式が設定されているセルを選択しました" & vbNewLine & _
    "セル数:" & r.Cells.CountLarge & vbNewLine & _
        "エリア数:" & a.Count & vbNewLine
    
    For i = 1 To a.Count
        str = str & a.Item(i).Address & vbNewLine
    Next
    MsgBox prompt:=str, Title:="このシートで条件付き書式が設定されているセル"
    Exit Sub
myErr:
    MsgBox "このシートに条件付き書式が設定されているセルは見つかりませんでした"
End Sub
 
 
 
関連記事
午後ツールその52、マイパレットの色の一括書き出しと登録機能をつけた ( Windows ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14645647.html