Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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
Inhaltsverzeichnis

Wenn vorhanden dann ändern

Wenn vorhanden dann ändern
06.05.2014 08:43:22
Dani
Hallo zusammen
Ich bin auf der Suche nach einer Möglichkeit eine Abfrage zu erstellen, welche in einer bestimmten Reihe zB L (Status) eine Abfrage vornimmt und aus verh. verheiratet macht. Das Ganze soll dann per Knopfdruck abgefragt und automatisch geändert werden.
Vielen Dank schon mal im Vorraus.
Gruss Dani

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn vorhanden dann ändern
06.05.2014 08:52:28
Hendrik
Das versteht doch kein Mensch. :o)
Also eigentlich möchtest Du durch suchen/ersetzen aus "verh." ein "verheiratet" machen, oder?
Muss man das wirklich öfters und automatisiert machen, oder reicht da Strg + H?
Grüße
Hendrik

AW: Wenn vorhanden dann ändern
06.05.2014 09:00:15
Dani
Hallo Hendrik
Sorry wenn ich mich so kompliziert ausdrücke. Ich werde in Zukunft immer wieder diverse Listen erhalten. Da möchte ich am liebsten ein Makro welches mir per Knopfdruck die Liste aber nur auf der Spalte L(Status) verh. durch verheiratet ersetzt. Ich hoffe das ist verständlich.
Gruss Dani

AW: Wenn vorhanden dann ändern
06.05.2014 09:30:41
EtoPHG
Hallo Dani,
Das in ein Modul:
Option Explicit
Sub verheiratet()
Const cTitelZeile As String = "Status"  ' Titel der Spalte in Zeile 1
Const cFind As String = "verh."         ' diesen Begriff
Const cReplace As String = "verheiratet"    ' durch diesen ersetzen
Dim lCol As Long
With ActiveSheet
On Error Resume Next
lCol = Application.Match(cTitelZeile, Rows(1))
On Error GoTo 0
If lCol = 0 Then
MsgBox "Keine Spalte mit Titel  in Zeile 1 gefunden!", _
vbExclamation, "Abbruch"
Else
.Columns(lCol).Replace What:=cFind, Replacement:=cReplace, LookAt:=xlWhole
End If
End With
End Sub
und über Makro-Optionen z.B. den Shortcut (Tastenkürzel) Shift-Ctrl-V zuweisen.
Gruess Hansueli

Anzeige
AW: Wenn vorhanden dann ändern
06.05.2014 11:57:28
Dani
Hallo Hansueli
Vielen Dank für dein Modul. Genau so was hab ich mir vorgestellt. :)
Jetzt hab ich aber noch ein Problemchen. Wenn ich mehr wie 15 Spalten habe funktioniert es nicht.
Keine Fehlermeldung gar nichts. Ich kann mir aber nicht wirklich vorstellen, dass das am Skript liegt.
Irgend ein Tipp.
Gruss Dani

Wie mehr als 15 Spalten?
06.05.2014 12:03:50
EtoPHG
Hallo Dani,
Ich sehe nicht ein, was das mit der Anzahl Spalten zu tun hat.
Das Script bestimmt aufgrund des Wortes "Status" genau die erste Spalte, die so benannt ist.
Kommen mehrere Spalten mit diesem Namen vor ?
Kannst du einen (anonymisierte) Beispielmappe ins Forum stellen ?
Gruess Hansueli

Anzeige
AW: Wie mehr als 15 Spalten?
06.05.2014 13:14:16
Dani
Hallo Hansueli
Ich kanns mir auch nicht erklären warum das nicht funktioniert. Ich glaube aber auch nicht das das was mit dem Skript zu tun hat.
https://www.herber.de/bbs/user/90513.xlsx
Hier das Skript:
Option Explicit
Sub verheiratet()
Const cTitelZeile As String = "Status"  ' Titel der Spalte in Zeile 1
Const cFind As String = "Verh."         ' diesen Begriff
Const cReplace As String = "Verheiratet"    ' durch diesen ersetzen
Dim lCol As Long
With ActiveSheet
On Error Resume Next
lCol = Application.Match(cTitelZeile, Rows(1))
On Error GoTo 0
If lCol = 0 Then
MsgBox "Keine Spalte mit Titel  in Zeile 1 gefunden!", _
vbExclamation, "Abbruch"
Else
.Columns(lCol).Replace What:=cFind, Replacement:=cReplace, LookAt:=xlWhole
End If
End With
End Sub
Gruss Dani

Anzeige
AW: Wie mehr als 15 Spalten?
06.05.2014 13:16:57
Dani
Wenn Du die letzte Spalte löschst funktioniert es.

oops, da fehlt noch ein Parameter
06.05.2014 13:35:48
EtoPHG
Hi Dani,
Beim Match fehlt noch was, korrigiere:
        lCol = Application.Match(cTitelZeile, Rows(1), 0)
Sorry Hansueli

AW: Wie mehr als 15 Spalten?
06.05.2014 13:43:54
Daniel
Hi
du gibtst bei der Match-Funktion den 3. Parameter nicht an.
damit verwendest du die Match-Funktion mit 3. Parameter = 1, weil VBA hier die 1 als Wert ergänzt, wenn du keine Angaben machst.
dies hat für dich folgende konsequenzen:
a) die Liste muss aufsteigend sortiet sein, damit die Funktion ein sinnvolles Ergebnis liefert
b) wird der Suchbegriff nicht gefunden, so erzeugt die Funktion keinen Fehler, sondern es wird der nächstkleinere Wert als Ergebnis verwendet.
du solltest hier die Match-Funktion mit 3. Parameter = 0 verwenden, denn dann dürfen die die Werte unsortiert sein und du bekommst deinen Fehler, wenn der Suchwert nicht vorhanden ist:
lCol = Application.Match(cTitelZeile, Rows(1), 0)

insgesamt finde ich deinen Code etwas aufwendig.
das geht auch einfacher:
With ActiveSheet
on Error Resume Next
.Rows(1).Find(What:=cTitelZeile, lookat:=xlwhole).EntireColumn.Replace cFind, cReplace, xlwhole
if err  0 Then MsgBox "Keine Spalte ....", vbExclamation, "Abbruch"
On Error Goto 0
End With
Gruß Daniel

Anzeige
aufwendig vs. lesbar und verständlicher (owT)
06.05.2014 13:57:24
EtoPHG

AW: aufwendig vs. lesbar und verständlicher (owT)
06.05.2014 14:05:11
Dani
Hey Hansueli
Funktioniert wunderbar. Einfach HAAAAMMER!!! Vielen Dank für deine Hilfe.
@Daniel danke für deinen Input. Aber für einen nicht Entwickler nicht einfach nachzuvollziehen.
Hansuelis Skript ist sauber aufgelistet, verständlich und das wichtigste es macht was es soll.
Nochmals vielen Dank :)

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige