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

Selection.Merge - auf select verzichten?

Selection.Merge - auf select verzichten?
03.05.2006 11:23:22
Klaus
Moin VBA-ler,
Mit unten stehendem Code lasse ich definierte Zellen mittels eines Toggle-Buttons verbinden und wieder seperieren.
Es läuft soweit auch gut, nur auf die letzte selection würd ich gerne verzichten. Range("A1:B1").Merge funktioniert leider nicht ..
Hier mein Code:
Im Arbeitsblatt:

Private Sub ToggleButton_3_l_5er_Click()
ia = "C"
ib = "D"
If ToggleButton_3_l_5er Then
Call mergeitnot5er(ia, ib)
Else
Call mergeit5er(ia, ib)
End If
End Sub

In einem Modul

Sub mergeit5er(ia, ib)
On Error GoTo handler
Range(ia & "10:" & ib & "10").Select
Selection.Merge
Selection.AutoFill Destination:=Range(ia & "10:" & ib & "15"),
Type:=xlFillDefault
handler:
End Sub
Sub mergeitnot5er(ia, ib)
on error goto handler
Range(ia & "10:" & ib & "15").Select
Selection.MergeCells = False
handler:
End Sub

Dank und Gruß,
Klaus M.vdT.
P.S.: ich weiss, verbundene Zellen sind böse. Mir gehts aber nicht um eine Tabellenkalkulation, sondern um einen Etikettendruck - da kann man schon mal auf sowas zurück greifen :)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection.Merge - auf select verzichten?
03.05.2006 11:43:49
Peter
Servus Klaus,
in etwa so.
Public Sub MergeOrNot(Startspalte As String, Endspalte As String, Verbinden As Boolean)
Range(Cells(10, Startspalte), Cells(10, Endspalte)).MergeCells = Verbinden
End Sub
Sub t()
Call MergeOrNot("A", "C", True)
End Sub

MfG Peter
AW: Selection.Merge - auf select verzichten?
03.05.2006 14:16:54
Klaus
Hallo Peter,
danke für den Code - sieht schon mal sehr viel eleganter und schmaler aus als mein Codebatzen :)
Ich komm heute nicht mehr dazu das zu testen, melde mich daher morgen nochmal.
Gruß,
Klaus M.vdT.
AW: Selection.Merge - auf select verzichten?
04.05.2006 15:41:47
Klaus
Hallo Peter,
so ganz will es noch nicht ...
Ich hab den Code angepasst, sieht jetzt so aus:
Im Arbeitsblatt


Private Sub ToggleButton_3_l_Click()
Dim schalt As Boolean
schalt = ToggleButton_3_l
Call MergeOrNot("A", "B", schalt)
End Sub


Zuerst hatte ich Call MergeOrNot("A", "B", ToggleButton_3_l) probiert, aber da hat er "Typen unverträglich" gemeckert. Aber soweit läuft es.
Im Modul

Public Sub MergeOrNot(Startspalte As String, Endspalte As String, Verbinden As Boolean)
Range("a1").Select
Range(Cells(10, Startspalte), Cells(10, Endspalte)).MergeCells = Verbinden
End Sub

Hier funktioniert es erst, seit ich das "select" reingenommen habe. Ich weiss dunkel, dass das irgendwas mit einem "Focus" zu tuen hat.
Bei CommandoButtons kann ich mit rechtsclick - Eigenschaften das "TakeFocusOnClick = false" setzen, in den Eigenschaften des Toggle Button finde ich den Punkt nicht.
Entschuldige die späte Rückmeldung,
Gruß,
Klaus M.vdT.
Anzeige
AW: Selection.Merge - auf select verzichten?
04.05.2006 16:30:40
Peter
Servus,
wenn der ToggelButton auf dem selben Tabellenblatt ist, überhaupt kein Thema, aber ich nehme stark an du willst auf einem anderen Tabellenblatt die Zellen verbinden.
Geht trotzdem ohne Select, ändere den Code wie folgt (ToggleBt1 Anweisung für verbinden im aktiven Blatt, ToggleBt2 für Tabelle2).


Option Explicit
Private Sub ToggleButton1_Click()
    MergeOrNot "A", "E", Me.ToggleButton1.Value
End Sub
Private Sub ToggleButton2_Click()
    MergeOrNot "A", "E", Me.ToggleButton2.Value, Sheets("Tabelle2")
End Sub
Public Sub MergeOrNot(Startspalte As String, Endspalte As String, _
                      Verbinden As BooleanOptional Tabellenblatt As Object)
    If Tabellenblatt Is Nothing Then Set Tabellenblatt = ActiveSheet
    Tabellenblatt.Range(Startspalte & 10 & ":" & Endspalte & 10).MergeCells = Verbinden
End Sub


MfG Peter
Anzeige
Habs hinbekommen! m.w.T.
05.05.2006 12:03:13
Klaus
Hallo Peter,
dank deiner Hilfe hab ich's jetzt hinbekommen. Mein endgültiger Code lautet:

Public Sub MergeOrNot(Startspalte As String, Endspalte As String, _
Verbinden As Boolean, Optional Tabellenblatt As Object)
ActiveCell.Activate
With Tabellenblatt.Range(Cells(10, Startspalte), Cells(10, Endspalte))
.MergeCells = Verbinden
.AutoFill Destination:=Range(Startspalte & "10:" & Endspalte & "15"), Type:=xlFillDefault
End With
End Sub
Private Sub ToggleButton_3_l_Click()
Call MergeOrNot("A", "B", Me.ToggleButton_3_l.Value, Sheets("Tabelle2"))
End Sub

Den Focus verliere ich leider trotz Tabellenblattname - Übergabe immer noch, hab an anderer Stelle den Tip bekommen, ActiveCell.Activate statt Range("a1").select zu benutzen - jetzt fokussiert es richtig.
Vielen Dank für die geduldige Hilfe,
Klaus M.vdT.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige