Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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

		
Anzeige

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
Anzeige
AW: Kompilierungsfehler auf alter Excel Version
17.02.2005 13:07:24
Helge
Hallo Hansueli,
vielen Dank! Läuft hervorragend!
Helge
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige