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

Markierung in Reihen mit Makro auslesen

Markierung in Reihen mit Makro auslesen
09.09.2005 20:15:41
Marcus
Hallo zusammen!
Ich benötige ein VBA-Makro, das prüft, ob in den Zeilen 11 bis 50 meines Tabellenblatts eine oder mehrere Zellen markiert wurden. Jede Nummer einer Zeile, in der eine oder mehrere Markierungen sind, soll dann einmal in A1 geschrieben werden, anschließend die nächste Zeilennummer usw.
Hab schon viel rumgesucht, aber kein Makro in den Foren passt so richtig. Wer kriegt sowas hin?
Vielen Dank im Voraus!
Marcus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Markierung in Reihen mit Makro auslesen
09.09.2005 22:20:53
Christoph
Hallo Marcus,
so ganz verstanden hab ich das nicht aber hier mal ein Ansatz.
Der Code muss in das Klassenmodul der Tabelle.
Die Einträge in Spalte A werden jeweils gelöscht
Gruß
Christoph
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim arrAddress
Me.Columns(1).ClearContents
If Target.Row < 12 Or Target.Row > 51 Then Exit Sub
arrAddress = Split(Target.Address(0, 0), ",")
Me.Range("A1:A" & UBound(arrAddress) + 1) = _
Application.Transpose(arrAddress)
End Sub

AW: Markierung in Reihen mit Makro auslesen
10.09.2005 20:55:27
Marcus
Hallo!
Danke Christoph für die Antwort - beim letzten Mal hatte ich sehr ausführlich angefragt und keine Antwort erhalten, deshalb war ich diesmal etwas knapper. Mit einem SelectionChange Makro ist mir leider nicht gedient, ich versuchs also nochx genauer zu erklären:
In einem Blatt befindet sich in den Zeilen 11 bis 50 eine Adressenliste, jeweils eine Adresse/Zeile. Der Anwender soll nun eine/mehrere Adressen anklicken können (indem er mindestens eine Zelle in der betreffenden Zeile anklickt, es dürften aber auch mehrere sein) und anschließend das Makro anklicken. Daraufhin sollte das Makro - wenn es sich so programmieren lässt - die Zeilen 11 bis 50 auf Markierung untersuchen. Jedes Mal, wenn eine Zeile irgendwo eine Markierung enthält, sollte dann in A1 die betreffende Zeilennummer ausgegeben werden (bei mehreren markierten Zellen in einer Zeile natürlich nur einmal die Zeilennummer in A1). Mit dem Wert in A1 stelle ich natürlich noch was an, aber von da an käme ich wieder alleine klar.
Ich hoffe, mich verständlich ausgedrückt zu haben und danke erneut im Voraus für eure Mühe!
Marcus
Anzeige
AW: Markierung in Reihen mit Makro auslesen
11.09.2005 07:18:23
Christoph
Hallo Marcus,
das Anklicken einer Zelle (linke Maustaste - Einfach-Klick) im benannten Bereich kann nur über "SelectionChange" abgefragt werden. Möglich wäre z.B. auch Doppelklick, aber dabei würde sich der eigentliche Code nicht ändern.
Wenn die Nummern der ausgewählten Zeilen aber erst später eingetragen werden sollen, dann hier noch mal ein weiterer Ansatz (s.u.)
Variante1:
-------------
Das Makro "Test1" schreibt anschließend alle zuvor ausgewählten Zeilen in A1 (durch Komma getrennt). Der vorhandene Eintrag in A1 wird zuvor gelöscht.
Variante2:
-------------
Das Makro "Test2" schreibt die Werte in SpalteA untereinander. Die vorhandenen Einträg in SpalteA werden zuvor gelöscht.
Wenn du die Werte - wie du schreibst - anschließend weiterverarbeitest, ist es nicht zwingend erforderlich, diese zuvor in die Tabelle zu schreiben, sondern du könntest den String bzw. das Array auch direkt für die Verarbeitung nutzen.
Wenn ein zusammenhängender Bereich über mehrere Zeilen markiert wird, wird nichts eingetragen.
Gruß
Christoph
in das Modul des Tabellen-Blattes (hier Tabelle1)
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If .Rows.Count > 1 Then Exit Sub
If .Row < 11 Or .Row > 50 Then Exit Sub
If InStr(strRow, .Row) = 0 Then
strRow = strRow & .Row & ","
End If
End With
End Sub
und in ein allgemeines Modul den folgenden Code:
Option Explicit
Public strRow As String
Sub Test1()
Sheets("Tabelle1").Range("A1") = ""
If Len(strRow) > 0 Then
Sheets("Tabelle1").Range("A1") = _
Left(strRow, Len(strRow) - 1)
End If
strRow = ""
End Sub
Sub Test2()
Dim arr
Sheets("Tabelle1").Columns(1).ClearContents
If Len(strRow) > 0 Then
arr = Split(strRow, ",")
Sheets("Tabelle1").Range("A1:A" & UBound(arr) + 1) = _
Application.Transpose(arr)
End If
strRow = ""
End Sub

Anzeige
AW: Markierung in Reihen mit Makro auslesen
11.09.2005 13:39:51
Marcus
Hi Christoph!
1000 Dank für Deine Mühe! Deine Makros haben mich auf die richtige Fährte gebracht und ich habe schließlich doch noch was gefunden, mit dem man auch nicht zusammenhängende Markierungen abarbeiten kann: http://www3.fh-eberswalde.de/learning/exc/tipps/EXCEL-Ratschläge/VBA1.htm , Makro "Zeilenanzahl2".
Mit etwas Rate- und Probiererei hab ich's dann umgemodelt zu folgendem:

Sub Zeilenanzahl2()
Dim objZeilenbereich As Range
Dim objTeilbereich As Range
Dim lngZeilennummer As Long
Dim lngZeilenzahl As Long
Dim i%
For Each objTeilbereich In Selection.Areas
If objZeilenbereich Is Nothing Then
Set objZeilenbereich = objTeilbereich.EntireRow
Else
Set objZeilenbereich = Union(objZeilenbereich, _
objTeilbereich.EntireRow)
End If
Next objTeilbereich
For Each objTeilbereich In objZeilenbereich.Areas
lngZeilenzahl = objTeilbereich.Rows.Count
lngZeilennummer = objTeilbereich.Rows.Row
For i = 1 To lngZeilenzahl
MsgBox lngZeilennummer
lngZeilennummer = lngZeilennummer + 1
Next i
Next objTeilbereich
End Sub

Ausgabe erfolgt also noch in MsgBox, aber das in A1 eintragen zu lassen, krieg ich hin. Nochmals vielen Dank, daran hatte ich jetzt wochenlang rumgedoktort!
Marcus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige