2011-06-22 7 views
9

ワークシートのデータを操作するCOM(ではなく、 VBA)を使用してExcelアドインを実装することを検討しています。シームレスでExcelアドインを取り消す:可能?

このアドインは、元に戻すスタックとシームレスに統合するために必要になります。 は、具体的には:このアドインは、データになります

  1. すべての変更は、アドインのアクションが実行される前に元に戻すの項目がスタック
  2. (標準元に戻す作用を介して)、ユーザが取り消し可能である必要があり場所を保存する必要があります

これまでのところ、私の(ただし、形式は問わない)研究では、Excelがこれを可能にするかどうかは不明です。そうでなければ、これはショーストッパーであり、アドインには値はありません。

私の質問:それは可能ですか?私は野生のガチョウの追跡に着手しているかどうかを知る必要があるので、これは「方法」の質問よりも「はい、いいえ」の質問のほうが多いです。しかし、どのようにそれを行うことができます上の任意のポインターは、ボーナスになります。

+0

あなたはこれにコンポーネントを使用していますが、私は 'add-in express'を使用しました。 – Johan

+0

はい、アドインエクスプレスを使用することを検討してください。ただし、デモアプリケーションは取り消しをサポートしておらず、取り消しスタックをクリアします。私はこれを回避する方法があるかどうかを調べようとしています。 – kes

+0

あなたは彼らに尋ねることができます、彼らのヘルプデスクは非常に敏感です。私の経験では、彼らは通常24時間以内に答えます。 – Johan

答えて

4

結局のところそうではないようです。

Application.OnUndoメソッドは、現在の元に戻すスタックをクリアし、自身を上に置きます。
アンドゥのカスタマイズに関連することはありません。

可能です。

Application.OnUndoは、現在実行中のサブためアンドゥサブ登録:明らか

sub ImMakingChanges() 
    cells(1,1).interior.color = vbyellow 
    application.onundo "Undo the stupid color", "RemoveMyStupidChanges" 
end sub 

sub RemoveMyStupidChanges() 
    cells(1,1).interior.colorindex = xlnone 
end sub 

、野生前の状態を保存し、一般的に悪夢です。しかし、ここに行く。

また、Excelが検索して呼び出すことができるように、元に戻すサブ図を一般のユーザーに表示する必要があります。

+1

Application.OnUndoは現在のスタックを保持して追加しますか? – kes

+0

@scrapdogこれは私の印象でした。私は間違っていたことが分かります。 – GSerg

0

すべて

はこれを行うことができますが、あなたはかなり関与取り消しハンドラを記述する必要があります後、それが可能であるように思えます。 はここだけでなく、あなたに教えて、リンクの正確
方法:http://www.jkp-ads.com/Articles/UndoWithVBA01.asp

Fortunatlyリンクは完全なソースコードを持っており、あなたは問題ないはずですので、それは鉄壁に見えます。
これはあなたのためにどのように/うまく聞いてうれしいです。

PS:ここオランダで同じリンクです:http://www.jkp-ads.com/Articles/UndoWithVBA01NL.asp

+0

コードを見て、完全にカスタムの取り消しキューのようなものです。これは、デフォルトの元に戻すスタックをシームレスに置き換えることも、そのスタックに統合することもできません。それが問題の全体のポイントです。 – GSerg

+0

より正確に言えば、これらのクラスのスタックを使用すると、 'Application.OnUndo'で登録できるサブを簡単に書くことができますが、ユーザのアクションはとにかく失われます。 – GSerg

1

はどうやら、これは可能ないでもオフィス2013年にそれをサポートする計画は上MSFT従業員による応答ごとに、存在しませんこのthread

関連する問題