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

Worksheet_Calculate() ScreenUpdating

Worksheet_Calculate() ScreenUpdating
23.06.2006 00:52:16
dennis
Mahlzeit...
warum funktioniert hier nicht das >Application.ScreenUpdating = False
Der Code fokusiert immer Sheet Rechnung Feld F9 (soll ja auch selectiert werden, aber wäre da nich screenupdating.
In Sheet Memo
[code]

Private Sub Worksheet_Calculate()
'Cursorverfolgung abstellen
'ScreenUpdating = False
Application.ScreenUpdating = False
Application.EnableEvents = False
If Sheets("Memo").Range("D1") = 7 Then
Worksheets("Rechnung").Range("F9").Select
Selection.Locked = False
End If
If Not Sheets("Memo").Range("D1") = 7 Then
Worksheets("Rechnung").Range("F9").Select
Selection.Locked = True
End If
'Cursorverfolgung anstellen
'ScreenUpdating = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

[/code]
Gruß und dank.
Gruß aus Hessen
dennis

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Calculate() ScreenUpdating
23.06.2006 01:02:19
Matthias
Hallo Dennis,
statt:

Worksheets("Rechnung").Range("F9").Select
Selection.Locked = False

schreibe:

Worksheets("Rechnung").Range("F9").Locked = False

Dann kannst du dir das ScreenUpdating = False sparen.
Siehe auch https://www.herber.de/xlfaq/xlbasics/main_sel.htm
Gruß Matthias
AW: Worksheet_Calculate() ScreenUpdating
23.06.2006 01:22:08
dennis
Hi
danke für die späte und schnelle Antwort...
Also Sprich:

Private Sub Worksheet_Calculate()
If Sheets("Memo").Range("D1") = "7" Then
Worksheets("Rechnung").Range("F9").Locked
End If
If Not Sheets("Memo").Range("D1") = "7" Then
Sheets("Rechnung").Range("F9").Locked = True
End If
End Sub

Funktioniert insofern nicht, das VB einen Laufzeitfehler (1004) asusspuckt: Die Locked-Eigenschaft des Range-Objektes kann nicht festgelegt werden.
Tjo..Was meinst du dazu? Ich habe mir auch die Selektierungsbelehrung und den Trainern etc..durchgelesen aus Punkt 7 hab ich auch schon ein Dim Set ausprobiert, funktioniert leider ebenfalls nicht...nu gut. mal sehn, was die Zeit zeigt..
gruß
dennis
Anzeige
AW: Worksheet_Calculate() ScreenUpdating
23.06.2006 01:36:04
dennis
Hi
ok, es war natürlich das Problem, dass die Zelle verbunden war
Range("F9:K9").Locked = True
Dann klappts auch mit der Zelle
Gruß und good n8 good f8
dennis
AW: Worksheet_Calculate() ScreenUpdating
23.06.2006 07:33:00
Luschi
Hallo Denis,
mit
ActiveSheet.Range("F9").MergeArea.Locked = True
ist das Problem auch beseitigt.
"MergeArea" stellt die Verbindung zu allen Zellen her, die mit F9 verbunden sind.
Sollte F9 keine verbundenen Zellen haben, dann tritt auch kein Fehler auf die Sperr-Eigenschaft bezieht sich nur auf die Zelle F9.
Möchtest Du in verbundene Zellen einen Wert schreiben, dann mach es so:
ActiveSheet.Range("F9").MergeArea.OffSet(0, 0).Value = 99
Gruß von Luschi
aus klein-Paris
Anzeige
Worksheet_Calculate()
23.06.2006 13:45:57
Dennis
Hi,
danke nochmal für eure Antworten, hat wirklich geholfen.
Mir ist aber ein anderes Problem untergekommen:
Ich habe 2 Sheets in einem Workbook: Rechnung, Memo. In VB-Editor im Sheet Memo habe ich jetzt folgenden Code:

Private Sub Worksheet_Calculate()
'Blattschutz aktivieren
ActiveSheet.Unprotect Password:="xxxx"
'Anrede
If Sheets("Memo").Range("D1") = 7 Then
Worksheets("Rechnung").Range("F9").MergeArea.Locked = False
End If
If Sheets("Memo").Range("D1") = 3 Then
Worksheets("Rechnung").Range("F6").MergeArea.Locked = True
Worksheets("Rechnung").Range("F7").MergeArea.Locked = True
Worksheets("Rechnung").Range("F8").MergeArea.Locked = True
Worksheets("Rechnung").Range("H8").MergeArea.Locked = True
End If
If Not Sheets("Memo").Range("D1") = 3 Then
Worksheets("Rechnung").Range("F6").MergeArea.Locked = False
Worksheets("Rechnung").Range("F7").MergeArea.Locked = False
Worksheets("Rechnung").Range("F8").MergeArea.Locked = False
Worksheets("Rechnung").Range("H8").MergeArea.Locked = False
End If
If Not Sheets("Memo").Range("D1") = 7 Then
Worksheets("Rechnung").Range("F9").MergeArea.Locked = True
End If
'Anderes Datum
If Sheets("Memo").Range("E1") = 3 Then
Worksheets("Rechnung").Range("B10").Locked = False
End If
If Not Sheets("Memo").Range("E1") = 3 Then
Worksheets("Rechnung").Range("B10").Locked = True
End If
'Anzahlung
If Sheets("Memo").Range("F1") = 3 Then
Worksheets("Rechnung").Range("D8:D9").Locked = False
End If
If Not Sheets("Memo").Range("F1") = 3 Then
Worksheets("Rechnung").Range("D8:D9").Locked = True
End If
'Blattschutz aktivieren
ActiveSheet.Protect Password:="xxxx"
End Sub

Wenn ich mich jetzt in einem anderen Workbook befinde, und ich dort irgendwo was eintippe, kommt ein Laufzeitfehler (9): Index außerhalb des gültigen Bereichs.
Mit anderen Worten, wenn ich in einer anderen Mappe was eintippe, versucht diese Mappe auf den Code vom Sheet Memo zurückzugreifen. Komisch?
Gruß dennis
Anzeige
AW: Worksheet_Calculate()
23.06.2006 14:35:19
Luschi
Hallo Denis,
solange man in 1 Excelinstance nur 1 Arbeitsmappe (Workbook) geöffnet hat, sind folgende Befehle zur Instanzierung völlig ausreichend:
ActiveSheet.Unprotect Password:="xxxx"
Worksheets("Rechnung").Range("F9").MergeArea.Locked = False
Sobald aber ein weiteres Workbook dazukommt, können die o.g. Befehszeilen Fehler verursachen, weil in 2 Workbooks es auch 2 ActiveSheets gibt.
Deshalb schreibe das Workbook, welches gemeint ist, auch mit dazu:
Private Sub Worksheet_Calculate()
Dim wb As WorkBook
Set wb = ThisWorkbook
'Blattschutz aktivieren
wb.ActiveSheet.Unprotect Password:="xxxx"
'Anrede
If wb.Sheets("Memo").Range("D1") = 7 Then
wb.Worksheets("Rechnung").Range("F9").MergeArea.Locked = False
End If
If wb.Sheets("Memo").Range("D1") = 3 Then
wb.Worksheets("Rechnung").Range("F6").MergeArea.Locked = True
wb.Worksheets("Rechnung").Range("F7").MergeArea.Locked = True
wb.Worksheets("Rechnung").Range("F8").MergeArea.Locked = True
wb.Worksheets("Rechnung").Range("H8").MergeArea.Locked = True
End If
'' usw.
Set wb = Nothing
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige