Не определена переменная ошибки компиляции VBA AutoCAD - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть файл .dvb, созданный в VBA, я получаю сообщение об ошибке компиляции:

переменная не определена

Есть два модуля кода, один для формы и один для общего диалога. Ошибка, которую я получаю, относится к общему диалоговому коду, который был украден откуда-то еще для обработки обзора и добавления рисунков.

Общий код диалога Извлечение модуля:

 Public Function GetFiles( _
ByVal sInitFolder As String, _
ByVal sTitle As String, _
ByVal sFilter As String, _
ByVal nFilterIndex As Integer) As String()

strReturn = FileBrowseOpen(sInitFolder, sTitle, sFilter, nFilterIndex, True) 'code failing here "compile error variable not defined"
GetFiles = Split(strReturn, ",")

End Function

Выписка из кода модуля формы:

Private Sub cmdAddDwg_Click()

Dim initFolder As String
Dim filter As String
Dim fileNames() As String
Dim i As Integer

initFolder = ThisDrawing.Path
filter = "AutoCAD Drawing Files (*.dwg)|*.dwg|All Files (*.*)|*.*"

fileNames = GetFiles(initFolder, "Select Drawing Files", filter, 0)
If UBound(fileNames) > 0 Then
    For i = 1 To UBound(fileNames)
        lstDwgList.AddItem fileNames(0) & "\" & fileNames(i)
    Next
End If

End Sub

Мои знания VBA в лучшем случае ограничены.

Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018
Private Sub cmdAddDwg_Click()
Dim initFolder As String
Dim filter As String
Dim fileNames() As String
Dim i As Integer

'initFolder = ThisDrawing.Path 'gets dwg folder path
initFolder = lastPath 'gets last known location
filter = "AutoCAD Drawing Files (*.dwg)|*.dwg|All Files (*.*)|*.*"

fileNames = GetFiles(initFolder, "Select Drawing Files", filter, 0)
If UBound(fileNames) > 0 Then
    For i = 1 To UBound(fileNames)
        lstDwgList.AddItem fileNames(0) & "\" & fileNames(i)
    Next

End If

End Sub

0 голосов
/ 12 ноября 2018

Либо определите вашу переменную strReturn в виде строки:

Public Function GetFiles ( _
    ByVal sInitFolder As String, _
    ByVal sTitle As String, _
    ByVal sFilter As String, _
    ByVal nFilterIndex As Integer) As String()

    Dim strReturn As String ' This line was missing
    strReturn = FileBrowseOpen(sInitFolder, sTitle, sFilter, nFilterIndex, True)
    GetFiles = Split(strReturn, ",")
End Function

, либо перепишите этот раздел кода, чтобы полностью пропустить переменную strReturn:

Public Function GetFiles ( _
    ByVal sInitFolder As String, _
    ByVal sTitle As String, _
    ByVal sFilter As String, _
    ByVal nFilterIndex As Integer) As String()

    GetFiles = Split(FileBrowseOpen(sInitFolder, sTitle, sFilter, nFilterIndex, True), ",")
End Function
...