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

if Bedingung

if Bedingung
10.01.2022 19:00:06
Manfred
Guten Abend,
das hier soll normalerweise gemacht werden:
Dim NeuerName As String, Speicherpfad As String
Speicherpfad = "xyz"
NeuerName = Range("A4") & " _ " & Range("A5") & "_noise"
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & " "
Wenn aber die Zelle A5 im Namen ein / hat (das sieht bspw. dann so aus tisch/stuhl), dann soll zweimal gespeichert werden, einmal für Range("A5")=tisch und nochmal gespeichert werden für Range("A5")=stuhl mit dem selben Format wie oben.
Ich habe da meine Schwierigkeiten.

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

Betreff
Datum
Anwender
Anzeige
AW: if Bedingung
10.01.2022 19:06:26
rudi
Hallo,
warum hängst du ein Leerzeichen (& " ") an den Dateinamen?
Am Pfad fehlt der \.

Sub aaa()
Dim NeuerName As String, Speicherpfad As String
Dim tmp, i As Integer
Speicherpfad = "xyz\"
tmp = Split(Range("A5"), "/")
For i = 0 To UBound(tmp)
NeuerName = Range("A4") & " _ " & tmp(i) & "_noise"
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & " "
Next i
End Sub
Gruß
Rudi
AW: if Bedingung
10.01.2022 19:10:49
Oberschlumpf
Hi Rudi,
führt dein Code nicht bei For i = 0 To UBound(tmp) zum Fehler, wenn tmp - nicht - per Split() Inhalte erhält, weil in Zelle A5 kein / enthalten ist?
Manfred erwähnte ja "es kann vorkommen...muss aber nicht"
Ciao
Thorsten
Anzeige
AW: if Bedingung
10.01.2022 23:40:18
Rudi
Hallo Thorsten,
nein.
ubound(split("test","/")) ergibt 0.
Gruß
Rudi
AW: if Bedingung
10.01.2022 19:08:10
Oberschlumpf
Hi Manfred
versuch mal (ungetestet)

Dim NeuerName As String, Speicherpfad As String, lstrSplit As String, liIdx As Integer
Speicherpfad = "xyz"
lstrSplit = Split(Range("A5").Value, "/")
If IsArray(lstrSplit) Then
For liIdx = 0 To UBound(lstrSplit)
NeuerName = Range("A4") & " _ " & lstrSplit(liIdx) & "_noise"
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & " "
Next
Else
NeuerName = Range("A4") & " _ " & Range("A5") & "_noise"
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & " "
End If
Ich versteh nur nicht das Leerzeichen am Ende jedes Dateinamens - aber ok, das war auch nicht Bestandteil deiner Frage.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: if Bedingung
10.01.2022 19:15:00
onur
lstrSplit ist aber immer ein Array, selbst wenn das Trennzeichen nicht gefunden wird, also braucht man nicht auf IsArray zu prüfen. Oder ?
AW: if Bedingung
10.01.2022 19:33:44
Oberschlumpf
hast recht, zumal lstrSplit zwingend mit () dimensioniert werden muss, da es sonst bei UBound(lstrSplit) zum Fehler kommt
Hi Manfred,
versuch es mal hiermit (jetzt ein bisschen getestet)

Dim NeuerName As String, Speicherpfad As String, lstrSplit() As String, liIdx As Integer
Speicherpfad = "xyz"
lstrSplit = Split(Range("A5").Value, "/")
If UBound(lstrSplit) > 0 Then
For liIdx = 0 To UBound(lstrSplit)
NeuerName = Range("A4") & " _ " & lstrSplit(liIdx) & "_noise"
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & " "
Next
Else
NeuerName = Range("A4") & " _ " & Range("A5") & "_noise"
ActiveWorkbook.SaveAs Filename:=Speicherpfad & NeuerName & " "
End If
Hilfts?
Ciao
Thorsten
Anzeige
AW: if Bedingung
10.01.2022 20:17:04
onur
"zumal lstrSplit zwingend mit () dimensioniert werden muss" - Sorry, aber auch da irrst du dich (teilweise).

Dim lstrSplit
bzw

Dim lstrSplit as Variant
reicht.
AW: if Bedingung
11.01.2022 02:56:40
Oberschlumpf
mag sein...aber Dim lstrSplit As String führte bei Ubound(lstrSplit) zum Fehler...nach Änderung auf Dim lstrSplit() kein Fehler mehr....daher mag "zwingend" das falsche Wort gewesen sein, wenn man nich auf String "besteht", sondern sich mit Variant "zufrieden gibt"...schade nur, dass sich Manfred so gar nich mehr meldet
AW: if Bedingung
12.01.2022 22:18:18
Manfred
Hallo,
danke für eure Hilfe. Ich dachte ich hätte was geantwortet. Aber die Nachicht ist irgendwie nicht angekommen. Ich wollte fragen, was genau machen lstrSplit und liIdx?
Anzeige
AW: if Bedingung
13.01.2022 08:51:28
Oberschlumpf
Hi,
wenn A5 ein / enthält, erhält lstrSplit as Arrayvariable alle Einträge aus A5, getrennt durch /
Der Befehl dazu ist Split - und hier die Erklärung https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/split-function
Wenn nicht anders festgelegt, beginnt die Zählung der Einträge in einer Arrayvariablen bei 0. Bei jedem weiteren Eintrag erhöht sich der Zähler.
Wenn lstrSplit Tisch/Stuhl zugewiesen wird, wird daraus lstrSplit(0) = Tisch, lstrSplit(1) = Stuhl
Wenn lstrSplit Tisch/Stuhl/Bett zugewiesen wird, wird daraus lstrSplit(0) = Tisch, lstrSplit(1) = Stuhl, lstrSplit(2) = Bett...usw
Und mit For liIdx wird einfach nur von 0 bis zum letzten Eintrag hochgezählt.
Such auch nach Beschreibungen zu UBound oder LBound.
Hilfts?
Bitte antworte so oft, bis auch deine Antwort hier erscheint.
Ciao
Thorsten
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige