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

Warum hängt sich Excel bei folgendem Code auf?

Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 10:42:21
Fabian
Hallo,
ich habe leider kaum VBA Kenntnisse, benötig es aber für ein Projekt und habe dann mit Hilfe von Google und Try and Error den Code des folgenden Dummys erstellt.
Gedanke dahinter ist, dass man auf dem Tabellenblatt 1 den Energieträger, das Betriebsjahr und den Monat per Dropdown auswählt. Excel soll sich dann automatischen die dazugehörigen Werte aus Tabelle 2 suchen. Habe versucht das ganze mit HLOOKUP umzusetzen. Hat soweit auch geklappt und ich kann mit den Werten weiterrechnen. Sobald ich mir allerdings mehr als eins der drei Zwischenergebnisse zur Kontrolle ausgeben lasse, hängt sich Excel sofort auf.
Kann mir jemand sagen woran das liegt?
Hier der Dummy: https://www.herber.de/bbs/user/134081.xlsm
Vielen Dank für eure Hilfe
Fabian

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

Betreff
Datum
Anwender
Anzeige
AW: Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 10:51:38
Fabian

Private Sub Worksheet_Change(ByVal Target As Range)
'Energieträger auswählen
If Range("D2").Value = "Solare Strahlungsenergie" Then
'Werte zu gewähltem Bundesland finden
Dim B As String
B = Range("G2")
Dim BB As Variant
BB = WorksheetFunction.HLookup(B, Sheets("Tabelle2").Range("B6:Q7"), 2, False)
'Werte zu Inbetriebnahmejahr finden
Dim J As Long
J = Range("G5")
Dim JJ As Variant
JJ = WorksheetFunction.HLookup(J, Sheets("Tabelle2").Range("B2:S3"), 2, False)
'Werte zu Inbetriebnahmenmonat finden
Dim M As String
M = Range("G6")
Dim MM As Variant
MM = WorksheetFunction.HLookup(M, Sheets("Tabelle2").Range("B10:M11"), 2, False)
'gefunden Werte ausgeben
Range("D12").Value = BB
Range("D13").Value = JJ
Range("D14").Value = MM
End If
End Sub
Das hier ist der entspechende Code
Anzeige
AW: Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 11:07:22
Christian
hallo Fabian,
abgesehen von den falschen Zelladressen (siehe Antwort von Onur)...
du musst den Bereich, in dem das Worksheets-Change Ereignis augewertet werden soll, auf die Zelle "D2" beschränken. Anderfalls wird das Ereignis bei jedem Schreiben und Überschreiben der Zellen "D12" bis "D14" immer wieder neu ausgelöst und das führt zu einer Endlos-Schleife.
Bsp:
Schreibe als erste Zeile:
If Intersect(Range("D2"), Target) Is Nothing Then Exit Sub
Gruß
Christian
AW: Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 11:29:57
Fabian
Vielen Dank habe das Problem gelöst.
AW: Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 10:57:28
onur

Dim J As Long
J = Range("G5")
In G5 steht z.B. "November" - wieso also Long?
JJ = WorksheetFunction.HLookup(J, Sheets("Tabelle2").Range("B2:S3"), 2, False)

Du suchst somit "November" in B2:S3 - also da, wo Jahreszahlen stehen ?
Anzeige
AW: Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 11:06:31
Fabian
Oh Entschuldigung das war ein Fehler beim übertragen auf den Dummy.
Es lautet:
Dim J As Long
J = Range("G4")
und
Dim M As String
M = Range("G5")
dann sucht er auch an der richtigen Stelle nach der Jahreszahl.
Das Problem mit den Aufhängen bleibt dadurch aber leider bestehen.
AW: Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 11:21:09
onur
Am Anfang der Sub:
Application.EnableEvents = False
und direkt vor End Sub:
Application.EnableEvents = True
AW: Warum hängt sich Excel bei folgendem Code auf?
02.01.2020 11:51:20
Werner
Hallo,
du mußt den Bereich, bei dem bei Änderung der Code ausgelöst wird, auf den Bereich deiner DropDown Zellen beschränken. Dann brauchst du kein ApplicationEvents = False bzw. True nicht.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim raBereich As Range
Set raBereich = Range("D2,G2:G5")
'Energieträger auswählen
If Not Intersect(Target, raBereich) Is Nothing Then
If Range("D2") Like "Solar*" Then
'Werte zu gewähltem Bundesland finden
Range("D12") = WorksheetFunction.HLookup(Range("G2"), Sheets("Tabelle2") _
.Range("B6:Q7"), 2, False)
'Werte zu Inbetriebnahmejahr finden
Range("D13") = WorksheetFunction.HLookup(Range("G5"), Sheets("Tabelle2") _
.Range("B10:M12"), 2, False)
'Werte zu Inbetriebnahmenmonat finden
Range("D14") = WorksheetFunction.HLookup(CLng(Range("G4")), Sheets("Tabelle2") _
.Range("B2:S3"), 2, False)
End If
End If
Und deine ganzen Variablen brauchst du doch auch nicht, du kannst doch das Ergebnis des Loopup direkt in die Zellen schreiben lassen.
Gruß Werner
Anzeige

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige