2015-05-28 59 views
0

我想是因爲我填充一個循環,自動添加字符串,刪除字符串的最後一個字符「」以後每新的字符串添加的,如:VBA的左功能不能正常工作

Do Until EOF(1) 
    ... 
    (get string) 
    ... 
    Ref = Ref + String 
    Ref = Ref + "," 
Loop 
Ref = Left(Ref, Len(Ref) - 1)   (Delete last "," of ref) 

當試圖運行這個時,我得到了一個「錯誤的參數數量或無效的屬性分配」錯誤的LEFT函數。

我試圖研究這個錯誤,但我能找到的唯一的東西是關於工具引用丟失,他們不是(據我所知)。 我發現的線程都是針對excel的vba,在這裏不是這種情況,這是在反射工作區中運行腳本的代碼。

是否有刪除我的字符串的最後一個字符的另一種方法?或者有什麼錯誤可以保證這個錯誤?我似乎無法弄清楚這一點。

謝謝你的時間。

回答

1

不知道爲什麼你的left功能無法正常工作,這是正確的語法假設Ref實際上是一個字符串。我懷疑你沒有提供真正的代碼是隱瞞我們的原因。

請記住,有分條款在該錯誤消息:

的參數OR無效的屬性賦值打錯號碼了。

This page詳細說明可能的原因。

在任何情況下,它更容易只是做類似的信息(僞代碼類似於你自己的):

sep = "" 
ref = "" 
do until eof(1) 
    string = getString() 
    ref = ref + sep + string 
    sep = "," 
loop 

換句話說,建立正確的字符串前面,而不是試圖事後修復它。

+0

謝謝!這與第一張海報相結合,給了我解決方案,我使用循環的第一次運行開始正確的字符串和你的sep技巧,以確保我最後不添加「,」。 – Witloofdc

1

而不是做錯了事,然後試圖撤消它,爲什麼不防止在第一個地方的錯誤?

這是一個更容易被發現的循環比去年的第一輪:

Dim first as Boolean 
first = True 
Do Until EOF(1) 
    ... 
    (get string) 
    ... 
    If first Then 
    first = False 
    Else 
    Ref = Ref + "," 
    End If 
    Ref = Ref + String 
Loop 
+0

嗨,感謝您的回答,但您能否提供更多有關您解決方案的信息?因爲在第一次運行後,它會不會在ref後面添加「,」?我的目標是擁有一個像「('Ref1','Ref2',Ref3',...'RefX')」的字符串,因此我可以使用此字符串添加到查詢中。 – Witloofdc