Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
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

Makro mit Variable ändern

Makro mit Variable ändern
walter
Hallo zusammen,
dieses Makro habe ich auch über das Forum erhalten.
Ich möchte jetzt die Buchstaben ändern in Variable, hatte mal ?
eingesetzt aber leider ohne Erfolg.
Sub deleteValues()
Dim rng As Range, rngDel As Range
With ActiveSheet
For Each rng In .Range("AY4:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row)
'If rng Like "LP*" Then
'If rng Like "PA*" Then
If rng Like "?*" Then
rng = CDate(DateSerial(Mid(rng, 7, 2) * 1, Mid(rng, 5, 2) * 1, Mid(rng, 3, 2) * 1))
Else
If rngDel Is Nothing Then
Set rngDel = rng
Else
Set rngDel = Union(rngDel, rng)
End If
End If
Next
.Range("AY2:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row).NumberFormat = "dd.mm.yy"
End With
If Not rngDel Is Nothing Then rngDel.ClearContents
Set rng = Nothing
Set rngDel = Nothing
End Sub

mfg walter mb

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro mit Variable ändern
09.02.2012 11:31:51
Oberschlumpf
Hi Walter
Anstelle von
If rng Like "LP*" Then
kannst du schreiben

Dim lstrVar As String
lstrVar = "LP*"
If rng Like lstrVar Then
Die DIM-Zeile ganz am Anfang des Codes
Hilfts denn?
Ciao
Thorsten
AW: Makro mit Variable ändern
09.02.2012 11:46:11
Martin
Hi Walter,
probiere es mal mit den code, konnte nur noch nicht testen, sollte aber klappen...
Sub deleteValues()
Dim rng As Range, rngDel As Range
Dim Buchstaben As String
Buchstaben = InputBox("Bitte die gewünschte Buchstabenkombination eingeben!", " _
Buchstabenabfrage") ' in der Abfrage die Buchstaben mit Sternchen eingeben
With ActiveSheet
For Each rng In .Range("AY4:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row)
'If rng Like "LP*" Then
'If rng Like "PA*" Then
If rng Like "" & Buchstaben Then
rng = CDate(DateSerial(Mid(rng, 7, 2) * 1, Mid(rng, 5, 2) * 1, Mid(rng, 3, 2) * 1))
Else
If rngDel Is Nothing Then
Set rngDel = rng
Else
Set rngDel = Union(rngDel, rng)
End If
End If
Next
.Range("AY2:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row).NumberFormat = "dd.mm.yy"
End With
If Not rngDel Is Nothing Then rngDel.ClearContents
Set rng = Nothing
Set rngDel = Nothing
End Sub
Gruß Martin
Anzeige
Leider Fehler
09.02.2012 14:23:55
walter
Hallo Martin,
habe bei der MSGBOX **
eingegeben, bleibt hier stehen:
rng = CDate(DateSerial(Mid(rng, 7, 2) * 1, Mid(rng, 5, 2) * 1, Mid(rng, 3, 2) * 1))
Laufzeitfehler13,
kann man dies auch ohne Box?
mfg walter mb
es wird nichts ausgelesen
09.02.2012 14:26:00
walter
Hallo Thorsten,
es wird nichts ausgelesen.
Hier mein Makro:
da werden alle mit PA am Anfang ausgelesen.
Ich möchte aber egal welche Buchstaben am Anfang stehen auslesen.
Sub deleteValues()
Dim rng As Range, rngDel As Range
Dim lstrVar As String
ActiveSheet.Unprotect (getStrPasswort)
lstrVar = "LP*"
With ActiveSheet
For Each rng In .Range("AY4:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row)
' If rng Like "LP*" Then
' If rng Like lstrVar Then
If rng Like "PA*" Then
rng = CDate(DateSerial(Mid(rng, 7, 2) * 1, Mid(rng, 5, 2) * 1, Mid(rng, 3, 2) * 1))
Else
If rngDel Is Nothing Then
Set rngDel = rng
Else
Set rngDel = Union(rngDel, rng)
End If
End If
Next
.Range("AY2:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row).NumberFormat = "dd.mm.yy"
End With
If Not rngDel Is Nothing Then rngDel.ClearContents
Set rng = Nothing
Set rngDel = Nothing
End Sub

mfg walter mb
Anzeige
AW: es wird nichts ausgelesen
09.02.2012 14:57:15
Oberschlumpf
Hi walter
funzt das nicht einfach mit der Zeile
If rng Like "*PA*" Then
Denn laut Excel-Hilfe! wäre
Test1 = "BAT123khg" Like "B?T*" = True
weil "B?T*" bedeutet: suche nach etwas,
...das mit B beginnt
...dem B folgt ein beliebiges Zeichen, DANN kommt ein T
...und egal was kommt nach dem T
demzufolge bedeutet "*PA*"
finde alles, was mit irgdwas beginnt, aber PA im Inhalt hat und egal, mit was es endet.
Wenn ja, kannst du die Zeile mit lstrVar löschen.
Vielleicht funzt es bei dir nicht, weil der Code nach PA sucht, aber nicth nach pa - du musst also vllt auch bei Groß/Kleinschreibung unterscheiden.
Wenn nein, dann zeig mal bitte eine Bsp-Datei. Zumindest ich hab nich so Lust, deine Datei nachbauen zu müssen, damit ich testen kann, obwohl du die Datei doch schon hast.
Ciao
Thorsten
Anzeige
Sorry Torsten aber
09.02.2012 18:00:13
walter
Hallo Torsten,
leider werden die Buchstaben laufend verändert, deshalb brauch ich
das als Variable.
z.b. ?* aber das klappte bei mir nicht.
mfg Walter mb
sorry walter - no file no party ...owt
09.02.2012 19:50:38
Oberschlumpf
Dann i.o. -)
10.02.2012 08:28:30
walter
Guten Morgen,
DANKE für die bisherige Unterstützung.
mfg walter mb
AW: Sorry Torsten aber
10.02.2012 08:36:54
fcs
Hallo Walter,
du solltest das umsetzen des Zellinhaltes in ein Datum etwas anders angehen. Evtl. funktioniert es so:
Sub deleteValues()
Dim rng As Range, rngDel As Range, strDatum As String
With ActiveSheet
For Each rng In .Range("AY4:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row)
strDatum = rng.Text
If Len(rng) > 2 Then
strDatum = Mid(rng.Value, 3, 6)
If IsNumeric(strDatum) And Len(strDatum) = 6 Then
strDatum = Mid(rng, 3, 2) & "." & Mid(rng, 5, 2) & "." & Mid(rng, 7, 2)
Else
strDatum = rng.Text
End If
End If
If IsDate(strDatum) Then
rng = CDate(strDatum)
Else
If rngDel Is Nothing Then
Set rngDel = rng
Else
Set rngDel = Union(rngDel, rng)
End If
End If
Next
.Range("AY2:AY" & .Cells(.Rows.Count, 51).End(xlUp).Row).NumberFormat = "dd.mm.yy"
End With
If Not rngDel Is Nothing Then rngDel.ClearContents
Set rng = Nothing
Set rngDel = Nothing
End Sub

Gruß
Franz
Anzeige
Klasse, danke Torsten --))
10.02.2012 13:08:51
walter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige