今回はワークシートに転記された医薬品情報を削除するコードを書いていきましょう。

 

間違って登録した場合は当然削除が必要になります。

 

具体的にはfrmInputの削除ボタンを押すと、印刷シートの該当する医薬品情報のセルを空欄にするというものです。

 

それではいきましょう。

スポンサーリンク

ワークシートの医薬品情報の削除

vba5-10-1まずは削除ボタンをダブルクリック。又は右クリックからコードの表示。

 

登録の場合は特別必要ありませんが、削除の場合は「本当に削除していいの?」の確認メッセージを表示させます。

 

医薬品の修正・削除画面でやりましたね。今回はそれをちょっとだけ応用します。

 

vba5-10-2

Dim Msg As String, title As String, i As Integer
i = TabStrip.Value + 1Msg = “No” & i & “に入力されたデータを削除します。よろしいですか?”
title = “医薬品データ削除の確認”Dim res As Integer
res = MsgBox(Msg, vbYesNo + vbExclamation + vbDefaultButton2, title)
If res <> vbYes Then Exit Sub

こんな感じで書いてみました。解説していきます。

 

Dim Msg As String, title As String, i As Integer

「変数Msgと変数titleを文字列と、変数iは整数と宣言する。」

 

i = TabStrip.Value + 1

「変数iにはタブストリップの値+1の値を入れる。」この理由は下を見ればわかります。

 

Msg = “No” & i & “に入力されたデータを削除します。よろしいですか?”

「変数Msgには=の右側の文字列を入れる。その文字列とは”No+変数iに入力されたデータを削除します。よろしいですか?”とする。」

 

今までは文章を入れるだけだったので=の右側は””で囲んでその中に文章を書けばよかったのですが、今回は変数iが入っています。

 

その場合は“文字列”& 変数i &”文字列”のように書きます。

 

変数には””を付けないことを知っておいてください。Noはタブの番号。例えばタブ1を開いている場合、タブストリップの値は0ですね。

 

つまりタブストップの値に1を足せば、タブの表示(No1)と整合性がとれるというわけです。

 

もし

i = TabStrip.Value + 1

の右側の+1がなければ、タブNo1が選択されている時に削除ボタンを押すと…「No0(ゼロ)に入力されたデータを削除します。よろしいですか?」と表示されてしまいます。

 

その後のメッセージの表示や、初期選択ボタンについては何回もやっているので解説は省略させて頂きます。

 

さて次に何をすればいいでしょうか?

 

  1. 医薬品情報のテキストボックスの削除
  2. コンボボックスの削除
  3. 印刷シートの医薬品情報を削除

という流れでいきたいと思います。

スポンサーリンク

医薬品情報の一括削除方法

vba5-10-3ユーザーフォーム上の医薬品情報を削除するのは上の画像のように書けばできます。これでも全然いいんですが、この前使った方法を思い出してみましょう。

 

今回ユーザーフォームには医薬品情報以外にもテキストボックスがたくさん配置されています。

 

つまりテキストボックスを一括指定して削除すると、患者情報や診療科、病棟なども削除されてしまいます。

 

そのためオブジェクト名で削除する(空欄にする)コントロールを指定するのがいいでしょう。

 

前にtxtのtを削除したのを覚えていますか?今回も同じように行います。一部のテキストボックスのtxtの2個目のtを削除しましょう。

 

上の画像の赤枠で囲った部分を参考にしてください。

 

テキストボックスを一括して空欄にするコードは以前書きました。覚えていますか?

 

vba5-10-5frmDCorrectのコードを表示。

 

vba5-10-6frmDCorrectの検索ボタンを押した時のコードをコピーしてしまいましょう。

 

vba5-10-7戻って貼り付ければOK。残っている処理は「印刷シートの医薬品情報を削除する」ですよね。

 

これめちゃくちゃ簡単です。前の講座でやったコードがそのまま使えます。では登録ボタンのコードを見て下さい。

 

vba5-10-8frmInputのコードを表示。

 

vba5-10-9そのまま全部コピーします。最初のPrivate Sub btnRegist_Click()と最後のEnd Subは不要です。

 

これをそのまま先ほどのコードの下に貼り付けて下さい。ちょうどその前に医薬品情報のテキストボックスを空欄にしているので、このコードを使い回せるんですよね。

 

これで完成といきたいところですが、一部コードを修正する必要があります。

 

スピンボタンの増減を表示するテキストボックス、txPage1とtxPage2、実施日を表示するtxJissibiですね。

 

vba5-10-10txtから2個目のtを取ります。

 

vba5-10-11同じくtxtから2個目のtを取ります。これで完成ですね。

 

それでは今回は以上で終了とします。お疲れ様でした。

 

次回は印刷シートに転記した医薬品情報を全て削除するコードを書いていきます。

>>Excel VBA講座 目次はこちら