Advertisement
Guest User

touyakucheck2.vba

a guest
Nov 11th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. option VBASupport 1
  2. sub Check
  3. With Sheets("Sheet1").UsedRange
  4.     s1Row = .Rows(.Rows.Count).Row
  5. End With
  6. CrDate = cdate("1900/01/01") 'ダミーの初期値
  7. PrDate = cdate("1900/01/01") 'ダミーの初期値
  8. Worksheets("Sheet1").Select
  9. '1行目からデータ行最終行+1行まで行毎に
  10. for i=1 to s1Row+1
  11.     'A列の値に"年"が有ったら
  12.     if instr(Cells(i,1).text, "年") Then  
  13.         'CrDateが初期値以外なら投薬実績をチェックする(初回は実績がないから飛ばす)
  14.         if CrDate<>cdate("1900/01/01") Then
  15.             PrDate=CrDate
  16.             ChkKaisu CrDate, Jisseki
  17.         end if
  18.         CrDate=Cells(i,1).value 'CrDataにA列の値を代入
  19.         'PrDataが初期値でなく且つPrDateとCrDateの差が1でないなら未入力日があるのでその分をエラー出力
  20.         if PrDate<>cdate("1900/01/01") and  PrDate+1 <> CrDate then
  21.             for j=1 to datediff("d",PrDate, CrDate)-1
  22.                 ErrOut Format((PrDate+j),"m月d日") & " 無入力"
  23.             next j
  24.         end if
  25.         Jisseki=""
  26.     'A列の値に":"が有ったらB列のセル内容をJissekiに追加する
  27.     elseif instr(Cells(i,1).text, ":") Then
  28.         Jisseki=JIsseki & Cells(i,2)
  29.     '最終行になったら最終日の投薬実績をチェック
  30.     elseif i=s1Row+1 Then
  31.         ChkKaisu CrDate, Jisseki
  32.     end if
  33. Next i
  34. Worksheets("Sheet2").Select
  35. msgbox "完了しました"
  36. end sub
  37.  
  38. sub ChkKaisu(ByVal CrDate as date , ByVal Jisseki as string)
  39. periods=array("朝","昼","夕")
  40. for each period in periods
  41.         if len(Jisseki)-len(Replace(Jisseki,period,""))<>1 then
  42.         ErrOut Format((CrDate),"m月d日") & " " & period & len(Jisseki)-len(Replace(Jisseki,period,"")) & "回"
  43.     end if
  44. next period
  45. end sub
  46.  
  47. sub ErrOut(Arg as string)
  48. With Sheets("Sheet2").UsedRange
  49.     s2Row = .Rows(.Rows.Count).Row
  50. End With
  51. Worksheets("Sheet2").Cells(s2Row+1,1)=Arg
  52. end sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement