当值为空时,访问自定义属性的值会导致“内存不足”错误

我试图在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