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

Makro von Excel 97

Makro von Excel 97
06.03.2006 11:26:20
Excel
Hallo zusammen,
ich habe unter Excel 97 eine Tabelle erstellt bei der nicht benötigte Zeilen ausgeblendet werden - dazu wurden entsprechende Zellen abgefragt, ob die diese leer sind.
Ausschnitt:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$D$4:$E$4" Then
ActiveSheet.Unprotect
If Range("D4") "" Then
Rows("7:11").EntireRow.Hidden = False
Else
Rows("7:11").EntireRow.Hidden = True
End If
Jetzt haben wir neue Rechner mit Office XP erhalten und das Makro läuft nicht mehr. Soll heißen selbst wenn Zelle D4 gefüllt ist werden die Zeilen 7 bis 11 nicht eingeblendet.
Kann mir hier jemand weiter helfen ?
Danke im voraus
schwippi

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro von Excel 97
06.03.2006 11:58:07
Excel
Hi schwippi,
auf jeden Fall fehlt bei Dir schon mal ein End If. Außerdem verstehe ich nicht warum Du das Makro für D4 und E4 laufen lässt, wenn nur D4 abgefragt wird. Abe egal: ich habe die erste Zeile mal geändert und so müsste das eigentlich laufen:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
   If Not Intersect(Target, Range("D4:E4")) Is Nothing Then
   ActiveSheet.Unprotect
      If Range("D4") <> "" Then
         Rows("7:11").EntireRow.Hidden = False
         Else
         Rows("7:11").EntireRow.Hidden = True
      End If
   End If
End Sub




Gruß
Uwe
(:o)


Anzeige
AW: Makro von Excel 97
06.03.2006 13:12:53
Excel
Hallo Uwe,
danke für deine Hilfe - es klappt wieder.
Das End if fehlte da ich nur einen Teil kopiert hatte. Im Makro selber war es vorhanden.
Das Makro lief über D4 und E4 da dies verbundene Zellen sind (wurde mir damals hier auf der Seite zu geraten).
Da ich nicht viel Ahnung von sowas habe, könntest du mir vielleicht den Unterschied der ersten Zeile gegenüber dem alten Makro erklären (da es ja unter Excel 97 einwandfrei funktionierte) ?
Gruß schwippi
AW: Makro von Excel 97
08.03.2006 18:20:03
Excel
Hi schwippi,
freut mich das es klappt.
Dass man Dir hier zu verbundenen Zellen geraten hat wundert mich. Ich habe hier nur immer wieder gelesen: "Finger weg von verbundenen Zellen. Das ist Gift für VBA!!!". Ich denke das war auch das Problem. Wieso das unter '97 läuft und später nicht kann ich allerdings nicht erklären.
Die geänderte Zeile ist das, was ich von den Profis immer wieder sehe, wenn Bei Worksheet_Change- und ähnlichen Ereignissen ein Bereich für das "Ziel" abgefragt wird. Ist quasi Standard und man geht auf Nummer sicher. "Übersetzt" heißt die Zeile soviel wie: Wenn nicht die Übereinstimmung (Intersect) zwischen der ausgewählten Zelle (Target) und dem Range(....), gleich Nichts ist (is Nothing), dann ... .
Diese doppelte Verneinung heißt also: Wenn die Auswahl nicht im Range liegt mach garnichts, sonst mach ... .
Gerade dadurch, denke ich, vermeidet man Probleme mit verbundenen Zellen oder mehrfach Auswahl. Will heißen: Was soll VBA machen, wenn Du nicht nur D4:E4 ausgewählt hast, sonden z.B. C3:F6?
Da gibt es übrigens noch einen Trick, mit dem man sichergehen kann, das nur genau eine Zelle ausgewählt ist wenn das Makro startet. Die allererste Zeile sollte dann lauten:
If taget.Count &gt 1 Then Exit Sub
Ich hoffe ich Du siehst jetzt etwas klarer. Das Ganze ist allerdings auch nur mein Verständnis von dem Vorgang, und ich bin auch kein Profi.
Gruß
Uwe
(:o)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige