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

VBA-Zeile markieren

VBA-Zeile markieren
17.05.2003 14:32:53
Ernst Dunkel
Hallo Forum
Mit dem untenstehenden Code wird bei jedem Zellwechsel ein bestimmter Zellbereich markiert.
Wie müsste der Code heissen, dass es die ganze Zeile markiert?

Für eine Lösung bin ich dankbar.
Gruss Ernst

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Application.EnableEvents = False
Range(Target, Target.Offset(0, 9)).Select
Application.EnableEvents = True
End Sub

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
So gehts (getestet)
17.05.2003 14:59:38
Mathias Sohn

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Application.EnableEvents = False
Rows(Target.Row).Select
' Original Code : Range(Target, Target.Offset(0, 9)).Select
Application.EnableEvents = True
End Sub


Danke es geht
17.05.2003 15:15:54
Ernst Dunkel

Danke Mathias
Gruss Ernst

zu früh gefreut
17.05.2003 15:33:18
Ernst Dunkel

Hallo Mathias
Habe mich zu früh gefreut!
Es müsste links und rechts der aktiven Zelle markiert werden.


Re: zu früh gefreut
17.05.2003 16:42:22
Mathias Sohn

Warum dann nicht so:

Range(Target.Offset(0, -1), Target.Offset(0, 1)).Select

-1 und 1 im Offset sind die Anzahl Felder zurück und vor

Anzeige
Re: zu früh gefreut
17.05.2003 16:44:41
PeterW

Hallo Ernst,

sofern Spalte 1 angeklickt wird muss ein Fehler abgefangen werden:

Gruß
Peter

Zeile hat einen kleinen Haken!
17.05.2003 17:00:32
Ernst Dunkel

Hallo Mathias
Habe den Bereich nach rechts und nach links erweitert.
Wenn sich der Cursor nun auf der Spalte < 10 befindet, funktioniert es nicht mehr.
Müsste da noch ein if Anweisung kommen? Könntest Du mir den Code anpassen?
Gruss Ernst


Range(Target.Offset(0, -10), Target.Offset(0, 20)).Select

Problem
17.05.2003 17:29:58
Ernst Dunkel

Hallo Peter
Meine Rückfrage hat sich mit Deiner Antwort überschnitten!
Aber auch mit Deiner Lösung kriege ich Probleme, wenn ich (0,-10) setze!

Ein weiteres Problem ist: Wenn debuggt wird und ich dann debuggen beende läuft das Makro nicht mehr. Muss dann Excel beenden, Excel wieder starten und neue Arbeitsmappe anlegen und Code einfügen!!!!!

Vielleicht gib es für (0,-10) und (0,20) eine andere Lösung. Ich will ja nur dass links und rechts der aktiven Zelle alles markiert ist! Darum habe ich (0,-10) und (0,20) gesetzt.

Gruss Ernst

Anzeige
Re: Problem
17.05.2003 17:36:20
PeterW

Hallo Ernst,

wenn ich nur klug daraus würde, wie weit du neben der Auswahl markieren willst. Das gleiche Problem wirst du am Tabellenende haben. Benutze mal folgenden Code:

Das andere Problem ist klar. Du schaltest EnableEvents aus, das Marko wird abgebrochen und EnableEvents somit nicht wieder eingeschaltet. Der sicherste Weg dürfte sein eine Fehlerabfrage einzubauen (oder den Code so zu schreiben, dass er keine Fehler produziert:-)).

Gruß
Peter

sorry
17.05.2003 17:42:40
PeterW

Hallo Ernst,

mal wieder ein dummer Flüchtigkeitsfehler, es muss natürlich heißen:

Case Is > 247
Range(Target.Offset(0, -9), Cells(Target.Row, 256)).Select

Gruß
Peter

Anzeige
Re: Problem
17.05.2003 17:53:48
Ernst Dunkel

Hallo Peter

Funktioniert nicht so wie ich mir es denke.
Also, in Spalte D und E stet der Vor- und Nachname, in den Spalten F bis N werden die Prüfungsnoten eingetragen. Damit ich besser sehen kann möchte ich links und rechts der aktiven Zelle bei der Eingabe alles markiert haben.
Dein Code funktioniert zu markieren, nur hat er einen Haken Du kannst nur in der Spalte A Werte eingeben und nicht auf einer beliebigen Spalte!
Gruss Ernst

Re: Problem
17.05.2003 18:14:48
PeterW

Hallo Ernst,

jetzt versteh ich endlich, was du willst. Das ist nicht ganz einfach. Hajo hat da mal was geschrieben. Sieh dir das mal an: https://www.herber.de/forum/archiv/248to252/t249345.htm.

Gruß
Peter

Anzeige
Noch nicht zufrieden
17.05.2003 19:43:32
Ernst Dunkel

Hallo Peter
Danke für den Hinweis auf Hajos Code. Funktioniert super. Nur ist es nicht das was ich will. Teste mal den untenstehenden Code aus. Ist fast was ich haben möchte, nur löscht mir das Ding meine gesetzten Farben aus.
Gruss Ernst

Option Explicit
Public dblRow As Double
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Rows(dblRow).Interior.ColorIndex = xlNone
Rows(Target.Row).Interior.ColorIndex = 4
dblRow = Target.Row
End Sub

Re: Noch nicht zufrieden
17.05.2003 20:16:50
PeterW

Hallo Ernst,

jetzt wird es kompliziert denn du müsstest für jede Zelle der Zeile beispielsweise in ein Array die aktuelle Farbe schreiben um sie nachher rekonstruieren zu können. Dazu kommen noch Kleinigkeiten wie z.B. das Schreiben von dblRow vor dem Schließen der Datei in eine Variable, damit sie beim erneuten Öffnen wieder zur Verfügung steht bzw. den Ursprungszustand vor dem Schließen wieder herstellen. Ob das den Aufwand lohnt musst du selber entscheiden.

Gruß und Frohes Schaffen noch :-)
Peter

Anzeige
Re: Noch nicht zufrieden
17.05.2003 20:29:42
Ernst Dunkel

Danke Peter für Deine Nachricht
Ich lass es sein.

Wünsche Dir ein schönes Wochenende
Ernst


Re: Noch nicht zufrieden
17.05.2003 23:07:14
PeterW

Hallo Ernst,

ein Gedanke kommt mir noch. Die hHintergrundfarbe kommt als nicht in Betracht, da du einzelne Zellen/Bereiche farbig markiert hast. Wie sieht es denn mit Schriftattributen (fett/kursiv/Schriftart)und Rahmen aus? Sofern du diese nicht manuell gesetzt hast könnte man sie zur Kennzeichnung der Zeile benutzen.

Gruß
Peter

Re: VBA-Zeile markieren
17.05.2003 23:11:07
L.Vira

Wenn du willst, kann ich dir ein Beispiel mailen, ist zu kopliziert, um das hier zu erklären.

Re: VBA-Zeile markieren
17.05.2003 23:23:25
PeterW

Hallo L.Vira,

an dem Beispiel wäre ich auch interessiert.

Gruß
Peter

Anzeige
Re: VBA-Zeile markieren
17.05.2003 23:59:47
L.Vira

Deine email ist so korrekt wie angezeigt? Meine mail ist softsmith(wegen der Spam).

Re: VBA-Zeile markieren
18.05.2003 00:02:18
PeterW

Hi L.Vira,

ist korrekt wie angezeigt.

Danke
Peter

Re: zufrieden
18.05.2003 01:48:48
Ernst Dunkel

Hallo Peter
Ich habe einen Trick angewendet, indem ich die Spalte A am
Schluss des Makros mit der Farbe gefüllt. Spalte ab T sind ausgeblendet! Teste mal das Makro aus. Kannst mir dann immer noch Melden was Du davon hältst.
Gruss Ernst


Option Explicit
Public dblRow As Double

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect "test"

On Error Resume Next
Rows(dblRow).Interior.ColorIndex = xlNone
Rows(Target.Row).Interior.ColorIndex = 15
dblRow = Target.Row
ActiveCell.Interior.ColorIndex = 8

Columns("A:A").Interior.ColorIndex = 15
ActiveSheet.Protect "test"
End Sub

Anzeige
Re: zufrieden
18.05.2003 12:09:22
PeterW

Hallo Ernst,

wechsele mal in ein anderes Tabellenblatt, schließe die Datei und öffne sie wieder. Geh auf dein Arbeitsblatt zurück und wähle eine andere Zelle an. Das Problem ist, dass beim Speichern die Variable dblRow (warum eigentlich Double für Zeilen, kann doch nur ganzzahlig sein, also Long) nicht mit gespeichert wird. Wenn du damit leben kannst, nach dem Öffnen eine andere Zelle in der markierten Zeile anzuklicken um dblRow wieder einen Wert zuzuweisen ist es okay.

Gruß
Peter

Danke
18.05.2003 19:00:02
Ernst Dunkel

Hallo Peter
Danke für Deinen Hinweis

Bemerkung
18.05.2003 19:32:00
Ernst Dunkel

Peter, ich habe das mit dem Speichern gelöst, indem ich am Schluss die Zelle A1 angewähe. As long habe ich nun durch as Integer geändert (2Bytes)!
Gruss Ernst

Private Sub BlattSpeichern()
Dim wks As Integer, x As Integer, y As Integer
ActiveSheet.Name = Range("w2")
On Error Resume Next
With Application
.ScreenUpdating = False
wks = ActiveWorkbook.Sheets.Count
For y = 1 To wks
For x = y To wks
If Sheets(x).Name < Sheets(y).Name Then
Sheets(x).Move before:=Sheets(y)
End If
Next
Next
.ScreenUpdating = True
End With
Range("A1").Select
ActiveWorkbook.Save
End Sub


Anzeige
Re: Bemerkung
18.05.2003 19:53:22
PeterW

Hallo Ernst,

sieht gut aus - und wenn es das macht, was du erwartest ist dein Problem gelöst. :-)

Ein grundsätzlicher Hinweis, eine Falle, in die ich auch gerannt bin: Zeilennummern können bis 65536 gehen und damit kommt Integer nicht mehr klar.

Gruß
Peter

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige