Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datei vorhanden, dann MsgBox
#21
Code:
Private Sub Worksheet_Activate()
Dim AktuPfad As String

 AktuPfad = ThisWorkbook.Path
 
 If Range("C106").Value = 1 Then
   If Dir(AktuPfad & "\" & Range("B111").Value) <> "" Then MsgBox "B111" ' Ist das hier die 2. IF ?
   If Dir(AktuPfad & "\" & Range("C111").Value) <> "" Then MsgBox "C111"
   If Dir(AktuPfad & "\" & Range("D111").Value) <> "" Then MsgBox "D111"
   If Dir(AktuPfad & "\" & Range("E111").Value) <> "" Then MsgBox "E111"
   If Dir(AktuPfad & "\" & Range("F111").Value) <> "" Then MsgBox "F111"
   If Dir(AktuPfad & "\" & Range("G111").Value) <> "" Then MsgBox "G111"
 Else
   Exit Sub ' Wenn hier drunter noch was kommt was nicht ausgeführt werden soll wenn C106 <> 1 ist dann so!
 End If

End Sub
Habe das mal versucht zu kürzen!
Was ist denn die 2. IF?
[-] Folgende(r) 1 Nutzer sagt Danke an Basisa für diesen Beitrag:
  • o0Julia0o
Antworten Top
#22
Danke Dir, schauan. Jetzt sieht es dann so aus(in Pink mal markiert, wo sich etwas geändert hat):
Private Sub Worksheet_Activate()
Dim AktuPfad As String
 AktuPfad = ThisWorkbook.Path
  If Worksheets("Calc3").Range("C106") = 1 Then
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("B111")) <> "" Then
        MsgBox "B111"
   End If
 Else: End Sub
  End If

    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("C111")) <> "" Then
        MsgBox "C111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("D111")) <> "" Then
        MsgBox "D111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("E111")) <> "" Then
        MsgBox "E111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("F111")) <> "" Then
        MsgBox "F111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("G111")) <> "" Then
        MsgBox "G111"
    End If
End Sub

Ich erhalte dann "Laufzeitfehler '13': Typen unverträglich":
[url=
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Wobei mir dann die 5. Code-Zeile gelb markiert wird: "If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("B111")) <> "" Then"

@Basisa
genau, das ist die 2. If:
Code:
If Dir(AktuPfad & "\" & Range("B111").Value) <> "" Then MsgBox "B111"
Antworten Top
#23
If Worksheets("Calc3").Range("C106") = 1 Then
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("B111")) <> "" Then
        MsgBox "B111"
   Else
       Exit Sub ' Exit nicht END ( END steht NUR am Ende ^^ )
   End If

    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("C111")) <> "" Then
        MsgBox "C111"
   ....
   ....
  
!!! Kannst dir ja noch die kurze Version von mir oben ansehen !!!

##############################################

Es kann immer nur so aussehen:


Code:
IF [Anweisung] Then [Anweisung]


oder

Code:
IF [Anweisung] Then
    [1.Anweisung]
    [2.Anweisung]
End IF

oder


Code:
IF [Anweisung] Then
    [1.Anweisung]
    [2.Anweisung]
ELSE
    [Anweisung was sonst machen?]
End IF

und um es zu vervollständigen


Code:
IF [Anweisung] Then
    [1.Anweisung]
ELSEIF [Anweisung] Then
    [2.Anweisung]
End IF
###############################################################

Wenn ich das richtig sehen könntest du es so machen:

Code:
If Range("C106").Value = 1 Then
   If Dir(AktuPfad & "\" & Range("B111").Value) <> "" Then
      MsgBox "B111"
   ElseIf Dir(AktuPfad & "\" & Range("C111").Value) <> "" Then
      MsgBox "C111"
   ElseIf Dir(AktuPfad & "\" & Range("D111").Value) <> "" Then
      MsgBox "D111"
   ElseIf ............................
       .....
    End If
End If
[-] Folgende(r) 1 Nutzer sagt Danke an Basisa für diesen Beitrag:
  • o0Julia0o
Antworten Top
#24
jo, hatte den Post noch gesehen, als ich bereits geantwortet hatte. Jedoch kann der nicht funktionieren, da B111 z.B. auf dem Tabellenblatt Calc3 sich befindet. Ein anderes Tabellenblatt wo der Code drauf ausgeführt wrid.
Wenn ich das so ändere:
Private Sub Worksheet_Activate()
Dim AktuPfad As String
 AktuPfad = ThisWorkbook.Path
  If Worksheets("Calc3").Range("C106") = 1 Then
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("B111")) <> "" Then
        MsgBox "B111"
    Else
    Exit Sub
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("C111")) <> "" Then
        MsgBox "C111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("D111")) <> "" Then
        MsgBox "D111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("E111")) <> "" Then
        MsgBox "E111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("F111")) <> "" Then
        MsgBox "F111"
    End If
    If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("G111")) <> "" Then
        MsgBox "G111"
    End If
End Sub

Dann erhalte ich den gleichen Fehler wie zuvor: "Laufzeitfehler '13': Typen unverträglich". Wobei mir dann ebenfalls wie zuvor die 5. Code-Zeile gelb markiert wird: "If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("B111")) <> "" Then"
Antworten Top
#25
Moin Basisa! ;)
Zitat:Exit Sub ' Exit nicht END ( END steht NUR am Ende ^^ )

Ich muss mal wieder ein wenig klugsch…
Sub RPP()
End
MsgBox "Warum werde ich nicht angezeigt?"
End Sub

Es darf dann aber nur End, nicht End Sub heißen.
Exit Sub ist aber stringenter, da gebe ich Dir natürlich Recht (und ich mache dies auch IMMER so).

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • o0Julia0o
Antworten Top
#26
Pauschal sehe ich das hier noch ein END IF fehlt:

.........
       If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("G111")) <> "" Then
          MsgBox "G111"
       End If
   End If ' Um die 1. IF Anweisung zu schließen
End Sub


Schaue dir mal das mit ElseIF von mir oben an, das wer besser!
[-] Folgende(r) 1 Nutzer sagt Danke an Basisa für diesen Beitrag:
  • o0Julia0o
Antworten Top
#27
Hallo

der Code bietet sich an um über eine For Next Schleife zu arbeiten.  Anbei mal ein Demo Version die Leere Zellen mit anzeigt.
Man kann ihn nach belieben veraendern und auf eigene Wünsche zuschneiden.

mfg  Gast 123

Code:
Private Sub Worksheet_Activate_Neu()
Dim AktuPfad As String
Dim ZellAdr As String, Datei As Variant
AktuPfad = ThisWorkbook.Path

If Range("C106").Value = 1 Then
  For j = 1 To 6
     Datei = Trim(Range("B111").Cells(1, j))
     ZellAdr = Range("B111").Cells(1, j).Address(0, 0)
     If Datei = Empty Then
        MsgBox ZellAdr & "  Zelle ist Leer"
     ElseIf Dir(AktuPfad & "\" & Datei) <> "" Then MsgBox ZellAdr
     End If
  Next j
Else
  MsgBox "Zelle C106 ist nicht auf 1 gesetzt"
End If
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • o0Julia0o
Antworten Top
#28
(25.02.2017, 18:20)Basisa schrieb: Wenn ich das richtig sehen könntest du es so machen:

Code:
If Range("C106").Value = 1 Then
   If Dir(AktuPfad & "\" & Range("B111").Value) <> "" Then
      MsgBox "B111"
   ElseIf Dir(AktuPfad & "\" & Range("C111").Value) <> "" Then
      MsgBox "C111"
   ElseIf Dir(AktuPfad & "\" & Range("D111").Value) <> "" Then
      MsgBox "D111"
   ElseIf ............................
      .....
   End If
End If
Danke. Das geht nicht aus folgenden Gründen:

1. Also ich darf nicht Range("B111").Value schreiben, da sich B111 & die anderen Felder nicht in dem Tabellenblatt befindet, wo der Code ist.
2. Mit Eliseif, würde nur der Code von Eliseif ausgeführt werden, wenn die davorliegende If-Anweisung Unwahr ist. Es sollen aber alle If-Anweisungen ausgeführt werden, wenn die 1. If-Anweisung( If Worksheets("Calc3").Range("C106") = 1 Then) Wahr ist.

Darf man eigentlich statt:
Code:
Else
Exit Sub
auch
Code:
Elise: Exit Sub
schreiben?

(25.02.2017, 18:31)Basisa schrieb: Pauschal sehe ich das hier noch ein END IF fehlt:

.........
       If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("G111")) <> "" Then
          MsgBox "G111"
       End If
   End If ' Um die 1. IF Anweisung zu schließen
End Sub
jupp - der Fehler bleibt aber trotzdem identisch.
Antworten Top
#29
Also Elise schon mal nicht ^^

Elise: ' das ist eine Sprungmarke, also nein darf man nicht ^^

Beispiel

Sub Test()

Anfang:

Code hier und da...

If Range("B111") = "Noch eine Runde" Then GoTo Anfang ' Er springt wieder nach oben

End Sub

Also bei mir läuft es ohne Probleme...
Ist bei dir vielleicht ein Fehler in den Zellen B111 oder so? Vielleicht mit ein "/" am Anfang, das es also doppelt vorkommt?
Und schreibst du nie .Value oder etc.?

Code:
Private Sub Worksheet_Activate()
Dim AktuPfad As String
AktuPfad = ThisWorkbook.Path
 If Worksheets("Calc3").Range("C106") = 1 Then
   If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("B111")) <> "" Then
       MsgBox "B111"
   End If
   If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("C111")) <> "" Then
       MsgBox "C111"
   End If
   If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("D111")) <> "" Then
       MsgBox "D111"
   End If
   If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("E111")) <> "" Then
       MsgBox "E111"
   End If
   If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("F111")) <> "" Then
       MsgBox "F111"
   End If
   If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("G111")) <> "" Then
       MsgBox "G111"
   End If
 End If
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Basisa für diesen Beitrag:
  • o0Julia0o
Antworten Top
#30
W A R N U N G    v o r    E n d   A n w e i s u n g

@Ralf   Hallo Ralf
Zitat:Sub RPP()
End

ich möchte alle Frager und Kollegen im Forum ausdrücklich vor den bösen Tücken der End Anweisung Warnen !!

Mit diesem Befehl habe ich, weil ich seine Konseqenz nicht kannte, als Ratgeber einmal drei Dateien zerstört!!

Die End Anweisung  - bedeutet Unwiderruflich Ende.   Er bricht  -ALLE-  laufenden Programme ab!!

Ein Frager hatte in einer Firme mehrere Datein am laufen, als er eine Beispieldatei von mir mit End Anweisung AHNUNGSLOS öffnete und das Makro ausprobierte. Dann standen alle Makros still, alle öffentlichen Deklarationen und mit Public definierten Variablen waren gelöscht  Nimmt man gerade Daten aus dem Internet auf, die noch nicht gespeichert sind, ist das sehr sehr haesslich.  Wie der geflucht hat muss ich euch sicher nicht erklaeren!!

Ich benutze den Befehl selbst beim Testen meiner Makros, weil er jedes Programm beendet. Aber ich habe dann nur eine Beispieldatei offen, wo das keine Rolle spielt. Gebe ich aber Makros für Firmen raus darf dieser Befehl Nie im Makro vorkommen!!

Ich weiss nicht ob diese Tücke des  End-Befehls  allgemein bekannt ist??

mfg  Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • o0Julia0o
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste