Я пытаюсь создать функцию Excel, которая будет заполнять столбец данными, собранными из отчетов OGame. Я столкнулся с грубым поведением (по крайней мере, с моей точки зрения). У меня есть форма, где пользователь может копировать свои отчеты в текстовое поле формы. После нажатия кнопки должны запуститься следующие функции:
Option Explicit
Private Sub CommandButton1_Click()
Dim arr() As String
Dim test As Boolean
Dim str As String
str = testFunction()
arr = readData(Raporty.Value)
' Dim element As Variant
' For Each element In arr
' Debug.Print element
' Debug.Print "-------------------------------"
' Next element
test = writeData(arr)
Debug.Print (test)
Debug.Print ("str: " + str)
Unload ufWczytajRaporty
End Sub
Private Function testFunction() As String
Debug.Print ("testFunction")
testFunction = "testFunctionText"
End Function
Private Function writeData(arr1() As String) As Boolean
Debug.Print ("writeData")
For Each element In arr1
writeDataRow (element)
Next element
writeData = True
End Function
Private Function readData(text As String) As String()
Debug.Print ("readData")
Dim list As Object
Dim substr As Integer
Dim temp As String
Dim arr(0 To 10) As String
Dim result() As String
Dim counter As Integer
Set list = CreateObject("System.Collections.ArrayList")
counter = 0
If text = "" Then
MsgBox "Dane nie mogą być puste! Proszę uzupełnić poprawnymi raportami!", vbCritical
Else
If InStr(1, text, "Przybył statek handlowy") = 1 Then
While (InStr(1, text, "Towar został już odebrany."))
substr = InStr(1, text, "Towar został już odebrany.") + 26
arr(counter) = Left(text, substr)
temp = Mid(text, substr, Len(text))
text = temp
counter = counter + 1
Wend
Unload ufWczytajRaporty
Else
MsgBox "Niepoprawne raporty! Proszę wkleć dobre raporty!", vbCritical
End If
End If
ReDim result(0 To counter)
Dim i As Integer
For i = 0 To counter
result(i) = arr(i)
Next i
readData = arr
End Function
Эти функции обеспечивают следующий результат в Immediate:
testFunction
readData
False
str: testFunctionText
Как вы можете видеть выше, false - это вызов writeData fuction, однако он никогда не входил в функцию. Функция writeData содержит Debug.Print («writeData»), но она никогда не отображалась. Кроме того, если я меняю местами следующую функцию:
str = testFunction()
arr = readData(Raporty.Value)
на
arr = readData(Raporty.Value)
str = testFunction()
testFunction не вызывается, а.
Может кто-нибудь объяснить мне, что происходит? Почему эти функции не вызываются?