Registriert seit: 12.04.2014
Version(en): Office 365
Hallo Uwe,
Zitat:mein Vorschlag ist, es ganz normal mit Ein- und Ausblenden der Leerzeilen durch Doppelklick auf einen Namen zu machen.
Ich habe bei deinem Code folgendes Problem:
Arbeitsblatt mit dem Namen 'Tabelle1' |
| A | B | C |
1 | Nr | Name | Mat |
2 | 1 | A | A1 |
3 | | | A2 |
4 | | | A3 |
5 | | | A4 |
6 | | | A5 |
7 | 2 | B | B1 |
8 | | | B2 |
9 | 3 | C | C1 |
10 | | | C2 |
11 | | | C3 |
12 | | | C4 |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Wenn ich in den Zellen A2, B2, A7 oder B7 einen Doppelklick mache werden die Zeilen ein- bzw. ausgeblendet.
Bei einem Doppelklick auf A9 oder B9 bekomme ich einen Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler wobei die Zeile 'With Range (.Offset...' im Code gelb markiert wird.
Gruß
Peter
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Peter,
danke fürs Testen. Jetzt sollte der Code fehlerfrei laufen:
Microsoft Excel Objekt Tabelle1Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rngE As Range
Cancel = True
With Target
If Not IsEmpty(.Offset(0)) And IsEmpty(.Offset(1)) Then
Set rngE = .EntireColumn.Find(What:="*", _
After:=.Offset(0), _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
If rngE.Row <= Target.Row Then
Set rngE = Cells(Rows.Count, .Column)
End If
With Range(.Offset(1), rngE.Offset(-1)).EntireRow
.Hidden = Not .Hidden
End With
End If
End With
End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• BIGE.l.f.e
Registriert seit: 21.06.2016
Version(en): 2021
Hallo,
und warum nicht mit der Gruppierung? Hier habe ich doch schon "Buttons" mit denen ich einzelne Bereiche oder ganze Ebenen ein- und ausblenden kann.
Zeilen oder Spalten verbergen ist doch fast so schlimm wie Zellen verbinden.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
also, der Code öffnet die komplette Ebene. Das ist das Gleiche, wie wenn Du oben auf die 1 oder 2 drückst oder was immer Du noch hast.
Wenn Du in Spalte B auf die Zelle mit dem Kunden klickst, ist es aber auch nicht weit bis zum +. Je nach Breite der Spalte A steht das ja fast gleich daneben.
Du kannst aber auch diesen Code verwenden:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Wenn eine andere Spalte als B=2 oder mehr als eine Zelle gewaehlt wurden, dann Makro verlassen
If Target.Column <> 2 Or Target.Cells.Count > 1 Then Exit Sub
'Gliederung der gewaehlten Zeile aufklappen
ExecuteExcel4Macro "SHOW.DETAIL(1," & Target.Row & ",True)"
End Sub
Der Code kommt, wie zwei der bisher geposteten auch, in das Tabellenblattmodul. Ich hab hier mal den Ereigniscode vom Zellwechsel genommen, DoubleClick hat Uwe schon belegt
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)