この話が出てきたら、変り種ネタももうそろそろ品切れなのである(笑
ヘルプには[DoubleClick メソッド]が載っているが、実行してもセル編集状態にならない。
BeforeDoubleClickイベントも反応しないし、実装されていないのではないか、という話がありました。
で、いろいろ試していたら以下のような事みたいです。
まず実験シートを作成します。Sub pre() 実行。
▼結果(新規シート追加、数式設定、ボタンとシェイプ追加、ボタンにマクロ登録)
できたシートで、セル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 時のセルダブルクリックを[マクロの記録]録ってみると意外と面白いです。
そのセルの数式によって変化します。
ヘルプには[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