2017-03-01 5 views
1

Ich habe das Grundproblem (das bereits hundert Mal beantwortet wurde), wie der Benutzer nur eine einzelne Zelle gleichzeitig auswählen kann (verhindern, dass mehrere Zellen aktiv sind). Wenn der Benutzer es versucht, würde es die aktive Auswahl zu einer bestimmten Zelle (B1) umleiten. Basierend auf einer schnellen Google-Suche, intelligentes Kopieren und Einfügen, und einige leichten Änderungen, ist das, was ich am Ende mit:Verschmelzende Zellen, die VBA-Code in Bezug auf Zellenauswahl verkomplizieren

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    '>> Prevent user from multiple selections 

    If Selection.Cells.Count > 1 Then 
     MsgBox "Multiple Selection Disabled, refer to B1" 
     ActiveSheet.Range("B1").Select 
     Exit Sub 
    End If 

End Sub 

Ein einfacher Code. Das Problem, auf das ich gestoßen bin, besteht darin, dass der Code jedes Mal, wenn ich eine verbundene Zelle auswähle, auslöst, da die Auswahl laut Excel mehr als eine Zelle ist. Wie gehe ich das um? Vielen Dank.

Ich habe diese Datei von einer anderen Person geerbt, also gab es bereits viele verbundene Zellen. Und mein Arbeitsblatt ist hochautomatisiert und VBA-reich. Mich zu bitten, alle verbundenen Zellen zu entfernen, ist (praktisch) keine Option.

Antwort

1

Range.MergeCells kehren TRUE, FALSE oder Null auf dem Bereich in Abhängigkeit

  • TRUE wenn Bereich einen einzelnen vermischten Bereich und nichts anderes
  • ist
  • FALSE wenn Bereich besteht aus nicht-fusionierten Zellen nur
  • Null alles andere, dh ein Merged-Bereich plus eine oder mehrere andere Zellen (verschmolzen oder nicht)

Zu diesem

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Not Target.MergeCells Or IsNull(Target.MergeCells) Then 
     If Target.Cells.Count > 1 Then 
      MsgBox "Multiple Selection Disabled, refer to B1" 
      Me.Cells(1, "B").Select 
     End If 
    End If 
End Sub 
1

Bereichs- (und Auswahl-) Objekte verfügen über die MergeCells-Eigenschaft, bei der es sich um einen booleschen Wert handelt, der angibt, ob der Bereich verbundene Zellen enthält. See the docs.

Das bedeutet, dass Sie überprüfen können, ob Selection.MergeCellsTrue ist, bevor Sie mit der Weiterleitung der Auswahl fortfahren.

+0

für Ihre schnelle Antwort Vielen Dank betrachten zu nutzen. Es hilft zu wissen, dass es eine solche Eigenschaft gibt. Also danke dafür. Ein Benutzer kann jedoch mehrere verbundene Zellen auswählen, ohne umgeleitet zu werden. Kann ich das irgendwie verhindern? Vielen Dank! – DWReyes

+0

Beim Testen in Excel 2016 gibt MergeCells Null zurück, wenn mehrere verbundene Zellen ausgewählt sind. True, wenn eine einzelne verbundene Zelle ausgewählt ist; False, wenn eine beliebige Anzahl nicht zusammengefügter Zellen ausgewählt ist. Testen Sie dies in der von Ihnen verwendeten Version. Wenn es immer noch gilt, bietet das den Mechanismus, den Sie benötigen. – Archimaredes

+0

Ich habe es bereits getestet, der Benutzer konnte jetzt mehrere verbundene Zellen auswählen (ich verwende Excel 2013). Ich untersuche jetzt etwas in der Art von "Anzahl der verbundenen Zellen" <> 1, Redirect. Aber immer noch recherchieren. Jede weitere Hilfe wäre willkommen. Noch einmal, vielen Dank! – DWReyes