[[20090318215036]] 『どのセルも選択されていない状態』(shut) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『どのセルも選択されていない状態』(shut)
 現在選択されているセルを選択解除して、どのセルも選択されていない状態にするに は、どんなコードがあるのでしょうか?
 調べたところ
 DataGridViewコントロールのClearSelectionを使用するとあったのですが、使用方法が分かりません。


 >現在選択されているセルを選択解除して、
 >どのセルも選択されていない状態にするに は、どんなコードがあるのでしょうか?

 別のオブジェクトを配置して(例えば、アートシェイプやコマンドボタン)して、それを
                                     ↑オートシェイプでした
 選択すれば、良いですよね?

 どのセルも選択されていないように

見せるには・・・、

 Sub sample()
    With Application.CommandBars.FindControl(, 182)
       If .State = 0 Then .Execute
    End With
 End Sub

 但し、Excel2007では試せません、Excel2002で確認

 ichinose@5:47訂正


 Excel 2007 でも動作しました。
 (Mook)

確かにどのセルも選択されていないように見せる事は出来ました。
しかし残ってるのはやはりこちらの使い方では問題がある様です。
 もともとやりたいのは、

 コントロールキーを押しながら、離れたセルを複数選択したいのですが、
 マクロを起動する時にA1が選択されていたとします。 
 すると、【コントロールキーを押しながらセルを選択して下さい。】とメッセージを出すと
 A1が含まれて選択されてしまいます。
 一個目のセルを選択するときにコントロールキーを押さないでクリックするのが通常ですが、
 いろんな人が使うので、誤操作防止したいのです。

 その為にどこのセルも選択されていない状態を作りたいのです。
 どこのセルも選択されていない状態が無理ならば、

 1)MsgBox "セルを一個選択して下さい。"
 2)MsgBox "セルを複数選択して下さい。コントロールキーを押しながら"
 となり、クリック数が増え煩雑です。
 何か良い方法はないでしょうか?
 議題が違ってくるかもしれませんが。
 (shut)

 根本的な解決ではありませんが、

 > 1)MsgBox "セルを一個選択して下さい。"
 > 2)MsgBox "セルを複数選択して下さい。コントロールキーを押しながら"

 ではなくて、
 1)MsgBox "セルを一個選択して下さい。次にコントロールキーを押しながら、セルを複数選択して下さい。"

 みたいなことではではだめでしょうか?
 又は、最初にダミーのセルを選択しておき、
 マクロの処理ではそのダミーのセル以外で処理をさせるとか。
 (sato)


 やりようだと思いますね。(2007で動くか解りません。)
 最初、こんな感じでIV65536(EX2003までなら)でもを選択しておけば、
 選択されているセルが、そう見える物ではないと思います。

 Application.ScreenUpdating = False
 UPP = ActiveWindow.ScrollRow
 LeF = ActiveWindow.ScrollColumn
 Cells(Rows.Count, Columns.Count).Select
 ActiveWindow.SmallScroll Up:=ActiveWindow.ScrollRow - UPP
 ActiveWindow.SmallScroll toLeft:=ActiveWindow.ScrollColumn - LeF
 Application.ScreenUpdating = True

 最終的には、選択セルの1番初めのセルがIV65536だったら候補から外すとかすれば。
 最初に選択されていたセルのアドレスは、これで解ります。
 Msgbox Selection.Areas(1).Address
 BJ


 こっちの方がいいかも。BJ
 Cells(Rows.Count, Columns.Count).Select
   ↓
 Application.Goto reference:=Cells(Rows.Count, Columns.Count), scroll:=True


 >もともとやりたいのは、
 以下に記述されているバックボーンの説明を最初の投稿で記述してください!!

 Application.Inputboxメソッドを使って セル範囲を選択されば アクティブセルの事を
 意識しないで済みますよね!!

 Sub testtest()
    Dim rng As Range
    On Error Resume Next
    Set rng = Application.InputBox("セル範囲を選択してください" & vbCrLf & _
              "複数のエリアを選択したい場合は Ctrlキーを押しながらセル範囲を選択して下さい", , , , , , , 8)
    If Err.Number = 0 Then MsgBox "選択したセル範囲は、" & rng.Address
    On Error GoTo 0
 End Sub

 ichinose


ichinoseさんのコメントを見る前に、BJさん、satoさんの方法でうまくいきました。
 しかし、元々のやりたいのは、ichinoseさんの言う方法で良かったです。
 BJさん、satoさんには、回りくどい説明によりご迷惑をおかけしました。(shut)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.