返回列表 上一主題 發帖

[發問] 如何用INPUTBOX輸入收單日期,跑出每個處方日期的數量加總,並以MSGBOX顯示

樞紐的方式我不會, 所以就試著用比較普通的方式來達成 :
Sub nn()
  Dim sStr$, sDate$
  Dim iRow%, iI%
  Dim vDate
  Dim oD As Object

  Set oD = CreateObject("Scripting.Dictionary")
  iRow = [A65535].End(xlUp).Row
  For iI = 2 To iRow
    oD(CStr(Cells(iI, 1))) = oD(CStr(Cells(iI, 1))) + Cells(iI, 3)
  Next iI
  vDate = InputBox("請輸入要查詢的收單日期 : ", "輸入收單日期")
  For iI = 2 To iRow
    If Trim(CStr(Cells(iI, 4))) = Trim(CStr(vDate)) Then
      If sDate <> CStr(Cells(iI, 1)) Then
        sStr = sStr + Chr(10) + CStr(Cells(iI, 1)) + " : " + CStr(oD(CStr(Cells(iI, 1))))
        sDate = CStr(Cells(iI, 1))
      End If
    End If
  Next iI
  MsgBox "收單日期 : " + vDate + " 的數量" + sStr
End Sub

TOP

回復 4# GBKEE
是啊.
因為他首篇文章中所提供的例子裡面所有有重複出現的情形中,
收單日期與處方日期都是完全相對應(亦即沒有相異情形出現),
所以我在程式中是以此作為前提的,(我事前對此點有做過確認)
當然若樓主執行後發現數字有問題就會再提出來,
屆時程式也會做適度的調整.

因為我發現若考慮的情形越多相對的程式也就會越複雜,
但往往有些情形其實並不會發生,
故而實作上也就可以將其忽略簡化.
謝謝你有注意到此點並提出討論.

TOP

本帖最後由 luhpro 於 2011-5-26 23:28 編輯

回復 9# akimunekyo
跑出來的數量會空白我猜是輸入的日期文字不 Match 所以抓不到資料,
附檔 收單日期-a.zip (9.65 KB) 開啟後按下 "查詢資料" 按鈕輸入日期 100/5/23 就會看到結果了.

如果想要知道一個指令的功能可以在VBA編輯器中Mark該指令後再按下 F1 按鍵就會看到線上說明了.
trim 是去掉字串前後方的空白字元
Cstr 是強制將資料改成字串格式
Dim中變數名稱右邊加 : $ 等同 As String   % 等同 As Integer
Dim sStr$   即等同 Dim sStr As String

至於程式代碼加編號我猜應該是高級模式中按上方的 "代碼" 貼上程式進去後做出來的.

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題