7

シートでカスタム プロパティを作成し、その値を取得しようとしています。空の文字列を使用しない場合、つまり"". 空の文字列を使用すると、次のエラーが発生します。

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ます。""プロパティを最初に設定できないのでしょうか?

4

4 に答える 4

2

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
于 2012-11-06T07:16:10.763 に答える
1

コメントと Daniel Dusek からの回答から、これができないことは明らかだと思います。プロパティには有効な文字が少なくとも 1 文字必要です。空の文字列は許可されておらず、.Value が呼び出されたときにエラーが発生します。

そのAddため、長さが 1 以上のこのプロパティを使用し、実際の値が割り当てられない場合に再度プロパティを使用しますstringDelete

于 2012-11-06T12:32:14.283 に答える