2016-08-08 4 views
1

ローカル薬局の四半期患者レポートを自動化しようとしています。自動化の1つの部分は、関連情報のフォームに行くレポートの表紙に患者追加ボタンです。フォーム上の「OK」ボタンは、情報を受け取り、患者の名前に従って新しいシートにフォーマットします。このボタンは、新しく作成された2つのボタンを患者シートに追加します。これは、削除および編集ボタンです。ボタンを作成して配置することはできますが、各ページの新しいオブジェクトと見なされるため、ボタンにクリックイベントを割り当てる方法はありません。VBAを使用してシートにボタンを追加し、別のボタンにクリックイベントを割り当てる方法

ボタンのメインコードをブック自体に移動しました。ボタンのクリックイベントに入れる必要があるのは、そのメソッドへの呼び出しですが、新しいボタンのクリックにアクセスする方法は見つかりません私はVBAを使ってイベントを呼び出す必要があるので、VBA自体でメソッドを呼び出す必要があるため、マクロを使用することはできません(公正な注釈は、Excelマクロに精通しているわけではありません。それも使えます)。ここで

Dim btn As OLEObject 
Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False) 
With btn 
    .Name = "deletePatientButton" 
    .Object.Caption = "Delete Patient" 
    .Top = 5.25 
    .Left = 290.25 
    .Width = 75 
    .Height = 24.75 
    .PrintObject = False 

終了ワークブックコード自体に配置された削除ボタンの主な方法である:ここでは

はインスタンス化し、場所/新しいシート上の削除ボタンのサイズコードがあります(これは実際に別の検証フォームを呼び出すだけなので、これは重複している可能性がありますが、私はそれが最大のスコープを持つと想定していたので、テスト用のブックブックセクションに入れたいと思っていました)。

は最後に、ここで私は置く、または他の溶液で置き換えることができるように期待していますクリックイベントの例です。

Private Sub deletePatientButton_Click() 

    Call ThisWorkbook.mainDeleteButton(Me) 

End Sub 

すべてのヘルプは感謝よりも多くのです!

+0

[](http://stackoverflow.com/questions/4559094/how-to-add-a-button-programmatically-in-vba-next-to-some-sheet-cell-データ) – MikeT

+0

私はそのページを読んでいましたが、実際にはどのボタンを使用していたとしてもボタンの.onActionプロパティを登録することができませんでした。それが変わったのか不思議でしたが、別の理由でうまくいかなかったのかもしれません。 –

答えて

1

ワークシートモジュール(see this post)にイベントコードをプログラムで追加することは可能です。ただし、イベント・コードがすでに入っているテンプレート・ワークシートにボタンを置く方が簡単です。テンプレートを新しいシートにコピーして名前を変更し、患者データを追加するだけです。

+0

うわー、私はなぜ私が頭の中に蔓延していたのかわからないテンプレートは、それらに固有のVBAコードを持つことができませんでした。これは私のプロジェクト全体をより効率的にするはずです。 –

関連する問題