Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
568to572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
568to572
568to572
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kompilierungsfehler auf alter Excel Version

Kompilierungsfehler auf alter Excel Version
17.02.2005 09:53:37
Helge
Hallo allerseit!
Ich verwende die Funktionen InStrRev, die Excel 8 nicht kennt, möchte den Code aber trotzdem unter Excel 8 laufen lassen. Dafür frage ich die Version ab um gegebenenfalls die Funktion nicht aufzurufen (intExcelVers ist eine globale Variable, die beim Start gesetzt wird):
If intExcelVers Zeilenumbruch = 1
Exit Function
End If.
Trotztdem will Excel den Code kompilieren und gibt dann natürlich eine Fehlermeldung aus. Hat jemand eine Idee, wie ich das verhindern kann?
Vielen Dank schon mal,
Helge
Die gesamte Funktion sieht so aus:
Public

Function Zeilenumbruch(ByRef strText() As String, ByVal intZeichenProZeile As Integer) As Integer
'* Zeilenumbruch -- Teilt einen String in Zeilen auf,                    *
'*   wobei an Leerzeichen getrennt wird. Die Leerzeichen                 *
'*   werden dabei entfernt.                                              *
'*   Enhält der String keine passenden Leerzeichen,                      *
'*   wird später oder gar nicht getrennt                                 *
'* ACHTUNG: bei Excel 97 und tiefer wird nichts bearbeitet und           *
'*   der 1 zurückgewgeben, da diese Versionen InStrRev nicht kennen!     *
'* Parameter                                                             *
'*   strText() -- der zu berabeitende String                             *
'*     ACHTUNG1: muss in strText(1) stehn                                *
'*     ACHTUNG2: muss ein DYNAMISCHER array sein, s. Rückgabe            *
'*   intZeichenProZeile -- maximale Anzahl pro Zeile                     *
'* Rückgabe                                                              *
'*   Anzahl der Zeilen                                                   *
'*   Die einzelnen Zeilen werden ind den array strText() geschrieben.    *
'*     Er wird also über ReDim entsprechend der Zeilenanzahl erweitert.  *
'*     Zusätzlich enthält er immer das leere Element strText(0).         *
'* 01.02.2005 Helge                                                      *
Dim intZeile As Integer
Dim intZeilenumbruchPos As Integer
intZeile = 1
If intExcelVers < 9 Then
Zeilenumbruch = 1
Exit Function
End If
Do While Len(strText(intZeile)) > intZeichenProZeile
' +1, weil das Leerzeichen ja noch abgeschnitten wird
intZeilenumbruchPos = InStrRev(strText(intZeile), " ", intZeichenProZeile + 1)
'Falls kein Lerzeichen inerhalb der max. Länge vorhanden ist, _
wird weiter nach hinten gesucht
If intZeilenumbruchPos = 0 Then
intZeilenumbruchPos = InStr(intZeichenProZeile, strText(intZeile), " ")
End If
If intZeilenumbruchPos = 0 Then
Exit Do
End If
ReDim Preserve strText(intZeile + 1)
strText(intZeile + 1) = Right(strText(intZeile), Len(strText(intZeile)) - intZeilenumbruchPos)
strText(intZeile) = Left(strText(intZeile), intZeilenumbruchPos - 1)
intZeile = intZeile + 1
Loop
Zeilenumbruch = intZeile
End Function

		

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kompilierungsfehler auf alter Excel Version
EtoPHG
Hallo Helge,
Ich würde Dir vorschlagen auf die InStrRev Funktion zu verzichten.
Eine solche Funktion ist schliesslich relativ simpel selbst zu schreiben, z.B. so:
Public

Function InStrRevX(sInp As String, sSea As String, Optional lStart As Long) As Long
Dim lx As Long
If lStart = 0 Then lStart = Len(sInp)
For lx = lStart To 1 Step -1
If Mid(sInp, lx, Len(sSea)) = sSea Then
InStrRevX = lx
Exit Function
End If
Next lx
End Function

Damit kannst Du die Funktion InStrRevX in allen Versionen benutzen.
Gruss Hansueli
AW: Kompilierungsfehler auf alter Excel Version
17.02.2005 13:07:24
Helge
Hallo Hansueli,
vielen Dank! Läuft hervorragend!
Helge
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige