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

Codeanpassung_Change-zu-Sub

Codeanpassung_Change-zu-Sub
12.04.2022 14:28:00
Henny
Hi zusammen!
Ausgangslage:
Der liebe onur hat mir neulich folgende Lösung gebaut:
https://www.herber.de/bbs/user/152367.xlsm
Mit seiner Lösung wird zum einen, wenn ein ja/nein-Wert in den Spalten B-F geändert wird, automatisch eine "Binärvariable" daraus gebaut, als auch gezählt, wie viele verschiedene "Binärcodes" vorliegen (nummeriert also in Spalte H von 1 hoch, gleicher Wert kriegt gleiche Nummer. Gelbe Zellen).
Wenn man dann auf den Button klickt, erzeugt er neue Blätter, abhängig von der Zahl der verschiedenen Binärcodes.
Situation:
Ich habe versucht, den Code auf eine andere Tabelle anzuwenden.
Diese hat aktuell ca. 70 Zeilen.
Das Problem ist, dass mir Excel da leider abstürzt; er führt aus, er schreibt die Nummern neben die Binärcodes, aber dann wird alles "weiß-milchig" und bleibt so für 30min, ich muss dann also mit Task-Manager Excel zumachen.
Was ich bereits versucht habe:
Ich habe den Code an den fetten Stellen zum einen an die Tabelle angepasst (die entsprechenden Spalten sind R und S, also 18 und 19) sowie Anzahl der Zeilen von initial auf 11000 auf 110 gesetzt, in der Hoffnung, dass das das Problem löst.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z, s, o, i As Integer, ze, Code As Object
z = Target.Row: s = Target.Column
If s  26 Then Exit Sub
Set Code = CreateObject("Scripting.Dictionary")
With Code
For ze = 3 To 110
o = CStr(Cells(ze, 18))
If o  "" Then
If Not .exists(o) Then
i = i + 1
.Add o, i
End If
End If
Next ze
End With
For ze = 3 To 110
If Cells(ze, 18)  "" Then Cells(ze, 19) = Code(CStr(Cells(ze, 18)))
Next ze
End Sub
Fragen:
1) Kann jemand so sehen, warum Excel da abstürzt?
2) Ist es möglich, den obigen Code so zu machen, dass er erst auf Button-Druck ausgeführt wird?
Viele Grüße!
Henny

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codeanpassung_Change-zu-Sub
12.04.2022 14:35:27
Rudi
Hallo,
das Prob ist, dass sich der Code selbst aufruft, da er Zellen ändert.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z, s, o, i As Integer, ze, Code As Object
z = Target.Row: s = Target.Column
If s  26 Then Exit Sub
On Error GoTo ERREXIT
Application.EnableEvents = False
Set Code = CreateObject("Scripting.Dictionary")
With Code
For ze = 3 To 110
o = CStr(Cells(ze, 18))
If o  "" Then
If Not .exists(o) Then
i = i + 1
.Add o, i
End If
End If
Next ze
End With
For ze = 3 To 110
If Cells(ze, 18)  "" Then Cells(ze, 19) = Code(CStr(Cells(ze, 18)))
Next ze
ERREXIT:
Application.EnableEvents = True
End Sub
Gruß
Rudi
Anzeige
AW: Codeanpassung_Change-zu-Sub
12.04.2022 14:38:05
Yal
Hallo Henny,
weil ein Worksheet_Change, das in eine Zelle schreibt, ein Worsheet_Change-Ereignis auflöst, das in eine Zelle schreibt, das ein Worksheet_Change-Ereignis auflöst, das in eine Zelle schreibt, das ... (ich höre auf bevor ich selber abstürtze ;-)
Am Anfang "Application.EnableEvents = False"
Am Ende "Application.EnableEvents = True"
VG
Yal
Rudi und Yal like a boss.
12.04.2022 15:04:44
Henny
DANKE IHR BEIDEN!
Beides funktioniert.
Danke vor allem nicht nur für die Lösung, sondern auch fürs Erklären, was da passiert!
Lieben Gruß!
Henny
PS: Das Alter des Kapitäns ist:
...
Eidechse.
:-D
Anzeige
AW: Codeanpassung_Change-zu-Sub
12.04.2022 17:15:26
onur
Mein Code hatte nur bei Änderung der Spalten 2-6 reagiert und in Spalte 8 was verändert, deswegen war es nicht nötig, die Events abzuschalten. Du hast ihn aber so verändert, dass er bei Änderung der Spalten 2 bis 26 reagiert und in Spalte 19 was verändert, womit er sich natürlich dauernd selbst aufruft.
ich habe mich schon gedacht....
12.04.2022 18:23:51
Yal
... dass diese Zustand nicht Dir zuzuschreiben sei, Onur. ;-)
VG
Yal
Danke ihr lieben :)
13.04.2022 10:49:52
Henny
@onur: Danke für die Erklärung, was da passiert! :-D
Ich habe nur gemerkt, ich muss da die Zahl hochdrehen, sonst tut sich nix; WAS sich aber da genau tut, wusste ich bis zu deiner Erklärung nicht :-D
Thanks!
PS: Ich hatte nur einen Thread aufgemacht, weil ich nicht wieder bei dir mit etwas um die Ecke kommen wollte :)
Anzeige
Thread sind nicht ...
13.04.2022 11:25:43
Yal
... dem ersten Antwortenden zugewiesen. Solang eine Thread offen ist (Haken "Frage noch offen" beachten), kann jeder Willigen beitragen. Neue Thread nur bei neue Frage.
Und wenn Du Onur direkt beantworten möchtest, dann am besten direkt auf seinen Beitrag antworten. Ob er eine Antwort liest, die Du auf mienem Beitrag schreibst, ist nicht gewiss.
VG
Yal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige