Anzeige
Archiv - Navigation
436to440
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
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Modulprobleme mit anderen Excel Versionen

Modulprobleme mit anderen Excel Versionen
10.06.2004 21:46:12
Val-Harris
Hallo liebe Wissende,
ich benutze in einer Exceltabelle folgendes Modul, welches mir sagt, ob ein Wort eines Textes in Zelle A auch in dem Text von Zelle B vorkommt.
Hallo,
die folgende benutzerdef. Funktion vergleicht ganze Wörter, getrennt durch ein Leerzeichen (ab XL2000)
Ein Punkt am Satzende wird nicht berücksichtigt.
Aufrufen in Excel mit:
=VGL(dein Text1;dein Text2)
Gruß
Christoph
Option Explicit
Public

Function VGL(Text1$, Text2$)
Dim a, b, i%, j%, BoFnd As Boolean
If Right(Text1, 1) = "." Then Text1 = Left(Text1, Len(Text1) - 1)
If Right(Text1, 1) = "." Then Text1 = Left(Text1, Len(Text1) - 1)
a = Split(Text1)
b = Split(Text2)
For i = 0 To UBound(a)
For j = 0 To UBound(b)
If b(j) = a(i) Then
BoFnd = True
Exit For
Exit For
End If
Next
Next
VGL = BoFnd
End Function

Das klappt bei mir hervorragend ( Danke noch einmal Christoph). Nun möchte ich die Datei gerne weitergeben und stelle leider fest, dass die Funktion nicht auf der englischen Mac Office Version 2001 läuft. Er meckert anscheinend über den Befehl „split(Text1)“ . Jetzt weiss ich nicht, ob es daran liegt, dass es eine englische version ist, oder ob es an der Mac-Version liegt.
Ich habe noch eine andere Funktion getestet, die mir WernerB gebastelt hat ( auch hier noch einmal grossen Dank)

Function SUWO(Z1 As Range, Z2 As Range) As Boolean
Dim Tx As String, sW As String
Dim p1 As Integer, p2 As Integer
If VBA.Strings.Len(Z1.Text) = 0 Then Exit Function
Tx = Z1.Text & " "
p1 = 1
If VBA.Strings.InStr(Tx, " ") > 0 Then
p2 = VBA.Strings.InStr(Tx, " ")
Else
p2 = VBA.Strings.Len(Tx) + 1
End If
Do While p2 > 0
sW = VBA.Strings.Mid(Tx, p1, p2 - p1)
If VBA.Strings.InStr(Z2.Text, sW) > 0 Then
SUWO = True
Exit Do
End If
If InStr(p2 + 1, Tx, " ") > 0 Then
p1 = p2 + 1
p2 = InStr(p2 + 1, Tx, " ")
Else
Exit Do
End If
Loop
End Function

Diese Funktion lässt jedoch als Werte für die beiden Zellen, die ich vergleichen möchte nur eine EIngabe wie „SUWO(A1;A2) zu und nicht so etwas wie : „SUWO(„Wetter“;Sverweis(A1;Daten;2;Falsch)) und somit kann ich sie nicht einsetzten.
Kann mir jemand sagen, was ich machen muss, damit die Funktion von Christoph auch auf anderen Systemen läuft ? Das wäre für mich praktischer, da ich nicht alles in den Feldern ändern muss.
Oder weiss jemand, wie ich die Funktion von WernerB ändern muss, damit sie alles akzeptiert, was einen Text liefert ?
Vielen Dank, Gruss Val-Harris

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

Betreff
Datum
Anwender
Anzeige
AW: Modulprobleme mit anderen Excel Versionen
WernerB.
Hallo Val-Harris,
versuche es mal so:

Function SUWO(Z1 As String, Z2 As String) As Boolean
Dim Tx As String, sW As String
Dim p1 As Integer, p2 As Integer
If VBA.Strings.Len(Z1) = 0 Then Exit Function
Tx = Z1 & " "
p1 = 1
If VBA.Strings.InStr(Tx, " ") > 0 Then
p2 = VBA.Strings.InStr(Tx, " ")
Else
p2 = VBA.Strings.Len(Tx) + 1
End If
Do While p2 > 0
sW = VBA.Strings.Mid(Tx, p1, p2 - p1)
If VBA.Strings.Len(sW) > 3 And VBA.Strings.InStr(Z2, sW) > 0 Then
SUWO = True
Exit Do
End If
If InStr(p2 + 1, Tx, " ") > 0 Then
p1 = p2 + 1
p2 = InStr(p2 + 1, Tx, " ")
Else
Exit Do
End If
Loop
End Function

Viel Erfolg wünscht
WernerB.
Anzeige
AW: Modulprobleme mit anderen Excel Versionen
15.06.2004 17:29:36
Val-Harris
Hallo WernerB,
vielen Dank für die Änderung in dem Modul, es klappt einwandfrei, auch auf anderen Excel Versionen.
Grüsse
Val Harris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige