半角チルダ

ExcelVBA、その他。
覚え書きや、補足資料などのスクラップブック。
end-u(1037781)

■Application.DoubleClickメソッド

2008-04-02 23:20:00 | VBA Tips
この話が出てきたら、変り種ネタももうそろそろ品切れなのである(笑
ヘルプには[DoubleClick メソッド]が載っているが、実行してもセル編集状態にならない。
BeforeDoubleClickイベントも反応しないし、実装されていないのではないか、という話がありました。
で、いろいろ試していたら以下のような事みたいです。

まず実験シートを作成します。Sub pre() 実行。

Option Explicit

Sub pre()
  Dim ws As Worksheet

  Set ws = ActiveSheet
  With Sheets.Add
    .Range("A1").Formula = "=J10"
    .Range("A3").Formula = "=SUM(" & ws.Name & "!A1:A10)"
    .Buttons.Add(100, 10, 50, 20).OnAction = "try"
    .Ovals.Add 10, 50, 50, 50
  End With
  Set ws = Nothing
End Sub
'-------------------------------------------------
Sub try()
  Application.DoubleClick
End Sub

▼結果(新規シート追加、数式設定、ボタンとシェイプ追加、ボタンにマクロ登録)



できたシートで、セルA1、A3、シェイプをそれぞれ『選択』して、Sub try() を実行してみてください。
(ボタンに登録してますが、直接実行でも可)
Application.DoubleClickメソッドが実装されている事が確認できます。

つまり、ヘルプにある
>DoubleClick メソッドは、アクティブ セルをダブルクリックする操作に相当します。
とは、
『DoubleClick メソッドは、SelectしたObjectをダブルクリックする操作に相当します。
ただし、Cellsオブジェクトについては Application.[EditDirectlyInCell プロパティ]が False の時の操作に相当します』
...といったところでしょうか。
Application.EditDirectlyInCell = False とは[ツール]-[オプション]-[編集]タブの設定で「セル内で編集する」のチェックを外した状態です。


(DoubleClick メソッド実行時には、EditDirectlyInCellをFalseにする必要はありません)

ですので、DoubleClick メソッドでセル編集状態に、と期待すると肩透かしをくらってしまうのでしょうね。
ちなみに、ピボットテーブル内セルをダブルクリックした場合は EditDirectlyInCellがTrue/False でも一緒で、その操作に相当します。

余談ですが、EditDirectlyInCell = False 時のセルダブルクリックを[マクロの記録]録ってみると意外と面白いです。
そのセルの数式によって変化します。

Sub Macro1()
  '
  'A1="=同シート内セル"の場合
  Range("A1").Select
  Selection.DirectPrecedents.Select
  '
  'A1="=同ブック他シートA1セル"の場合
  Range("A1").Select
  Application.Goto Reference:="Sheet2!RC"
  '
  'A1="=閉じたブックのシートのA1セル"の場合
  Range("A1").Select
  Workbooks.Open Filename:="D:¥test¥test.xls"
  Application.Goto Reference:="Sheet1!RC"
End Sub

Comment    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ■結合セル行高調整 | TOP | ■隠しオブジェクト »
最新の画像もっと見る

Recent Entries | VBA Tips