Clever-Excel-Forum

Normale Version: Makro läuft nach anderer Prozedur nicht mehr
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
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
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?
--> ...
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
Hallöchen,

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

wobei mein Hinweis mit dem Blatt nicht relevant ist, da
With Range(Tabelle3.C...
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
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
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
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
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.
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
Seiten: 1 2 3