Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
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

Statusauswahl per Doppelklick aus eine Liste

Statusauswahl per Doppelklick aus eine Liste
07.03.2018 18:29:12
Lilli
Hallo Allerseits,
Ich bräuchte bitte Hilfe im Bereich VBA. Da habe ich da keine Ahnung. Aber ich glaube zu wissen, was ich gerne möchte. ;)
Also ich habe eine Demotabelle hinzugefügt.
Ich möchte in eine Spalte einen Status per Doppelklick erzeugen. Die Liste von den Status liegt auf einen anderen Tabellenblatt. Die Liste kann sich erweitern. Deshalb habe ich für die Liste einen Namen gelegt, der sich dynamisch verändert aufgrund der Länge der Liste.
Der Makro soll prüfen welchen Status gerade ausgewählt ist und beim Doppelklick soll der Makro das nächste Status nehmen.
https://www.herber.de/bbs/user/120265.xlsm
Es wäre schön, wenn das Makro kommentiert ist, damit ich ungefähr weiß, was in den Moment passiert, wenn es keine Umstände macht.
Vielen Dank für die Mühe und Hilfe im Voraus.
Viele Grüße, Lilli :)

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Statusauswahl per Doppelklick aus eine Liste
07.03.2018 19:32:01
EtoPHG
Hallo Lilli,
Du musst zuerst folgendes machen:
Ctrl-L in den blauen Bereich im Tabellblatt "Tabelle2"
Damit brauchst du das Bereich.Verschieben Gedöns nicht mehr!
Dann diesen (dokumentierten) Code in das Tabellenblatt "Tabelle1" einfügen
Option Explicit
' Dieses Ereignis tritt ein, wenn eine Zelle doppelklicked wird
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'   ZellBereich 1 = Datenteil der internen Tabelle auf diesem Blatt
Dim lObj1 As Range
'   ZellBereich 2 = Datenteil der internen Tabelle auf dem Blatt "Tabelle2"
Dim lObj2 As Range
Set lObj1 = Me.ListObjects("Tabelle2").DataBodyRange
Set lObj2 = Worksheets("Tabelle2").ListObjects("Tabelle1").DataBodyRange
Dim fndStatus As Long   ' Zellenzeile, für gefundene statusbeschreibung
' Liegt die geklickte Zelle in der Spalte 5 von Zellbereich 1 ?
If Not Intersect(Target, lObj1.Columns(5)) Is Nothing Then
If IsEmpty(Target) Then
' Wenn die Zelle leer ist, wird die erste Statusbeschreibung eingefügt
Target = lObj2.Cells(1, 2)
Else
' ist sie nicht leer, wird die Statusbeschreibung gesucht
On Error Resume Next
fndStatus = WorksheetFunction.Match(Target, lObj2.Columns(2), 0)
' Die Statusbeschreibung wurde nicht gefunden
If fndStatus = 0 Then
MsgBox "Dieser Status ist ungültig! Bitte löschen!", vbCritical, _
"Ungültiger Status"
On Error GoTo 0
Exit Sub
' Die Statusbeschreibung wurde gefunden
Else
' Den nächsten Status einfügen, wenn es nicht der letzte ist!
If fndStatus 

Fertig ist die Schosse.
Gruess Hansueli
Anzeige
AW: Statusauswahl per Doppelklick aus eine Liste
08.03.2018 12:02:12
Lilli
Hallo Hansueli,
Vielen Dank für Deine Mühe. Ich habe gerade Dein Code in der Liste eingetragen und bekomme folgende Fehler: Laufzeitfehler 9: Index außerhalb des gültigen Bereichs.
folgende Zeile wird gelb markiert:
Set lObj1 = Me.ListObjects("Tabelle2").DataBodyRange
Weißt Du zufällig, was das bedeutet?
Vielen Dank für die Mühe und Feedback im Voraus.
Viele Grüße,
Lilli :)
Ja, ich weiss was das bedeutet
08.03.2018 13:13:06
EtoPHG
Lilli,
Das List-Objekt heisst nicht "Tabelle2" in deinem Blatt mit dem Code.
Finde heraus, wie es heisst und ändere den Namen in den "...".
Herausfinden am einfachsten so: In der Zelladresse oben links, den Dropdown aktivieren, zeigt dir alle Namen von Listobjekten oder definierten Namen an!
Gruess Hansueli
Anzeige
AW: Statusauswahl per Doppelklick aus eine Liste
08.03.2018 13:55:21
Lilli
Hi Hansueli,
ich habe die Datei samt Code hochgeladen. Darf ich Dich bitten nachzuschauen, was ich falsch gemacht habe?
https://www.herber.de/bbs/user/120289.xlsm
Ich habe per Suchen Ersetzen die Namen in den Code geändert. Ich hoffe, ich habe es richtig gemacht. Dann habe ich wie Du mir beschrieben hast die Namen in diese Eigenschaft geändert. Ich hoffe auch, dass ich das richtig gemacht habe.
vielen Dank für Deine Mühe.
Viele liebe Grüße,
Lilli
Hier ist die Mappe zurück
08.03.2018 14:29:24
EtoPHG
Hallo Lilli,
Die Tabellenblätter heissen "MeineListe" uns "StatusListe"
In der StatusListe hast du den Bereich nicht, wie vorgeschlagen, in ein List-Objekt umgewandelt.
Es muss 2 Listobjekte geben.
Einen Zellenbereich in eine Tabelle umwandeln:
Eine Zelle im Zellenbereich selektieren. Es wird kein Register Tabellentools-Entwurf angezeigt.
Ctrl-L Drücken - [x] Tabelle hat Überschriften - [OK]
Ein Listobjekt umbennen:
Eine Zelle im Tabellenbereich selektieren. Es wird automatisch ein Tab Tabellentools-Entwurf angezeigt - Diesen neuen Tab anklicken.
Im Feld links oben den Tabellenname überschreiben.
Ich hab jetzt diese "internen" Tabellen gem. obigem Vorgehen auf "ListeAuftrag" und "ListeStatus" geändert. Diese beiden Begriffe erscheinen jetzt auch im Dropdown der Zelladresse in der Formeleingabezeile. Wenn einer dort ausgewählt wird markiert Excel automatisch den Listobject-Bereich.
Den Code entsprechend den Namen der "internen" Tabellen (Listobjects) angepasst.
Hier ist die angepasste Mappe!
Gruess Hansueli
Anzeige
AW: Hier ist die Mappe zurück
08.03.2018 15:17:36
Lilli
Hi Hansueli,
das klappt echt super klasse. Vielen Dank. :)
Ich wollte die Tabelle freigeben, weil noch andere daran arbeiten sollen. Aber da Streikt Excel, weil man bei eine Freigabe keine Tabellen enthalten dürfen.
kann man da vielleicht etwas machen? ich hoffe, es ist kein großer Aufwand.
Wenn ich eine Tabelle zu einem Bereich umwandeln würde, kann das Makro höchstwahrscheinlich gar nicht mehr darauf zugreifen, oder? und es kommt höchstwahrscheinlich den gleichen Fehler noch mal.
Vielen lieben Dank.
Liebe Grüße,
Lilli
Mappen freigeben...und so
08.03.2018 16:15:06
EtoPHG
Hallo Lilli,
Arbeitsmappen freigeben für die gleichzeitige Nutzung durch mehrere wird selbst von Microsoft nur mit vielen Vorbehalten empfohlen.
Wenn man die "internen" Tabellen (Listobjekte) in Bereiche umwandelt, müsste man das Makro ganz anders bauen. Aber in freigegebenen Mappen funktionieren die meisten Makros sowieso nicht.
Du musst damit leben, das Excel nicht dafür geschaffen ist und die Anwender anweisen, nach Änderungen die Mappe zu schliessen, so dass sie für andere wieder frei ist. Der Benutzer wird ja darauf hingewiesen, wer die Mappe gerade geöffnet hat.
Gruess Hansueli
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige