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.

Makro läuft nach anderer Prozedur nicht mehr
#1
Hallo beisammen,

ich habe ein Problem, dass ich nicht verstehe, Ggf. hat ja wer schonmal Erfahrung damit gemacht. 
Ich habe mehrere Prozeduren und Formulare in einem Arbeitsblatt. Die funktionieren alle auch ganz gut. Sowie folgende:  "derivateberein()". Diese geht aber nicht mehr, wenn ich die Prozedur (unten)  "Private Sub CommandButton2_Click()" der Userform durchlaufen lassen habe. alles andere funktioniert weiterhin nur die "Replace" macht er nicht mehr. Erst wieder wenn ich alles schließe und neu öffne.
Woran kann das liegen?

Code:
Sub derivateberein()
Dim i as long
i = Tabelle3.Cells(Tabelle3.Rows.Count, 5).End(xlUp).Row
With Range(Tabelle3.Cells(9, 7), Cells(i, 7))

    .Replace What:=" CN", Replacement:=""
    .Replace What:=" MX", Replacement:=""
    .Replace What:="PHEV", Replacement:=""
End With
End Sub

Private Sub CommandButton2_Click()

ListBox1.list = ActiveWorkbook.Sheets("Kontakte").Range("a3:a16").Value
Dim lZeile As Long
lZeile = 9
Do While Trim(CStr(Cells(lZeile, 6).Value)) <> ""
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop   
Cells(lZeile, 3) = Date  'heute
Cells(lZeile, 5) = CStr(ID) ' VU NR
Cells(lZeile, 6) = CStr(VU) ' Vorgang
Cells(lZeile, 7) = CStr(derivate) ' Derivate

Cells(lZeile, 9) = CStr(EK)
Cells(lZeile, 10) = WorksheetFunction.VLookup(ListBox1.Value, ThisWorkbook.Worksheets("Kontakte").Range("A3:C16"), 2, 0)
Cells(lZeile, 16) = CStr(PMlink)
Cells(lZeile, 17) = CStr(ordnerbox)

On Error Resume Next
Cells(lZeile, 11) = CDate(FSK)
Cells(lZeile, 13) = CStr(step)
Cells(lZeile, 14) = Format(CStr(datum), "dd.MM.yyyy")
Cells(lZeile, 16) = CStr(PML)
Cells(lZeile, 17) = CStr(ordnerbox)
'If CheckBox1 = True Then
'Cells(lZeile, 24) = "zu-arbeit"
'End If

If jixbox = True Then
Cells(lZeile, 19) = "JIX"
ElseIf CNbox = True Then
Cells(lZeile, 19) = "CN"
Else
Cells(lZeile, 19) = ""
End If

If bereit = True Then
Cells(lZeile, 25) = "bereit"
End If
   
If Übergabe = True Then
Cells(lZeile, 25) = "Übergabe!"
End If

If Elba = False Then
Cells(lZeile, 30) = "n.r."
End If
If VDB = False Then
Cells(lZeile, 32) = "n.r."
End If
If Kosten = False Then
Cells(lZeile, 33) = "n.r."
End If

Unload Me

End Sub
Antworten Top
#2
Hallöchen,

Zitat:nur die "Replace" macht er nicht mehr

Wie äußert sich das?
- Das Makro muss durch irgendwas gestartet werden
- wird es überhaupt gestartet oder nicht
--> setze einen Haltepunkt an den Anfang des Makros und schaue, was passiert
--> ist bei der Ausführung das richtige Blatt aktiv?
--> ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Moment!
Marko läuft noch, warum soll er auch nicht joggen?
Anderer Prozedur läuft nicht mehr …
Grammatikalisch korrekt wäre ja, dass (die) andere Prozedur nicht mehr läuft.
Oder ist tatsächlich etwas anderes gemeint?

Ich weiß, dies ist böse, aber:
Warum macht sich ein Threadersteller nicht mal die verdammte Mühe, den Quatsch, den er da absondert, kurz gegenzulesen?
Wie soll man eine Frage dann Ernst nehmen?

Fragt sich 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)
Antworten Top
#4
Hallöchen,

Zitat:nur die "Replace" macht er nicht mehr.

wobei mein Hinweis mit dem Blatt nicht relevant ist, da
With Range(Tabelle3.C...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Also die Makros laufen auf Betätigung der Schaltfläche unabhängig von einander durch. Das Makro mit dem Replace funktioniert wie gewollte, bis zu dem Zeitpunkt, wenn ich das Makro der Userform1 aktiviere. Dieses läuft wie gewollt durch und endet. Die Userform schließt sich. Jedoch nach diesem Ereignis geht das Replace Makro bis zum Neustart der Arbeitsmappe nicht mehr. Eine weitere Befehl in dem SUB des Replace Makros wird jedoch ausgeführt. Nur die Replace Befehle werden nicht mehr ausgeführt. 

Beste Grüße
Antworten Top
#6
Hallo,

teste mal damit:

Code:
Sub derivateberein()
  Dim i As Long
  With Tabelle3
    i = .Cells(.Rows.Count, 5).End(xlUp).Row
    With Range(.Cells(9, 7), .Cells(i, 7))
      .Replace What:=" CN", Replacement:=""
      .Replace What:=" MX", Replacement:=""
      .Replace What:="PHEV", Replacement:=""
    End With
  End With
End Sub

Gruß Uwe
Antworten Top
#7
Hi Uwe,


Danke für deinen Vorschlag, aber es ist das selbe Problem. Die Prozedur funktioniert nur solange, bis das Makro der Userform durchgelaufen ist. Komisch ist nur das der untere Teil nach wie vor ausgeführt wird. Nur der Replace Teil geht dann nicht mehr.

Sub derivateberein()
'Derivate aus "Vergabe" bereinigen
Dim Werte, k, i As Long, j, kk, arrW, strA As String

With Tabelle3
i = .Cells(Tabelle3.Rows.Count, 5).End(xlUp).Row


With Tabelle3.Range(Cells(9, 7), Cells(i, 7))

    .Replace What:=" CN", Replacement:="" 
    .Replace What:=" MX", Replacement:=""
    .Replace What:="PHEV", Replacement:=""

  Werte = .Value
      For k = 1 To UBound(Werte)
      arrW = Split(Werte(k, 1), " ")
      strA = ""
        For Each kk In arrW
          If Len(kk) < 4 Or Len(kk) > 8 Then strA = strA & " " & kk
        Next kk
      Werte(k, 1) = Mid(strA, 2)
    Next k
    .Value = Werte

End With
End With

End Sub
Antworten Top
#8
hi,

hast du denn mal überprüft was in den Zellen drin steht die du "replacen" willst?
denn wenn du das Makro aus der Userform laufen lässt wird doch hiermit

Code:
Cells(lZeile, 7) = CStr(derivate) ' Derivate

etwas in die Zellen geschrieben
vielleicht gibt es da nüscht mehr zum "replacen"

mfg Tom
Antworten Top
#9
Hallöchen,

also, ganz ohne ist das

With Range(Tabelle3.Cells(9, 7), Cells(i, 7))

da fehlt zumindest 1x die Tabelle3

With Range(Tabelle3.Cells(9, 7), Tabelle3.Cells(i, 7))

da musst Du doch aber eine Fehlermeldung gesehen haben ...


und besser wäre natürlich, wie auch bei Uwe, mit dem With zur Tabelle und dem Bereich (und mit einem Punkt mehr vor dem Range)

With Tabelle3
...
With .Range(.Cells(9, 7), .Cells(i, 7))

... und, "geht nicht mehr" ist keine gute Beschreibung.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#10
Hallo

ich erlaube mir einen dezenten Hinweis, zum Code eines geschätzen Kollegen!

İm Code von Uwe, fehlt bei With der Punkt vor Range! Ich weiss nicht ob das der Fehler ist? Siehe hier:
With Range(.Cells(9, 7), .Cells(i, 7))

mfg gast 123
Antworten Top


Gehe zu:


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