Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zweite Fundstelle bei String Suche merken_VBA

Zweite Fundstelle bei String Suche merken_VBA
15.05.2008 17:36:00
Andreas
Hallo Herber Fans,
ich arbeite an einem Makro, welches die ersten Zwei Wörter aus einem String "löschen" soll. Ich fand dazu einen iCounter Ansatz, den ich modifizierte.
Das Problem ist, daß der iCounter Code alle Leerzeichen in einem String herausfindet. Ich möchte ihm aber explizit sagen, daß er sich nur die zweite Fundstelle merken soll.
Denn diese zweite Fundstelle wird an „MID“ weitergegeben, um aus einem String alles nach den ersten zwei Wörtern anzuzeigen.
https://www.herber.de/bbs/user/52378.xls
Wo muß ich festlegen, daß für MID die zweite Fundstelle verwendet werden soll.
Vielen Dank und Grüße,
Andreas Hanisch

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zweite Fundstelle bei String Suche merken_VBA
15.05.2008 18:15:42
Matthias
Hallo
Nimm doch gleich die Werte Deiner Formel

test = Mid(Range("A1").Value, Range("A11").Value, Len(Range("A1").Value))


Gruß Matthias

AW: Zweite Fundstelle bei String Suche merken_VBA
15.05.2008 18:40:34
Andreas
Hallo Matthias,
das die Formel da steht ist Zufall. Es diente der Illustration, was ich erreichen möchte. Es soll ohne Werte von außen geschehen. Diese sollen im VBA Code ermittelt werden. Also benötige ich die Referenz auf die zweite Fundstelle.
Grüße, Andreas

AW: Zweite Fundstelle bei String Suche merken_VBA
15.05.2008 18:39:41
Luschi
Hallo Andreas,
ich würde es so machen:

Sub zwei_Woerter_Loeschen()
Dim myArr() As String, iCounter As Integer, sTxt As String
getMoreSpeed True
sTxt = ActiveSheet.Range("A1").Value
myArr() = Split(sTxt, " ", -1, vbTextCompare)
If UBound(myArr()) > 1 Then
'mindestens 2 Worte vorhanden
For iCounter = 2 To UBound(myArr())
sTxt = sTxt & " " & arr(iCounter)
Next iCounter
sTxt = Trim(sTxt)
Else
sTxt = "-"
End If
ActiveSheet.Range("B1").Value = sTxt
getMoreSpeed False
End Sub
Sub getMoreSpeed(bDoIt As Boolean)
Application.ScreenUpdating = Not (bDoIt)
Application.EnableEvents = Not (bDoIt)
Application.Calculation = IIf(bDoIt, xlCalculationManual, xlCalculationAutomatic)
End Sub


Gruß von Luschi
aus klein-Paris
PS: Bei der Lösung von Matthias ist vorn noch 1 Leerzeichen zuviel
test = Trim(Mid(Range("A1").Value, Range("A11").Value, Len(Range("A1").Value)))
oder
test = Mid(Range("A1").Value, Range("A11").Value + 1, Len(Range("A1").Value))
Allerdings bekommst Du hier Probleme, wenn im Wert der Zelle 'A1' gar kein Leerzeichen enthalten ist!

Anzeige
AW: Zweite Fundstelle bei String Suche merken_VBA
15.05.2008 18:51:55
Andreas
Hi Luschi,
das mit dem Leerzeichen in Matthias' Lösung ist schon OK. Hintergrund: In der letzten Ausbaustufe, soll dieses Makro in einer Pivottabelle in jedem Datenfeld "Summe von" ausräumen und so für Übersichtlichkeit sorgen. Wenn man in einem Datenfeld so viel löscht, daß die Datenfeldbezeichnung gleich vorn beginnt, bekommt man die Meldung, daß dieses Feld schon vorhanden ist. Ein Leerzeichen verhindert dies.
Dein Code ist sehr gut. Er produziert jedoch "Summe von Planverbrauch Holz Planverbrauch Holz" in der Zelle B1. Richtig wäre jedoch nur " Planverbrauch Holz". Wie ist das zu realisieren?
Grüße, Andreas

Anzeige
AW: Zweite Fundstelle bei String Suche merken_VBA
15.05.2008 19:08:00
Luschi
Hallo Andreas,
dann eben so:

Sub zwei_Woerter_Loeschen()
Dim myArr() As String, iCounter As Integer, sTxt As String
getMoreSpeed True
sTxt = ActiveSheet.Range("A1").Value
myArr() = Split(sTxt, " ", -1, vbTextCompare)
Select Case UBound(myArr())
'-1 --> Zelle A1 ist leer
' 0 --> kein Leerzeichen
' 1 --> nur 1 Leerzeichen
Case -1, 0, 1
sTxt = ""
Case 2
sTxt = myArr(2)
Case Else
sTxt = myArr(2) & " " & myArr(3)
End Select
ActiveSheet.Range("B1").Value = sTxt
getMoreSpeed False
End Sub


Gruß von Luschi
aus klein-Paris

Anzeige
AW: Zweite Fundstelle bei String Suche merken_VBA
15.05.2008 19:16:08
Andreas
Hallo Luschi,
vielen Dank. Der Code läuft genial.
Habe noch einen schönen Abend,
Gruß, Andreas

AW: kleine Korrektur...
15.05.2008 19:17:00
Luschi
Hallo Andreas,
sTxt = Trim(ActiveSheet.Range("A1").Value)
Gruß von Luschi
aus klein-Paris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige