Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code Probleme

Code Probleme
13.08.2007 18:51:45
tobiie
Hallo,
habe ein Problem mit einer VBA Anweisung die folgendermaßen aussieht.

Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Application.Calculation = xlManual
With AbStromersparnis1
If .Range("C3") = "Einspeisevergütung" And .Range("C5") = "Deutschland" Then
.Rows("7:83").Hidden = False
.Rows("84:85").Hidden = True
.Range("C84").ClearContents
Else
.Rows("7:83").Hidden = True
.Range("C78").ClearContents
.Range("C82").ClearContents
.Rows("84:85").Hidden = False
End If
End With
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub


Ich will im Blatt eins über eine Länderauswahl in Blatt 2 (Abstromersparnis) eine Veränderung herbei führen. Die Länderauswahl wird zum einen abgefragt zum anderen im Blatt 2 mit einer wenn Funktion verknüpft. Durch diese wenn Funktion wird wenn Deutschland einigstellt wird im Feld C5 Einspeisevergütung erscheinen. Das Funktioniert wunderbar.
Nun soll aber über den oben gezeigten Code ein Automatismus hergestellt werden. d.h. wird dir Länderauswahl auf Deutschland gestellt sollen sich die Angegebenen Reihen aus bzw. einblenden.
Zusätzlich natürlich bei anderer Länderauswahl der umgekehrte Fall und das automatisch.
Leider Funktioniert der Code nicht automatisch erst wenn ich in Blatt 1 eine CommandButton betätigen funktioniert es. Das soll geändert werden.
Außerdem habe ich das Problem seit ich diesen Code generiert habe mit der Automatic und manuell Funktion. D.h. es stellt sich teilweise die manuell Funktion ein. Die ich über extras optionen usw. zurücksetzen muss auf automatic.
Bin für jede Antwort, Anregung oder Tipp dankbar.
Gruß Tobi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code Probleme
14.08.2007 05:42:00
Luc:-?
Hallo Tobi,
eigentlich heißen die Berechnungskonstanten xlCalculationAutomatic, xlCalculationSemiAutomatic und xlCalculationManual, aber vielleicht geht's ja auch so... ;-)
Ich würde allerdings Worksheet_Change empfehlen, da könntest du gleich fragen, ob Target C3 oder C5 entspricht...

If Not Intersect(Target, .Range("C3"), .Range("C5") Is Nothing Then
End If


Außerdem solltest du am Anfang Application.EnableEvents = False und am Ende Application.EnableEvents = True einfügen, sonst verheddern sich die Berechnungsmodusumstellungen garantiert (was ja wohl bei dir passiert!). Wenn du das nicht machst, löst jede signifikante Veränderung (Aus-/Einblenden löst bspw keine Neuberechnung aus) die Prozedur erneut aus (defacto ineinandergeschachtelt).
Gruß Luc :-?

Anzeige
AW: Code Probleme
15.08.2007 11:30:00
tobiie
Hallo,
leider hat sich kein Automatismus eingestellt. Im Gegenteil es tut sich bei einer Länderauswahl garnichts. Egal was ausgewählt wird.
Habe den Code wie folgt eingegeben.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
With AbStromersparnis1
If Not Intersect(Target, .Range("C3").Range("C5")) Is Nothing Then
If .Range("C3") = "Einspeisevergütung" And .Range("C5") = "Deutschland" Then
.Rows("7:83").Hidden = False
.Rows("84:85").Hidden = True
.Range("C84").ClearContents
Else
.Rows("7:83").Hidden = True
.Range("C78").ClearContents
.Range("C82").ClearContents
.Rows("84:85").Hidden = False
End If
End If
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub


Bin in VBA nicht so bewandert deshalb kann es sein das ich deine Anweisungen falsch umgesetzt habe. Ich hoffe du bzw. die Forum-User können etwas damit anfangen und mir weiterhelfen.
Vielen Dank für alle Antworten im Voraus.
Gruß Tobi

Anzeige
Nee, Tobi, das scheint so richtig zu...
16.08.2007 03:19:54
Luc:-?
...sein. Da wird der Fehler wohl woanders liegen... :-(
Naja, vielleicht kommt ja noch einer (bzw ich) drauf...
Gruß Luc :-?

AW: Code Probleme
14.08.2007 20:39:54
tobiie
Hallo,
vielen Dank für dieAntwort werde es morgen erst testen können. Berichte dann ob es funzt.
Gruß Tobi

AW: Code Probleme
16.08.2007 09:43:42
Dani
Hallo Tobiie,
versuch es mal so:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'Application.Calculation = xlCalculationManual
'Application.ScreenUpdating = False
If Worksheets("AbStromersparnis1").Range("C3") = "Einspeisevergütung" And Worksheets(" _
AbStromersparnis1").Range("C5") = "Deutschland" Then
With Tabelle1
.Rows("7:83").Hidden = False
.Rows("84:85").Hidden = True
.Range("C84").ClearContents
End With
Else
With Tabelle1
.Rows("7:83").Hidden = True
.Range("C78").ClearContents
.Range("C82").ClearContents
.Rows("84:85").Hidden = False
End With
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub


P.S. Mit Application.EnableEvents muss man aufpassen wenn du diese per VBA deaktivierst wird kein weiterer VBA-Code mehr angesprungen z.B. per Change() Event und du kannst in somit nicht mehr über VBA aktivieren...
Gruss Dani

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige