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

Spalte abfragen, ob bestimmter Wert enthalten

Spalte abfragen, ob bestimmter Wert enthalten
30.12.2005 17:04:55
Peter
Guten Tag
Ich speichere täglich (mindestens) eine bestimmte Tabelle aus einer Datei "Master.xls" als neues Worksheet mit einem klar vorgegebenen Namen ab.
Namenskonvention NAXJJJJMMTT_BF, für heute wäre das
NAX20051230.xls
Diese Namen trage ich in der Ursprungsdatei "Master.xls" in einer Tabelle namens "Log" in der Spalte C fortlaufend ein.
Nun kann es sein, dass ich diese Tabelle am gleichen Tag wiederholt bearbeiten muss und neu abspeichern muss. Wenn dies der Fall ist, soll der Dateiname mit einer "2" ergänzt werden (Beispiel heute: "NAX20051230_BF2"), sollte eine dritte nötig sein, mit einer "3" (Beispiel heute: "NAX20051230_BF3").
Ich möchte nun in der Routine, die die Datei speichert, in der Spalte nachschauen, ob der Eintrag bereits besteht und wenn ja, den neuen Dateinamen entsprechend wählen.
Code heute:
...
SavePath = Application.ActiveWorkbook.path
File = ActiveSheet.Name
File = "NAX" & Jahr & File & "BF"
ActiveSheet.Copy
With ActiveWorkbook
.SaveAs SavePath & "\" & File
End With
...
Kann mir jemand einen Hinweis geben, wie eine Abfrage auf Spalte C in Tabelle "Log" lauten kann?
Besten Dank!
Peter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte abfragen, ob bestimmter Wert enthalten
30.12.2005 19:27:20
Reinhard
Hi Peter,
Option Explicit
Sub neu()
Dim zei As Long, Stempel As String
With Worksheets(1)
zei = .Range("C65536").End(xlUp).Row
Stempel = "NAX" & Year(Now()) & Month(Now()) & Day(Now()) & "_BF"
If InStr(Range("C" & zei).Value, Stempel) > 0 Then
If Len(Stempel) = Len(Range("C" & zei)) Then Range("C" & zei) = Range("C" & zei) & 0
Range("C" & zei) = IIf(Len(Stempel) = Len(Range("C" & zei)), Stempel & 1, Stempel & CInt(Mid(Range("C" & zei), Len(Stempel) + 1)) + 1)
Else
Range("C" & zei + 1) = Stempel
End If
End With
End Sub

Gruß
Reinhard
ps:Das Forum lebt auch von Rückmeldungen.
Anzeige
AW: Spalte abfragen, ob bestimmter Wert enthalten
30.12.2005 21:24:35
Peter
Hallo Reinhard
Vielen Dank für den Code.
Für die Integration in meinem Code habe ich folgendes vorgenommen:
*Ich rufe den diesen

Sub (Name nAttachment) aus dem bisherigen Code mit Call nAttachment auf.
*Da in dieser Zusatzschlaufe der Eintrag des Dateinamens nicht erfolgt (da bereits anderweitig vorgesehen), habe ich etwas umgebaut, und zwar muss dieser Zusatzcode nur der Variablen "Stempel", die ich als Public definiert habe, die Bezeichnung des Dateinamens übergeben, der dann im anderen 

Sub wieder übernommen wird.
*Die Tabelle, wo die Namen protokolliert werden, ist nicht dieselbe, die versandt wird. Deshalb habe ich aus with.worksheet(1) with.worksheet("Log") gemacht
Mein Problem ist, dass er die Schlaufe gut durchläuft, dass jedoch bei Vorhandensein des "Standardnamens" keine 1 angehängt wird. Habe ich etwas kaputt gemacht?
Danke für Feedback.
Peter
Option Explicit
Public Stempel As String
'Name bestimmen für das Attachment
'bei Def_Mail BFJJJJMMTTNAV, zweites Mail BFJJJJMMTTNAV2, etc.
'bei DraftMail  BFJJJJMMTTNAV_Vorausmail, zweites Mail BFJJJJMMTTNAV_Vorausmail2, etc.

Sub nAttachment()
Dim zei As Long
With Worksheets("Log")
zei = .Range("C65536").End(xlUp).Row
Stempel = "BF" & Year(Now()) & Month(Now()) & Day(Now()) & "NAV"
If InStr(Range("C" & zei).Value, Stempel) > 0 Then
If Len(Stempel) = Len(Range("C" & zei)) Then Range("C" & zei) = Range("C" & zei) & 0
Stempel = IIf(Len(Stempel) = Len(Range("C" & zei)), Stempel & 1, Stempel & CInt(Mid(Range("C" & zei), Len(Stempel) + 1)) + 1)
Else
End If
End With
End Sub

Anzeige
AW: Spalte abfragen, ob bestimmter Wert enthalten
31.12.2005 11:05:01
Peter
Hallo Reinhard
Aufgrund deines Beitrags war es mir nun möglich, eine massgeschneiderte Lösung für mich zu schreiben (vgl. nachfolgend).
Nochmals herzlichen Dank für die für mich sehr wertvollen Denkastösse.
Gruss, Peter
Option Explicit
Public Stempel As String

Sub nDatei()
'Name bestimmen für Datei
'erster Name: BFJJJJMMTTNAV, zweites Mail BFJJJJMMTTNAV2, etc.
Dim zei As Long  'Zeile mit Eintrag des letzten Namens
Dim Stellen As Long 'Stellen des Dateinamens
Dim origLaenge As Long 'Originallänge (wenn kein Zusatz, dann identisch mit Stellen)
Dim WertRechts As Long 'Extension ab Originallänge des Dateinamens (sofern zutreffend)
Dim letzterName As String 'zuletzt eingetragener Name
Dim Jahr As String
ThisWorkbook.Activate
With Worksheets("Log_def")
zei = .Range("C65536").End(xlUp).Row
Jahr = Sheets("Parameter").Range("Jahr")
Stempel = "BF" & Jahr & vFile & "NAV"  'entspricht originallänge
origLaenge = Len(Stempel)
Stellen = Len(Sheets("log_def").Range("C" & zei))
letzterName = Sheets("Log_def").Range("C" & zei)
WertRechts = 0
If Stellen > origLaenge Then WertRechts = Mid(letzterName, origLaenge + 1, 99)
If Stempel = Left(letzterName, origLaenge) Then Stempel = Stempel & WertRechts + 1
End With
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige