我一直在使用這個論壇的次數可以算,這是我第一次在這裏問一個問題,目前我的工作讓我使用excel和excel vba,甚至爲早餐,所以即使認爲我遠遠沒有被稱爲專業人士,我在我的時間做了各種基本的項目。excel vba變量不加載單元格的值
這個問題是推動我瘋了,甚至絕望的地步,只是不明白爲什麼,不知道如何突出在問題發生*部分*
Function WAGESPERHOUR(TSHOUR As Date, TEHOUR As Date, _
Optional TDAY, Optional TWEEK)
Dim tableWages(10000) As dataSchedule
Dim nSheet As String, inRow As Integer, inCol As Integer, _
weekCol As Integer, dayCol As Integer, dateCol As Integer, _
sShiftCol As Integer, eShiftCol As Integer, hoursWCol As Integer, _
wageTCol As Integer, itemsCount As Integer, n As Integer
Application.Volatile
Erase tableWages
WAGESPERHOUR = 0
nSheet = "input schedule"
inRow = 5
inCol = 1
weekCol = 2
dayCol = 1
dateCol = 3
sShiftCol = 6
eShiftCol = 7
hoursWCol = 10
wageCol = 11
itemsCount = 0
For n = 0 To 9999
If Sheets(nSheet).Cells(inRow + n, dateCol) = "" Then
itemsCount = n - 1
Exit For
End If
tableWages(n).day = Sheets(nSheet).Cells(inRow + n, dayCol)
*****tableWages(n).week = Sheets(nSheet).Cells(inRow + n, weekCol)*****
tableWages(n).startShift = Sheets(nSheet).Cells(inRow + n, sShiftCol)
tableWages(n).endShift = Sheets(nSheet).Cells(inRow + n, eShiftCol)
tableWages(n).hoursWorked = Sheets(nSheet).Cells(inRow + n, hoursWCol)
tableWages(n).wage = (Sheets(nSheet).Cells(inRow + n, wageCol)/2)
Next
For n = 0 To itemsCount
If TDAY = "" Then
tableWages(n).day = TDAY
End If
If TWEEK = "" Then
tableWages(n).week = TWEEK
End If
If ((tableWages(n).startShift >= sHOUR And tableWages(n).startShift < eHOUR) _
Or (tableWages(n).endShift > sHOUR And tableWages(n).endShift < sHOUR) _
Or (eHOUR > tableWages(n).startShift And eHOUR < tableWages(n).endShift) _
Or (sHOUR >= tableWages(n).startShift And sHOUR < tableWages(n).endShift)) _
And tableWages(n).day = TDAY _
And tableWages(n).week = TWEEK Then
WAGESPERHOUR = WAGESPERHOUR + tableWages(n).wage
End If
Next
End Function
的tableWages (n).week應該從單元格獲得「第1周」(n,2);但它沒有;我使用檢查和單元格值是正確的,但是什麼時候分配它保留的值(「」);最糟糕的部分是它以前工作過,我把書重新打開並停止工作。
我還附加了一個打印屏幕,檢查員顯示該單元格確實有「第1周」,但由於某種原因,它無法保存在數組中。其他每個變量都有效。
感謝它需要獲得價值細胞的幫助
編輯 打印屏幕。
定義dataSchedule對象的代碼在哪裏?我不認爲它是Excel VBA對象模型的一部分,所以我假設你有一個Class模塊或類似的模塊。問題可能在於如何定義Get和Let程序。 –
嗨比你非常多,對於響應,我總是定義類型的這種方式,更容易讓我在程序/功能 –
類型dataSchedule 日作爲字符串 周作爲字符串 日截止日 staffName作爲字符串 以後使用staffRole作爲字符串 startShift截止日期 endShift截止日期 hoursWorked爲雙 工資爲雙 結束類型 –