2017-09-07 149 views
0

我的變量值(Excel-VBA)沒有增加。請幫幫我。以下是語法:變量值不增加

Do 

    Sheets("PF Data - Monthly").Select 

    PF_WAGE = PF_WAGE + Range("D" & row_no).Value 
    PF_EMP = PF_EMP + Range("E" & row_no).Value 
    PF_367 = PF_367 + Range("F" & row_no).Value 
    PF_833 = PF_833 + Range("G" & row_no).Value 

    row_no = row_no + 1 

Loop Until Range("A" & row_no).Value = AC_NO 
+0

你初始化你的'row_no'變量? –

+1

(1)避免使用'.Select'這是一個不好的做法。相反,請爲您的範圍指定一個工作表,例如'Set wsData = Worksheets(「PF Data - Monthly」)',然後使用'wsData.Range(...)'(2)'row_no'的值是多少?這一排?如何聲明變量,例如'PF_WAGE'(它們是什麼類型)。請再展示一些代碼。 –

+1

如果你提到了你正在談論的變量,那真的會有很大的幫助...我因爲某種原因而今天只是無法讀懂你的想法 – jsotola

回答

0

嘗試了這一點

dim row_no as long 
dim ws as worksheet 
Set ws = ThisWorkBook.Worksheets("PF Data - Monthly") 

row_no = 1 ' initialize it 
Do 

    PF_WAGE = PF_WAGE + ws.Range("D" & row_no).Value 
    PF_EMP = PF_EMP + ws.Range("E" & row_no).Value 
    PF_367 = PF_367 + ws.Range("F" & row_no).Value 
    PF_833 = PF_833 + ws.Range("G" & row_no).Value 

    row_no = row_no + 1 

Loop Until ws.Range("A" & row_no).Value = AC_NO 
+0

如果它是'row_no = 0'(未初始化),那麼它會拋出一個Range(「D」&row_no).Value'上的運行時錯誤。您可以使用'Debug.Print Range(「D」&0).Value'輕鬆測試。所以這不是問題,因此也不是解決方案。 –

+0

@Peh我完全理解你在說什麼,但給了大量的示例代碼,你可以補充什麼......說你是真實的,但是這個代碼片段是在'如果錯誤轉到下一個'聲明....? –

+0

@Peh現在我的代碼和Sahi Rado的代碼有什麼區別......不要誤解我的意思,但我的代碼只是系統的。我覺得在這個問題上失蹤了,如果這對他不起作用,那麼我認爲我們可以期待其他事情,這正是你的觀點...... :) –

-1

你有廣告這行代碼:row_no = 1,因爲row_no在默認情況下具有零值。

row_no = 1

Sheets("PF Data - Monthly").Select 



PF_WAGE = PF_WAGE + Range("D" & row_no).Value 
PF_EMP = PF_EMP + Range("E" & row_no).Value 
PF_367 = PF_367 + Range("F" & row_no).Value 
PF_833 = PF_833 + Range("G" & row_no).Value 

row_no = row_no + 1 

循環,直到範圍( 「A」 & row_no).value的= AC_NO

末次

+0

這是錯誤的。如果它是'row_no = 0',那麼它會在'Range(「D」&row_no).Value'上產生一個運行時錯誤。您可以使用'Debug.Print Range(「D」&0).Value'輕鬆測試。所以這不是問題,因此也不是解決方案。 –

+0

row_no,因爲範圍(「D」&row_no).value必須是類似於範圍(「D2」)的東西,所以row_no必須是整數或長整型。在Excel中沒有從0開始的行,可能您已經與VB如果你從VBA編輯器運行代碼,你會得到錯誤1004。 –

+0

是的,沒有第0行,這就是爲什麼當變量'row_no'爲'0'時你會得到一個錯誤信息。但OP沒有說有錯誤消息,他說它不會增加,所以我們可以假設代碼運行沒有錯誤。因此,這不是問題。所以我沒有任何困惑。 –

1

一個簡單的With可以幫助你做出所有的區別。

然後,在With內部,您需要通過添加.來限定所有Range對象。即.Range("D" & row_no).Value

代碼

row_no=1 

With Sheets("PF Data - Monthly") 
    Do 
     PF_WAGE = PF_WAGE + .Range("D" & row_no).Value 
     PF_EMP = PF_EMP + .Range("E" & row_no).Value 
     PF_367 = PF_367 + .Range("F" & row_no).Value 
     PF_833 = PF_833 + .Range("G" & row_no).Value 

     row_no = row_no + 1 
    Loop Until .Range("A" & row_no).Value = AC_NO 
End With