我在構建的基於excel的應用程序中廣泛使用以下子代。它要麼打印出傳遞給它的值,要麼將值傳遞給另一個函數,如果它太長而不適合單元格。在VBA中打印可疑字符串時出現應用程序定義或對象定義的錯誤
Sub printValue(ws As Worksheet, row As Long, column As Long, value As String)
If Len(value) > 32767 Then
printOverflowString ws, row, column, value
Else
ws.Cells(row, column).value = value
End If
End Sub
的問題是,有時,沒有圖案,無韻,而且沒有理由,就行了
ws.Cells(row, column).value = value
這種情況經常處理時引發一個應用程序定義或對象定義的錯誤Twitter的帖子,以及傾向於打破它的字符串的類型看起來像注入攻擊可疑。這裏有一個例子:
Watch : : Value : "=Lady Gaga vs Demi Lovato, Whos Right In the Vomit War? http://t.co/lx9FbKhUYv" : String : Tools.printValue
所以很明顯,我需要消毒串有點多,但我真的不知道如何去這樣做。刪除所有標點符號不是一個選項,我需要打印功能仍然儘可能快。
任何指向正確的方向都會有很大的幫助!
偉大的建議。出於好奇,使用這些保留字可能會發生什麼?我一直沒有任何問題,但現在你讓我擔心... – ebrts
你可以得到'奇怪的結果'...有點像目前的情況。在開發代碼時遵循一些簡單的標準是一種很好的習慣 - 你永遠不知道什麼時候可能有其他人試圖找出某些東西。我的'熱門'列表是:(1)總是使用'Option Explicit',因此不存在如何定義變量的假設; (2)切勿使用保留字; (3)定義變量時,在名字上加一個標準的前綴(比如lng代表Long,int代表Integer,str代表String等)(你可以懶惰,只用l,i,s);等等。生活更輕鬆哦,沒有'Dim sname,ddate,iCtr as Integer'! –