Board logo

標題: [發問] 字串不被接受,會變error 1004,找不出問題 [打印本頁]

作者: mylene    時間: 2010-8-13 14:42     標題: 字串不被接受,會變error 1004,找不出問題

請問各位先進一個問題
程式如附件[attach]2395[/attach]


我用Sheets(nowSheet).Range("A1").Offset(nowRow, nowCol) = "一串文字"
來放置字串
可是在正在狀況下,執行到nowRow=22959時,字串會被拒絕
為了方便測試
附件的字串我加了一個空白,執行約2次就被拒絕

想很久了不明白,同樣一樣,同樣格式的字串
但就是有些會不被接受

不是七月撞鬼,但真的就是找不出問題
請各位高手幫忙看看
作者: kimbal    時間: 2010-8-13 21:54

回復 1# mylene


    沒有詳細看,
可以試試把
Dim nowRow
換成
Dim nowRow As Long
作者: GBKEE    時間: 2010-8-14 09:42

回復 1# mylene VBA的發問 請到[Excel程式區]
錯誤值1004  
請參閱  Excel 的規格及限制(摘錄自Excel 說明)
http://forum.twbts.com/viewthread.php?tid=36&extra=page%3D1
儲存格內容的長度 (文字) 32,767 個字元。在一個儲存格中僅能顯示1,024 個字元;在資料編輯列顯示全部 32,767 個字元。
請修改你的程式碼如下 試試便知
Sheets(nowSheet).Range("A1").Offset(nowRow, nowCol) = Application.WorksheetFunction.Rept("A", 32767)
Sheets(nowSheet).Range("A1").Offset(nowRow, nowCol) = Application.WorksheetFunction.Rept("A", 32768)
作者: mylene    時間: 2010-8-14 15:36

Dim nowRow As Long  很早以前試過,一樣會錯

第二個建議,我的狀況是存"01.02.03.04.05.06 "這樣長度的字串,都會錯

最煩的是,有時不會錯,有時會錯,這樣就不能判斷是什麼問題了
有測過以為是位置指錯,但是亂丟一個字串如"1111111111111111111"又可以存,偏偏就像上述那樣的字串存不進
又不是固定某一個字串存不進,真的很有撞鬼的感覺
但我相信excel沒有鬼
作者: oobird    時間: 2010-8-14 20:56

試跑了半天也沒出錯。
這樣的程序效率太差了。我實在也沒耐心等六個小時來看看錯在哪裡!
作者: GBKEE    時間: 2010-8-15 11:18

回復 4# mylene
請問 1004 錯誤值內容  為何


[attach]2427[/attach]
作者: mylene    時間: 2010-8-15 13:43

回復 6# GBKEE


    感謝GBKEE持續幫我回答這個問題
我的1004錯訊是==>執行階段錯誤 '1004' 應用程式定義或物件定義錯誤

我google過網路,找不到和我相同的問題,大部份都是copy時位置指定錯誤
我的部份,我實驗過,是字串會被拒,字串的長度並不是您所指的超過cell可容忍的長度
我的字串只有17的長度,而且,排列組合做下來,前面幾十萬都沒問題,可是就是會在執行6小時左右(有時更長,有時則更短)
同一行程式,就被標error 1004
這才是我想不透的點
一般來說,有錯,第一次執行時就會錯

真的不知道為什麼,每測一次就要那麼久,我也覺得很考驗耐心,程式碼又看不出什麼問題
真的要求助於各位高手了
作者: GBKEE    時間: 2010-8-15 15:40

回復 7# mylene
1004錯訊是==>執行階段錯誤 '1004' 應用程式定義或物件定義錯誤
試試加上這一行  運行速度會慢一些  待有錯誤時 打開即時運算視窗 查看 這4 個變數便知錯誤 在何處
    Debug.Print nowSheet, nowRow, nowCol , Temp
    Sheets(nowSheet).Range("A1").Offset(nowRow, nowCol) = Temp  '有時這行會被拒絕置入
作者: mylene    時間: 2010-8-15 16:45

回復 8# GBKEE


    感謝您的回覆
  所有可猜疑的變數我都有用監看式看過

  執行到 sheets(2).range("a1").offset(22959,66)="06.xx.xx.xx.xx.48" (對不起,字串記不起來)
  一定會錯
  曾在偵錯的狀況下
請它執行sheets(2).range("a1").offset(22959,66)="1111111111111",順利寫入
但下一行,sheets(2).range("a1").offset(22959,66)="06.xx.xx.xx.xx.48",它又是跳出錯誤訊
就是這樣像撞鬼的狀況,才會讓我想破頭也想不出原因錯在哪裡
求助於各位高手....難到要買乖乖請excel嗎?(說笑)
作者: GBKEE    時間: 2010-8-15 17:13

回復 9# mylene
執行到 sheets(2).range("a1").offset(22959,66)="06.xx.xx.xx.xx.48" (對不起,字串記不起來)   一定會錯
請試著把字串 找出來 大家參考
作者: mylene    時間: 2010-8-16 10:36

回復 10# GBKEE


    這個字串是沒什麼特殊的
   因為它單獨用指定時一樣寫得進去
   但是同一行程式再run個一百多次後,又踢出一個
   同樣格式,所以無法以某一個字串做特別處理
   打個比方,您可能就懂我的意思
   假設有一個100長度的陣列,我分別放1到100
     偏偏有時它會45,或38被拒,下次又換56,72被拒
   並不是那數字有什麼不一樣,都是數字,可是就會發生錯誤

   又不是一開始就錯才很難找出問題在哪
作者: yangjie    時間: 2010-8-20 23:24

sheets(2).range("a1").offset(22959,66)="06.xx.xx.xx.xx.48"
PC 對 06.xx.xx.xx.xx.48誤為數值錯誤
可嘗試字串前加一個 '
sheets(2).range("a1").offset(22959,66)="'06.xx.xx.xx.xx.48"
作者: yangjie    時間: 2010-8-20 23:30

因為剛加入此家族,故還是小學生,沒有Download之功能,無法實際真正了解問題所在,但對Excel VBA很癡情。我很樂意參予
作者: mylene    時間: 2010-8-26 10:32

回復 12# yangjie


    感謝您的回覆
在字串前加一個"'"也有試過,那一組過得去,接下來,其他有帶" ' "的又會遇到同樣的錯誤
已經不是加不加'的問題,而是,不知道為什麼excel會不接受字串
有鬼的又是在debug時,同一個位置,指定一個隨便設的字串,又接受

真的想破頭了
作者: yangjie    時間: 2010-8-28 00:57

office 重灌,可以試一試(我有過此經驗,office可能部份Dll檔不見了)
作者: mylene    時間: 2010-9-2 14:15

回復 15# yangjie


    感謝您的回覆
在我之前走投無路時,雖然理智上根本覺得不會是這個問題,但我還真的重灌過

結果當然沒有違背科學原則,一樣無效

作者: yangjie    時間: 2010-9-3 14:43

真的很想知道原稿TryTry,可否Mail To me:[email protected]
作者: mylene    時間: 2010-9-3 16:14

回復 17# yangjie


    感謝您持續的回應
檔案已寄出去,麻煩您了
謝謝




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