てぃーだブログ › S・M・C (Simple.Macro.Create) ~エクセルマクロ日記~ › VBA:通所介護事業所(デイサービス)の事務改善(8)

2013年04月26日

VBA:通所介護事業所(デイサービス)の事務改善(8)

前回からの続きです・・・が、タイトルをかえました。

介護事業所(デイサービス)で作られる、介護予防実績報告書の事務改善について書いています。

3日の仕事がわずか5分に!夢のような取り組みです。

今日は、プログラムを作る上でのワンポイントです。

プログラムを実際動かしてみると、画面のちらつきが気になる時があります。

今回もほんの一瞬ですが、対象者をダブルクリックして実績報告書の印刷プレビューする間に
画面のちらつきが起こります。

この「画面ちらつき」、意外と気になるので下の命令をプログラムに組み込みます。

画面の更新を停止(OFF)にする。
Application.ScreenUpdating = False

そして、処理の終了後には元のとおりONにしてあげましょう。

Application.ScreenUpdating = True


今、作成中のプログラムに入れると次のようになります。(赤字の部分です)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
Dim obj As Object

r = Target.Row

対象者 = Sheets("対象者名簿").Range("d" & r)

Set obj = Workbooks("実績.xlsx").Worksheets("実績データ").Cells.Find(対象者)

If obj Is Nothing Then

MsgBox 対象者 & " 実績がありません"
Sheets("対象者名簿").Select

Else

Call 項目クリア

Call 編集(r)

For cnt = 1 To 31

If obj.Offset(0, cnt) = "" Then
Else

Worksheets("実績報告書").Range("l12").Offset(0, cnt) = 1 '実績報告書の利用日を編集
Worksheets("実績報告書").Range("l14").Offset(0, cnt) = 1
Worksheets("実績報告書").Range("l16").Offset(0, cnt) = 1
Worksheets("実績報告書").Range("l18").Offset(0, cnt) = 1
Worksheets("実績報告書").Range("l20").Offset(0, cnt) = 1

End If

Next cnt

Worksheets("実績報告書").Select
ActiveWindow.SelectedSheets.PrintPreview
Sheets("対象者名簿").Select

End If
Application.ScreenUpdating = True
End Sub

前回からの続きで、実績報告書を一気に印刷するプログラムは今作成中ですので次回書きたいと思います。

ではニコニコ



Posted by ミール at 14:02│Comments(0)
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。