|
患者さんのデータベースを作成しています。「データーベース」のシートから、「実施記録」と名づけたシートにデータをコピーして使用しています。
「データーベース」には患者IDや氏名、疾患名、主治医、担当者名、性別などをデータとして記録しています。「データーベース」のシート内でオートフィルタをかけて、主治医など選択して、○○医師担当、△△医師担当のみの表示など出来ています。「データーベース」のシート内でのオートフィルタをかけた結果を他のシートにも反映させる場合、どのようなコードが必要でしょうか?「データーベース」の内容は、随時追加しており、決まった数のみでありません(データーが100個だけとかでなく、必要なものを随時追加・削除しています)
以下のコードは、「データーベース」から「実施記録」へデーターをコピーするためのものです。「実施記録」はレコードタイプの「データーベース」の内容を帳票形式に一つ一つのレコードタイプのデーターを表示して、ボタンの「前へ」「後ろへ」で、表示を切り変えています。
Public mCnt As Long
Public mNum As Long
Public mRow As Long
Public Sub ChkTable()
'レコード数
mCnt = Range("データーベース!A1").End(xlDown).Row - 1
'表示用のレコード番号
If mNum = 0 Then
mNum = 1
End If
'テーブル内の行番号
If mRow = 0 Then
mRow = 2
End If
End Sub
Public Sub CopyRecord(r As Long)
'[データーベース]シートから実施記録にデーターをコピー
Range("E$3").Value = Range("データーベース!A" & r).Value
Range("E$4").Value = Range("データーベース!B" & r).Value
Range("L$4").Value = Range("データーベース!C" & r).Value
Range("R$4").Value = Range("データーベース!D" & r).Value
Range("Z$4").Value = Range("データーベース!E" & r).Value
Range("AA$3").Value = Range("データーベース!F" & r).Value
Range("F$5").Value = Range("データーベース!I" & r).Value
Range("H$6").Value = Range("データーベース!G" & r).Value
Range("Y$6").Value = Range("データーベース!H" & r).Value
End Sub
Sub 前へ_Click()
'パブリック変数の初期化
Call ChkTable
'レコード番号を表示
mNum = mNum - 1
If mNum = 0 Then
mNum = 1
Exit Sub
End If
Range("A2").Value = "'" & mNum & "/" & mCnt
'1つ前のデーターを表示
mRow = mRow - 1
Call CopyRecord(mRow)
End Sub
Sub 後ろへ_Click()
'パブリック変数の初期化
Call ChkTable
'レコード番号を表示
mNum = mNum + 1
If mNum >= mCnt Then
mNum = mCnt
Exit Sub
End If
Range("A2").Value = "'" & mNum & "/" & mCnt
'次のデーターを表示
mRow = mRow + 1
Call CopyRecord(mRow)
End Sub
|
|