Excel 2010 makro zum markieren der Zeile der aktiven Zelle
Ich versuche, das folgende makro verwenden, aber es ist noch nicht einmal erkennen es als makro, so dass ich das makro nicht ausführen. Wenn ich die erste gerne nur die "private/public sub test()" wird ausgeführt, aber dann heißt es mein Ziel-Objekt ist nicht definiert.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
With Target
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
End Sub
Stellen Sie sicher, dass Ihr code angefügt ist ein Blatt, das verwendet ein standard-Ereignis für Tabellenblätter.
InformationsquelleAutor MBlackburn | 2012-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie das makro in den code für die Tabelle selbst, nicht in einem separaten Modul.
Was Sie tun, es ist Veranstaltung Programmierung, die entsprechen, was Sie versuchen, zu reagieren.
es ist kein makro in dem Sinne, die Sie gewohnt sind. Ereignisse reagieren wird, dass etwas geschieht, und kann nicht normal laufen. Wenn Sie wählen Sie eine andere Zelle (e.g ändern Sie die Auswahl von A1 bis B2), den code, den Sie haben reagiert auf die änderung von welche Zelle ausgewählt ist.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
reagieren, wenn sich die Auswahl geändert
If Target.Cells.Count > 1 Then Exit Sub
Wenn mehr als 1 Zelle ausgewählt ist, dann laufen Sie nicht den rest des Codes
Application.ScreenUpdating = False
Schalten Sie den Bildschirm, so dass Sie nicht sehen können, werden alle änderungen, bis wir fertig sind
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
With Target
Mit der Zelle, die ausgewählt wurde,
' Highlight the entire row and column that contain the active cell
.EntireRow.Interior.ColorIndex = 8
.EntireColumn.Interior.ColorIndex = 8
End With
Application.ScreenUpdating = True
und jetzt alle die Färbung wurde durchgeführt, schalten Sie Bildschirm wieder auf, so daß die Ergebnisse unserer Arbeit angesehen wurde.
End Sub
das ist, weil
Event
code bekommt nur ein Trigger für ein event. Setzen Sie einen Zeilenumbruch in dieser ZeileIf Target.Cells.Count > 1 Then Exit Sub
dann ändern Sie eine beliebige Zelle mit dem Wert in Ihre Seite ein. Sehen Sie Ihren code ausführen bis zum Haltepunkt. Dann können Sie Schritt für Schritt durch den rest. Ein rad-tutorial zu diesem Thema gibt es hier ... http://www.cpearson.com/excel/Events.aspxcode Hinzugefügt, Erklärung.
Gibt es trotzdem, dass ich es machen kann, ein Modul, kann der Benutzer "ausführen" das makro traditionell, sobald Sie finden der Zelle Weg, und th en es werde markieren Sie diese Zeile?
Wenn nötig, könnten Sie ein argument in die sub ein normales Modul. Zum befestigen an eine Schaltfläche, mit der Sie hätte der-Taste rufen Sie das Modul, und übergeben Sie die
ActiveCell
auf den sub. Aus Programmier-Sicht, es ist mehr funktional, dass Art und Weise.InformationsquelleAutor SeanC
Versuchen, diesen code in ein Modul, rufen Sie es als ein makro:
Verwenden Sie
Public
, so dass dieser sub wird in das makro-Menü in excel. Dort können Sie es verwenden, 'traditionell' - mit dem verstehe ich die Zuordnung einer Taste oder Tastenkürzel.InformationsquelleAutor Jook
Diese Antwort basiert auf der Annahme, dass Sie möchten, dass der code ausgeführt werden, als ein EREIGNIS, wenn ein Benutzer änderungen ausgewählten Zelle(N)
Wenn Sie möchten, dass dieser code ausgeführt werden, der 1 Arbeitsblatt nur dann platzieren Sie diese in ein ARBEITSBLATT-OBJEKT
Wenn Sie möchten, dass dieser für die Ausführung in ALLEN Arbeitsblättern dann platzieren Sie diese in der THISWORKBOOK-OBJEKT (wenn Sie wollen weglassen/include-sheets können Sie den filter auf sh)
Option Explicit
InformationsquelleAutor user3357963