
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
前回からの続きで、実績報告書を一気に印刷するプログラムは今作成中ですので次回書きたいと思います。
では
介護事業所(デイサービス)で作られる、介護予防実績報告書の事務改善について書いています。
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)