Столкнулся с такой проблемой. Основная суть...
Использую стандартную функцию VB для чтения всех ключей реестра в один массив GetAllSettings – она, насколько Вы знаете, работает по стандартному для этих функций адресу реестра: HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Так вот... читаю Help и делаю, как там написано...
- Код: Выделить всё
Dim MySettings As Variant, intSettings As Integer
MySettings = GetAllSettings(appname:=App.Title, section:="Startup")
For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)
MsgBox MySettings(intSettings, 0) & " " & MySettings(intSettings, 1)
Next intSettings
Работает прекрасно, но(!)... проблема в том, что в реестре по этому адресу, может ничего и не быть, то есть – пусто. И когда я пытаюсь выполнить проверку того, что возвращает GetAllSettings, тут возникает проблема несоответсвия типов, поскольку - MySettings As Variant.
То есть, когда в реестре по этому адресу есть информация, то все работает и данные считываются, а вот когда по этому адресу ничего нет (ни одного ключа!), то возникает ошибка. Пытаюсь делать...
- Код: Выделить всё
If MySettings = 0 Then Exit Sub
...
If MySettings = "" Then Exit Sub
...
If CStr(MySettings) = "" Then Exit Sub
Все ровно ошибка несоответсвия типов... хоть разбейся! Или здесь...
For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)
Или при проверке...
If CStr(MySettings) = "" Then Exit Sub
Как с этим справиться???