Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
420to424
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
420to424
420to424
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Strings vorne und hinten kappen und KGrösste

Strings vorne und hinten kappen und KGrösste
27.04.2004 23:50:38
Fritz Sanne
Hallo, liebe Excel-Freunde.
Ich habe mal wieder ein Problem.
In Spalte A meiner Tabelle Daten stehen Aktenzeichen, zur Zeit noch im Format z.B. 33/04, 45/04, 95/99 u.s.w.
Mit Teilen des unten stehenden Codes habe ich es auch geschafft, den laufenden Jahrgang zu ermitteln und dann über die Funktion Kgrößte +1 das neue Aktenzeichen für einen neuen Datensatz zu erstellen.
Nun möchte ich dem Aktenzeichen aber ein „FA“ als Suffix davorstellen.
Meine Frage ist: Wie kann ich die beiden Instr verbinden, damit in meiner Hilfsspalte columns(98) weder 04 rechts vor meinem gesuchten Wert steht, und FA links von ihm?
Hier meine Bastelarbeit dazu:

Sub Neues_Aktenzeichen_Erstellen()
Dim bereich As Range, Bereich1 As Range, zelle As Range
Dim AZ As String, AZ2 As String
Dim zeichen As Integer, Leerzeichen As Integer
Dim Wert As Single
Sheets("Daten").Activate
Set bereich = Range("A:A")
For Each zelle In bereich
If IsEmpty(zelle) Then Exit For
If Right(zelle, 2) = Format(Date, "yy") And Left(zelle, 2) = "FA" Then
If Not IsEmpty(zelle) Then
zeichen = InStr(zelle, "/")
Leerzeichen = InStr(zelle, " ")
AZ = Left(zelle, zeichen - 1)
AZ2 = Mid(zelle, Leerzeichen + 1)
zelle.Offset(0, 98) = AZ
End If
End If
Next zelle
Set Bereich1 = Range("CU:CU")
Wert = Application.WorksheetFunction.Large(Bereich1, 1) + 1
AZ = Wert & "/" & Format(Date, "YY")
Range("CU:CU").Clear
Range("A2").Select
Selection.EntireRow.Insert
Selection.Font.Bold = False
Selection.RowHeight = 13
Range("A2").Value = "FA " & Wert & "/" & Format(Date, "YY")
'MsgBox "FA " & Wert & "/" & Format(Date, "YY")
FelderFüllen
End Sub

Ohne Eure Hilfe hänge ich sonst wohl wieder die ganze Nacht an dem Problem.
Ich bedanke mich schon mal ganz herzlich.
Fritz

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

Betreff
Datum
Anwender
Anzeige
AW: Strings vorne und hinten kappen und KGrösste
28.04.2004 00:34:19
Ramses
Hallo Fritz
AZ = Left(zelle, zeichen - 1)
'Das verstehe ich nicht
'Für was brauchst du die Variable AZ2 ?
AZ2 = Mid(zelle, Leerzeichen + 1)
'so sollte es gehen, du hast es ja schon in der Msgbox geschrieben
zelle.Offset(0, 98) = "FA " & Wert & "/" & Format(Date, "YY")
Gruss Rainer
AW: Strings vorne und hinten kappen und KGrösste
28.04.2004 01:33:02
Fritz Sanne
Hallo, Ramses.
Na, auch noch wach :-)
Das Problem war(!) folgendes.
Zuerst hatte ich nur die AZ in der Form 00/00. Da klappte das ganz toll - da brauchte ich die Variable AZ2 auch noch nicht. Das steht in der MsgBox.Dann kam ich aber auf den Trichter, dieses Suffix FA vor zu hängen (es kommen noch andere dazu), und da klappte es nun nicht mehr.
Ich habe mir jetzt so geholfen, dass ich zunächst die AZ ohne 04 in eine Hilfsspalte übertrage und in dieser Hilfsspalte dann die FA's davor kappe und diese Werte dann in eine weitere Hilfsspalte schiebe. Da habe ich dann, was ich brauche. Dazu habe ich, weil das im gleichen Makro passiert, noch neue Bereiche und Variablen deklarirt, eben auch AZ2.
So geht es, ist aber vielleicht nicht sonderlich elegant.
Ein Problem habe ich aber noch.
Ich muss die gesamte zweite Hilfsspalte durcharbeiten lassen und das dauert mir zu lange.
Da nicht alle Reihen besetzt sind, kann ich auch nicht IsEmpty Exit For nehmen.
Ach, da fällt mir ein, dass ich nach der Spalte sortieren lassen kann, dann habe ich sie zusammen und kann den benutzten Teil auswerten.
Oder hast Du 'ne bessere Idee?
So sieht mein code jetzt aus:
Die Auskommentierungen muss ich noch bearbeiten.
Nett, dass Du dir das angesehen hast.
Grüße, Fritz

Sub Neues_Aktenzeichen_Erstellen()
Dim bereich As Range, Bereich1 As Range, Bereich2 As Range, zelle As Range, zelle1 As Range
Dim AZ As String, AZ2 As String
Dim zeichen As Integer, Leerzeichen As Integer
Dim Wert As Single
Sheets("Daten").Activate
Set bereich = Range("A:A")
For Each zelle In bereich
If IsEmpty(zelle) Then Exit For
If Right(zelle, 2) = Format(Date, "yy") And Left(zelle, 2) = "FA" Then
If Not IsEmpty(zelle) Then
zeichen = InStr(zelle, "/")
AZ = Left(zelle, zeichen - 1)
zelle.Offset(0, 98) = AZ
End If
End If
Next zelle
Set Bereich1 = Range("CU2:CU20")
For Each zelle1 In Bereich1
Leerzeichen = InStr(zelle1, " ")
AZ2 = Mid(zelle1, Leerzeichen + 1)
zelle1.Offset(0, 1) = AZ2
Next zelle1
'Set Bereich2 = Range("CV:CV")
'Wert = Application.WorksheetFunction.Large(Bereich1, 1) + 1
'AZ = Wert & "/" & Format(Date, "YY")
'Range("CU:CU").Clear
'Range("A2").Select
'Selection.EntireRow.Insert
'Selection.Font.Bold = False
'Selection.RowHeight = 13
'Range("A2").Value = "FA " & Wert & "/" & Format(Date, "YY")
'MsgBox "FA " & Wert & "/" & Format(Date, "YY")
'FelderFüllen
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige