Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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
Inhaltsverzeichnis

Gesamte Zeile markiert

Gesamte Zeile markiert
09.03.2018 10:42:47
wanki
Hallo,
wenn ich eine gesamte Zeile durch Klick auf die Zeilennummer markiere und in dieser Zeile dann anschließend eine Andere mit Rechtsklick aktiviere (um z.B. eine Userform aufzurufen) benötige ich eine Msg-Box, um eine Warnung auszugebe, dass die gesamte Zeile aktiviert ist.
Hintergrund: Ich kann in mehreren Spalten unterschiedliche Userformen durch Rechtsklick aktivieren. Wenn aber die gesamte Zeile markiert ist und ich klicke rechts in eine einzelne Zelle in dieser Zeile, werden alle möglichen Userformen angezeigt. Das möchte ich aber verhindern.
Danke im Vorraus
Wolfgang

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gesamte Zeile markiert
09.03.2018 10:55:28
EtoPHG
Hallo Wolfe,
Das Zitat: wenn ich eine gesamte Zeile durch Klick auf die Zeilennummer markiere und in dieser Zeile dann anschließend eine Andere mit Rechtsklick aktiviere
Ich kann das nicht.
Ich kann eine Zeile mit Linksklick selektieren.
Ich kann eine Zeile mit Rechtsklick selektieren.
Aber ich kann in einer selektierten Zeile eine andere Zelle in einer anderen Spalte wîe 1 'aktivieren'.
Kannst du bitte erklären, was du meinst, bzw. wie du das anstellst?
Gruess Hansueli
AW: Gesamte Zeile markiert
09.03.2018 11:12:15
wanki
Ok, ich markiere eine Zeile mit links. Dann will ich aber in eine Zelle (z.B. „X11“) der markierten Zeile mit Rechtskick eine Userform aufrufen. Dass ist aber nicht eindeutig, weil ja die gesamte Zeile markiert ist. Logischer weise werden alle Userformen aufgerufen.
Ich habe das jetzt so gemacht:
Dim Z As Long
Z = Selection.count
If Z > 10 Then
Beep
MsgBox "Es sind zu viele Zellen markiert!"
Exit Sub
End If

Das klappt.
Jetzt währe die Frage: kann man die mit rechtsangeklickte Zelle in der markierten Zeile ermitteln, obwohl die gesamte Zeile markiert ist?
Anzeige
Ich versteh immer noch nicht!
09.03.2018 11:41:59
EtoPHG
Sorry Wolfe,
Ich raff's nicht. Wenn ich eine Zelle rechtsklicke, dann wechselt automatisch die Selektion, d.h. die Selektion der vorher markierten Zeile ist aufgehoben.
Ich kann eine Zeile rechtsklicken, dann ist der Target.Count = Columns.Count
Wenn ich nur genau 1 (nicht verbundene) Zelle rechtklicke, dann ist der Target.Count = 1
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim msg As String
Select Case Target.Count
Case 1
msg = "1 Zelle ist selektiert."
Case Columns.Count
msg = "1 Zeile ist selektiert!"
Case Else
msg = Target.Count & " Zellen sind markiert!"
End Select
MsgBox msg, IIf(Right(msg, 1) = "!", vbCritical, vbInformation), Target.Address(0, 0)
Cancel = True
End Sub

aber dass was du erreichen willst, ist IMHO gar nicht möglich!
Gruess Hansueli
Anzeige
AW: Ich versteh immer noch nicht!
09.03.2018 12:21:32
Daniel
Hi Hansueli
deine Annahme:
"Wenn ich eine Zelle rechtsklicke, dann wechselt automatisch die Selektion, d.h. die Selektion der vorher markierten Zeile ist aufgehoben."
stimmt nur teilweise.
wenn du eine Zelle rechts klickst, wird die alte Selektion nur dann aufgehoben, wenn die angeklickte Zelle außerhalb der alten Selektion liegt.
liegt die rechts angeklickte Zelle jedoch innerhalb der alten Selektion, so bleibt die alte Selektion erhalten und das Target des BeforeRight_Click-Events ist die alte Selektion.
dass muss auch so sein, denn sonst wäre es nicht möglich, Kontextmenüfunktionen auf mehrere Zellen gleichzeitig anzuwenden, da "Ziehen bei gedrückter Maustaste", STRG und SHIFT nur mit der Linken Maustaste funktionieren, aber nicht mit der rechten.
(bzw, man könnte sonst nur Einzelzellen, eine ganze Zeile/Spalte oder alle Zellen per Kontextmenü bearbeiten).
Gruß Daniel
Anzeige
Rechtsklick ausserhalb der Selektion
09.03.2018 13:40:42
EtoPHG
Hallo Daniel,
Ja, deine genauere Umschreibung stimmt.
Damit ist mein letzter Satz "...was du erreichen willst, ist ... gar nicht möglich" bestätigt.
Gruess Hansueli
AW: Rechtsklick ausserhalb der Selektion
09.03.2018 15:00:03
Daniel
Interpretationsfrage!
der geschriebene Wunsch war eine Meldung, wenn eine ganze Zeile beim Rechtsklick ausgewählt ist, und das lässt sich ja problemlos erreichen.
Und dein letzter Satz ist somit widerlegt.
Anders wäre es, man interpretiert in die Fragestellung den unausgesprochenen Wunsch hinein, dass in diesem Fall nur die tatsächlich mit rechts angeklickte Zelle erkannt und für das Öffnen der Userform verwendet werden soll, dann hättest du recht.
Gruß Daniel
Anzeige
Quatsch mit Sauce....(owT)
09.03.2018 15:03:50
EtoPHG

AW: Quatsch mit Sauce.
09.03.2018 15:36:20
Daniel
stimmt was du geschrieben hast ist quatsch, da hast du recht.
Gru8 Daniel
AW: Rechtsklick ausserhalb der Selektion
09.03.2018 15:00:04
Daniel
Interpretationsfrage!
der geschriebene Wunsch war eine Meldung, wenn eine ganze Zeile beim Rechtsklick ausgewählt ist, und das lässt sich ja problemlos erreichen.
Und dein letzter Satz ist somit widerlegt.
Anders wäre es, man interpretiert in die Fragestellung den unausgesprochenen Wunsch hinein, dass in diesem Fall nur die tatsächlich mit rechts angeklickte Zelle erkannt und für das Öffnen der Userform verwendet werden soll, dann hättest du recht.
Gruß Daniel
2ter Quatsch mit Sauce... (owT)
09.03.2018 15:04:27
EtoPHG

warum? wo liege ich falsch?
09.03.2018 15:49:11
Daniel
AW: Rechtsklick ausserhalb der Selektion
09.03.2018 15:14:04
Daniel
Interpretationsfrage!
der geschriebene Wunsch war eine Meldung, wenn eine ganze Zeile beim Rechtsklick ausgewählt ist, und das lässt sich ja problemlos erreichen.
Und dein letzter Satz ist somit widerlegt.
Anders wäre es, man interpretiert in die Fragestellung den unausgesprochenen Wunsch hinein, dass in diesem Fall nur die tatsächlich mit rechts angeklickte Zelle erkannt und für das Öffnen der Userform verwendet werden soll, dann hättest du recht.
Gruß Daniel
Anzeige
AW: Ich versteh immer noch nicht!
09.03.2018 12:25:06
wanki
Hallo,
dass wäre schön, denn es so währe.
Wenn ich noch die gesamte Zeile markiert habe und eine andere Zelle rechts anlicke, bleibt die gesamte Zeile weiter markiert. Dann tritt der Fehler auf. Ich muss erst die benötigte Zelle links anklicken, um die Markierung der Zeile aufzuheben und dann rechts anklicken. Das muss ich aber verhindern.
AW: Ich versteh immer noch nicht!
09.03.2018 12:34:31
Daniel
Hi
starte die Userformen doch mit dem Doppelklick (BeforeDoubleClick)
Beim Doppelklick gibt es immer nur genau eine angeklickte Zelle.
Gruß Daniel
AW: Gesamte Zeile markiert
10.03.2018 11:42:15
Mullit
Hallo,
Jetzt wäre die Frage: kann man die mit rechtsangeklickte Zelle in der markierten Zeile
ermitteln, obwohl die gesamte Zeile markiert ist?

...kann man machen...
Option Explicit

Private Declare Function GetCursorPos Lib "user32.dll" ( _
    lpPoint As POINTAPI) As Long
                 
Private Type POINTAPI
  x As Long
  y As Long
End Type

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim objUnknown As Object
Dim udtCursorPos As POINTAPI
With Target
    If .Address = .EntireRow.Address Then
      Call GetCursorPos(udtCursorPos)
      With udtCursorPos
          Set objUnknown = ActiveWindow.RangeFromPoint(x:=.x, y:=.y)
      End With
      If TypeOf objUnknown Is Excel.Range Then _
        Call prcShowForm(prblnCancel:=Cancel, _
           pvstrAddress:=objUnknown.Address)
      Set objUnknown = Nothing
    Else
      Call prcShowForm(prblnCancel:=Cancel, _
         pvstrAddress:=.Address)
    End If
End With
End Sub

Private Sub prcShowForm(ByRef prblnCancel As Boolean, _
     ByVal pvstrAddress As String)
   Select Case pvstrAddress
       Case Is = "$C$2": prblnCancel = True: Call UserForm1.Show
       Case Is = "$E$2": prblnCancel = True: Call UserForm2.Show
       Case Is = "$G$2": prblnCancel = True: Call UserForm3.Show
       Case Is = "$I$2": prblnCancel = True: Call UserForm4.Show
   End Select
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige
AW: Gesamte Zeile markiert
09.03.2018 11:00:24
Robert
Hallo Wolfgang,
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Cells.Count > 1 Then
MsgBox "ACHTUNG: Es sind " & Target.Cells.Count & " Zellen markiert!", vbCritical, "Fehler"
Cancel = True
Exit Sub
End If
'Hier Deinen weiteren Code
End Sub

Das Makro prüft beim Rechtsklick zuerst, ob mehr als eine Zelle markiert ist. Sollte dies der Fall sein, wird es mit einer entsprechenden Meldung abgebrochen.
Gruß
Robert
Wechseln der aktiven Zelle in 1er Zeilenselektion
09.03.2018 15:42:51
Luc:-?
Hallo, Wolfgang &all;
wenn eine ganze Zeile oder Spalte durch Klick auf den Rand ausgewählt wurde, ist standardmäßig die jeweils 1.Zelle der Auswahl auch die aktive. Das kann man nur ändern, indem man [Strg] gedrückt hält und dann eine andere Zelle der Auswahl anklickt. Die Auswahl bleibt dann erhalten, aber ihre aktive Zelle ist jetzt die angeklickte. Das gilt auch bei Auswahl mehrerer Zeilen u/o Spalten, auch, wenn diese nicht zusammenhängen (und sollte eigentlich bekannt sein, denn das ist auch in anderen Auswahlszenarien so)!
Gruß, Luc :-?
Anzeige
Nachtrag:
09.03.2018 15:58:52
Luc:-?
Interessant ist, was passiert, wenn man das Ereignis Worksheet_SelectionChange bemüht und mit der zugehörigen Ereignisprozedur die Target.AddressLocal per MsgBox anzeigen lässt:
Zuerst wdn der/die Auswahlbereich/e gesamt angegeben, dann die aktive Zelle, wobei auch die zuvor aktiven Zellen gemerkt und angegeben wdn. Die letztgewählte aktive (aktuelle) steht dann zuletzt. Will man nur diese erhalten, muss man ActiveCell benutzen.
Luc :-?
AW: Nachtrag:
09.03.2018 16:12:01
Daniel
Wenn du bei gedrückter STRG-Taste mehrere Zellbereiche nacheinander anklickst, dann stehen die einzelnen Zelladressen in genau der Reihenfolge im Adressstring, in der man sie angeklickt hat.
Wenn du dann noch mal auf die TabTaste drückst und damit die aktive Zelle verschiebst, ist auch nicht mehr sichergestellt, dass die letzte Zelle im Adressstring die aktive ist, dass kann dann irgendeine aus dem Zellbereich sein.
Gruß Daniel
Anzeige
AW & 2.Nachtrag:
09.03.2018 18:02:42
Luc:-?
Mit der [Tab]-Taste kann man sich in der Auswahl bewegen, Daniel,
wobei offensichtlich die zuvor von mir genannten, um die AktivZellen erweiterten Adressen nicht berücksichtigt wdn. Verwendet man aber die TastenKombi [Umsch][Tab], wdn diese Adressen zellenweise von hinten nach vorne abgearbeitet. Da in beiden Fällen das genannte Ereignis nicht ausgelöst wird, kann ich so deine Aussage zwar nicht direkt (unmittelbar) überprüfen, indirekt aber schon durch erneuten [Strg]-Klick. Danach schafft ein Zwischendurch-nur-[Tab] keine neuen (Adress-)Verhältnisse, sondern die bisherigen bleiben erhalten und wdn fortgesetzt (ohne die zwischendurch erzeugten AktivZellen!).
Gruß, Luc :-?
Anzeige
AW: AW & 2.Nachtrag:
09.03.2018 18:51:25
Daniel
Hi
die aktive Zelle ist immer Teil der Selektion.
Daher löst ein Verschieben der aktiven Zelle innerhalb der Selektion mit der TAB-Taste auch kein Selection-Change-Event aus, weil sich der selektierte Zellbereich dabei nicht ändert.
Die aktive Zelle ist auch nicht im Adressstring von Target erkennbar.
Lediglich wenn der zuletzt zur Selektion hinzugefügte Zellbereich eine Einzelzelle war, ist diese die die aktive Zelle (sofern kein TAB gedrückt wurde)
Wurde aber ein größerer Zellbereich mit Ziehen hinzugefügt, kann die aktive Zelle eine der vier Eckzellen des aktiven Zellbereichs sein, je nachdem welche Zelle du beim Ziehen zuerst angeklickt hast.
probier auch mal folgendes aus:
Selektiere die gleiche Zelle 2x (mit STRG 2x anklicken) und drücke dann TAB.
Gruß Daniel
AW: Es bleibt interessant, aber auch logisch
09.03.2018 21:10:36
Luc:-?
Ja, Daniel,
das folgt alles einer Logik. Mit [Tab] wird die Auswahl immer beginnend mit der 1.Zelle durchlaufen (nicht mit der aktiven unmit­tel­bar nach Erstellung, denn die liegt bei unzu­sam­men­hän­gen­den Aus­wahlen am Anfang (bzw rückwärts am Ende) des jeweils 2.Teil­bereichs, egal, ob ich vorher 1- oder 2mal eine Einzelzelle mit gedrückter [Strg] ausgewählt und damit eigentlich der Auswahl hin­zu­ge­fügt habe. Nur mit [Umsch][Tab] wird die erweiterte AdressListe rückwärts abgearbeitet. Mit [Enter] ist es übrigens dasselbe, nur in der anderen Bewegungsreihenfolge (spaltenweise) dieser Taste.
Folglich kann eine aktive Zelle in einer Auswahl durchaus verändert wdn, im Prinzip auf die auch sonst üblichen Weisen. Mit Klick allerdings nur per eigentlich der-Auswahl-hinzufügen.
[Umsch]+[[Tab]|[Enter]] kehrt nur die Laufrichtung um, während nur [Tab]|[Enter] vorn anfängt und erst zum Schluss die quasi zusätzlichen Auswahlzellen ansteuert.
Damit ist dann auch der scheinbare Merkeffekt vorheriger aktiver Zellen als einfache AuswahlErweiterung identifiziert.
🙈 🙉 🙊 🐵 Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
AW: Gesamte Zeile markiert
10.03.2018 13:02:24
wanki
Hallo alle zusammen,
entschuldigt, dass ich erst jetzt komme.
Ich habe hier ein Arbeitsblatt mit vielen Spalten. Die können aber nicht alle auf den Monitor dargestellt werden. Zur Erleichterung, dass ich auch in der entsprechenden Zeile bleibe, habe ich immer die Zeilennummer angeklickt, womit ja dann die gesamte Zeile markiert wird. Wenn ich dann aber eine Zelle dieser Zeile Rechs anklicke, um eine Userform aufzurufen, hat es mir immer 6 Userformen geöffnet. Und das nervt. Deshalb mein Anliegen.
Ich danke euch für die Bemühungen.
Schönes Wochenende
Wolfgang
AW: Gesamte Zeile markiert
13.03.2018 11:20:56
wanki
Hallo Mullit,
Das bezieht sich jetzt nur auf die Zeile 2. Es kann aber auch die Zeile 989 sein. Dann läuft es ins Leere.
Was kann ich tun?
Case Is = "$C$2": prblnCancel = True: Call UserForm1.Show

Gibt nur "$C$2" an, ich benötige aber z.B. "$C$2:$C$989".
Grüße aus den Erzgebirge
Wolfgang
AW: Gesamte Zeile markiert
13.03.2018 12:20:20
wanki
Habe es selbst gefunden.
Private Sub prcShowForm(ByRef prblnCancel As Boolean, ByVal pvstrAddress As String)
Dim Z As Long
Z = Selection.Row                                      'Nummer der markierten Zeile
Select Case pvstrAddress
Case Is = "$C$" & Z: prblnCancel = True: Call UserForm1.Show
Case Is = "$E$" & Z: prblnCancel = True: Call UserForm2.Show
Case Is = "$G$" & Z: prblnCancel = True: Call UserForm3.Show
Case Is = "$I$" & Z: prblnCancel = True: Call UserForm4.Show
End Select
End Sub

Danke für die Hilfe.
AW: Gesamte Zeile markiert
13.03.2018 14:34:05
wanki
Hallo,
was ich nicht finde: wie ist es, wenn man bei mehreren Spalte, die nebeneinander liegen, die gleiche Userform geöffnet werden soll?
AW: Gesamte Zeile markiert
13.03.2018 23:54:42
Mullit
Hallo,
das mußt Du anders machen, auf den Bereich fragst Du vorher ab und schmeißt Dein Selection-Gewürge raus...;-)
Code in Zwischenablage:

Option Explicit Private Declare Function GetCursorPos Lib "user32.dll" ( _ lpPoint As POINTAPI) As Long Private Type POINTAPI x As Long y As Long End Type Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim objUnknown As Object Dim udtCursorPos As POINTAPI If Not Intersect(Target, Range("$C$2:$C$989")) Is Nothing Then With Target If .Address = .EntireRow.Address Then Call GetCursorPos(udtCursorPos) With udtCursorPos Set objUnknown = ActiveWindow.RangeFromPoint(x:=.x, y:=.y) End With If Not objUnknown Is Nothing Then If TypeOf objUnknown Is Excel.Range Then _ Call prcShowForm(prblnCancel:=Cancel, _ pvlngColumn:=objUnknown.Column) Set objUnknown = Nothing End If Else Call prcShowForm(prblnCancel:=Cancel, _ pvlngColumn:=.Column) End If End With End If End Sub Private Sub prcShowForm(ByRef prblnCancel As Boolean, _ ByVal pvlngColumn As Long) Select Case pvlngColumn Case Is = 3: prblnCancel = True: Call UserForm1.Show Case Is = 5: prblnCancel = True: Call UserForm2.Show Case Is = 7: prblnCancel = True: Call UserForm3.Show Case 8 To 11: prblnCancel = True: Call UserForm4.Show End Select End Sub



VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

...übrigens HTML-Erg. bei Anton geklaut, nicht schlecht...;-)
Gruß, Mullit
AW: Gesamte Zeile markiert
14.03.2018 00:09:59
Mullit
Hallo nochmal,
ähem ja, hier natürlich alle Spalten des Bereichs angeben, hatt ich von Dir einfach kopiert....
'...
If Not Intersect(Target, Range("$C$2:$M$989")) Is Nothing Then
'...
Gruß, Mullit

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige