当值为空时,访问自定义属性的值会导致“内存不足”错误
我试图在Excel表格中创build一个自定义属性,然后检索它的值。 这是好的,当我不使用空string,即""
。 当我使用空string,我得到这个错误:
Run-time error '7': Out of memory
以下是我正在使用的代码:
Sub proptest() Dim cprop As CustomProperty Dim sht As Worksheet Set sht = ThisWorkbook.Sheets("control") sht.CustomProperties.Add "path", "" For Each cprop In ThisWorkbook.Sheets("control").CustomProperties If cprop.Name = "path" Then Debug.Print cprop.Value End If Next End Sub
代码在Debug.Print cprop.value
失败。 我不应该能够最初设置财产?
我从Daniel Dusek的意见和答案中可以看出,这是不可能的。 该属性应该至less有一个字符是有效的,一个空string是不允许的,并会在调用.Value时发生错误。
因此,您Add
此属性的长度为1或更多的string
并且当没有实际值被分配给它时再次Delete
该属性。
用vbNullChar它的作品,示例:
Sub proptest() Dim sht As Worksheet Set sht = ThisWorkbook.Sheets("control") ' On Error Resume Next sht.CustomProperties.Item(1).Delete ' On Error GoTo 0 Dim pathValue As Variant pathValue = vbNullChar Dim pathCustomProperty As CustomProperty Set pathCustomProperty = sht.CustomProperties.Add("path", pathValue) Dim cprop As CustomProperty For Each cprop In ThisWorkbook.Sheets("control").CustomProperties If cprop.Name = "path" Then Debug.Print cprop.Value End If Next End Sub