Board logo

標題: excel 巨集 這是那錯了?出現執行階段錯誤1004應用程式或物件定義上錯誤 [打印本頁]

作者: eigen    時間: 2017-6-5 22:21     標題: excel 巨集 這是那錯了?出現執行階段錯誤1004應用程式或物件定義上錯誤

excel 巨集 這是那錯了?出現執行階段錯誤1004應用程式或物件定義上錯誤

這是一個簡單的 excel

我要在 H18~H268  填滿公式:
'=IF(COUNTIF($B$18:$B18,$B18)=1,SUMIF($B$18:$B$267,B18,$G$18:$G$267),"")
'=IF(COUNTIF($B$18:$B19,$B19)=1,SUMIF($B$18:$B$267,B19,$G$18:$G$267),"")
'=IF(COUNTIF($B$18:$B20,$B20)=1,SUMIF($B$18:$B$267,B20,$G$18:$G$267),"")

我用巨集來協助

Sub Macro1()
'
' Macro1 Macro
' AMD945 在 2017/6/5 錄製的巨集
'
' 快速鍵: Ctrl+u
'
        Dim row_i As Long
                                For row_i = 18 To 258
'=IF(COUNTIF($B$18:$B18,$B18)=1,SUMIF($B$18:$B$267,B18,$G$18:$G$267),"")
'=IF(COUNTIF($B$18:$B19,$B19)=1,SUMIF($B$18:$B$267,B19,$G$18:$G$267),"")
'=IF(COUNTIF($B$18:$B20,$B20)=1,SUMIF($B$18:$B$267,B20,$G$18:$G$267),"")

'Sheets("Sheet1").Cells(row_i, 8) = "=IF(COUNTIF($B$18:$B"&row_i&",$B"&row_i&")=1,SUMIF($B$18:$B$267,B"&row_i&",$G$18:$G$267),"""")"

Sheets("Sheet1").Cells(row_i, 8) = "=IF(COUNTIF($B$18:$B"

                                Next row_i
End Sub

我將公式轉成 字串,來填入 cell

Sheets("Sheet1").Cells(row_i, 8) = "=IF(COUNTIF($B$18:$B"&row_i&",$B"&row_i&")=1,SUMIF($B$18:$B$267,B"&row_i&",$G$18:$G$267),"""")"
但是程式一直出現  執行階段錯誤1004應用程式或物件定義上錯誤

我將字串一直刪,刪到

Sheets("Sheet1").Cells(row_i, 8) = "=IF(COUNTIF($B$18:$B"

還是有問題,我真的無能為力了,為什麼這麼簡單的字串還能錯?

※excel 2003 [attach]27286[/attach][attach]27286[/attach]
作者: eigen    時間: 2017-6-5 22:34

自己解:

'Sheets("Sheet1").Cells(row_i, 8) = "=IF(COUNTIF($B$18B"&row_i&",$B"&row_i&")=1,SUMIF($B$18B$267,B"&row_i&",$G$18G$267),"""")"

dim row_str as string


row_str="=IF(COUNTIF($B$18B"&row_i&",$B"&row_i&")=1,SUMIF($B$18B$267,B"&row_i&",$G$18G$267),"""")"

Sheets("Sheet1").Cells(row_i, 8) = row_str

填入完整的字串就不會有error

好奇怪呀~~~~
作者: eigen    時間: 2017-6-5 22:57

參考: https://stackoverflow.com/questions/18574413/weird-run-time-1004-error-with-strings-in-excel-vba

附註: string 如果不完整,代入公式就會一直出現 error ,而且很難找

可以這樣 加入 『'』號
row_str="=IF(COUNTIF($B$18:$B" &row_i& ",$B&18)=1,SUMIF($B$18:$B$267,B"&row_i&",$G$18:$G$267),"")"
row_str="'=IF(COUNTIF($B$18:$B" &row_i& ",$B&18)=1,SUMIF($B$18:$B$267,B"&row_i&",$G$18:$G$267),"")"
變成寫入字串,而不是公式,這樣才能快速除錯




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)