Supportnet / Forum / Tabellenkalkulation
Userform für Excelliste
Frage
Hallo Forum,
ich habe folgendes Problem und würde mich freuen, wenn mir jemand dabei helfen könnte.
Ich habe eine Excelliste erstellt, in welche diverse Bestelldaten eingetragen werden. Diese Liste sieht folgendermaßen aus. B13 – K1500 ist der Bereich, in welchen Daten eingetragen werden. Wobei die Zeile 13 als Kopfzeile fungiert. Das heißt Daten werden ab der Zeile 14 eingetragen.
Jetzt möchte ich gerne die Daten über ein Menü (Userform)eingeben bzw. abrufen können.
Dieses Menü (Userform)soll aufklappen, wenn ich einen Doppelklick auf eine einzelne Zelle der Spalte E mache (z.Bsp: E22). Dabei sollen alle vorhandenen Daten der entsprechenden Zeile in den Textboxen der Userform angezeigt werden (z.Bsp. beim Doppelklick von E22 sollen alle Daten in den Zellen B22 bis K22 in einzelnen Textboxen der Userform angezeigt werden). Dabei sollte es so funktionieren, dass, wenn ich einen Eintrag in einer Textbox ändere, dieser auch automatisch in der entsprechenden Zelle geändert wird.
Ich habe bereits ein Userform mit 10 einzelnen Textboxen erzeugt, aber die Zuordnung zu den einzelnen Zeilen und das Aufrufen der Userform über Doppelklick auf eine Zelle bereitet mir Probleme. Ich beschäftige mich noch nicht lange mit der Excelprogrammierung und bekomme es einfach nicht hin.
Vielen Dank im Voraus.
Hartmut
Antwort 1 von Shaori
mit dem Doppelklick kann ich dir grade nicht helfen, aber mit der Zuordnung.
Da du ja in die entsprechende Zeile klickst wird diese Zeile markiert, bzw die Zelle. Angesprochen werden kann diese Zelle dann mit dem Befehl ActiveCell. Die anderen Zellen der selben Zelle erreichst du dann mit ActiveCell.Offset(0,-1) zum Beispiel, hier wäre es dann die Spalte D, links neben E ;-)
Den Inhalt dann per .Value einfach eintragen lassen
Für Spalte F dann aus der -1 eine 1 machen, usw.
Da du ja in die entsprechende Zeile klickst wird diese Zeile markiert, bzw die Zelle. Angesprochen werden kann diese Zelle dann mit dem Befehl ActiveCell. Die anderen Zellen der selben Zelle erreichst du dann mit ActiveCell.Offset(0,-1) zum Beispiel, hier wäre es dann die Spalte D, links neben E ;-)
Den Inhalt dann per .Value einfach eintragen lassen
Für Spalte F dann aus der -1 eine 1 machen, usw.
Antwort 2 von Shaori
Die anderen Zellen der selben Zelle
"Die anderen Zellen der selben Zeile" sollte das heißen
"Die anderen Zellen der selben Zeile" sollte das heißen
Antwort 3 von Excelliste001
Hallo Shaori,
vielen Dank für die schnelle Hilfe.
Aber wie und wo füge ich diese Befehle ein? Im VBA-Editor mit Doppelklick auf die Textbox ? Oder über ein extra Makro?
Hartmut
vielen Dank für die schnelle Hilfe.
Aber wie und wo füge ich diese Befehle ein? Im VBA-Editor mit Doppelklick auf die Textbox ? Oder über ein extra Makro?
Hartmut
Antwort 4 von coros
Moin Hartmut,
nachfolgend mal die VBA-Code, die Du benötigst, um Dein vorhaben in die Tat umzusetzen. Kopiere nachfolgenden Code in das VBA Projekt des Tabellenblattes, in dem bei Doppelklick in Spalte E die UserForm angezeigt werden soll.
Der nachfolgende Code gehört in ein StandardModul.
Und zum Schluss kopierst Du den nachfolgenden Code in das VBA- Projekt der UserForm, die bei Doppelklick in Spalte E angezeigt werden soll. Bedingung hier ist, dass die Schaltfläche zum Übertragen der Daten wieder zurück in das Tabellenblatt den Namen "CommandButton1" hat. Ansonsten anpassen.
Ich hoffe, Du kommst klar. bei Fragen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 und 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nachfolgend mal die VBA-Code, die Du benötigst, um Dein vorhaben in die Tat umzusetzen. Kopiere nachfolgenden Code in das VBA Projekt des Tabellenblattes, in dem bei Doppelklick in Spalte E die UserForm angezeigt werden soll.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Rem: Wenn in Spalte E ein Doppelklick erfolgt,
If Target.Column = 5 Then
Rem: aktive Zeile in Variable "iRow" speichern
iRow = Target.Row
Rem:TextVelder in UserForm mit Daten der aktiven Zeile füllen und öffnen
With UserForm1
.TextBox1 = Cells(iRow, 2)
.TextBox2 = Cells(iRow, 3)
.TextBox3 = Cells(iRow, 4)
.TextBox4 = Cells(iRow, 5)
.TextBox5 = Cells(iRow, 6)
.TextBox6 = Cells(iRow, 7)
.TextBox7 = Cells(iRow, 8)
.TextBox8 = Cells(iRow, 9)
.TextBox9 = Cells(iRow, 10)
.TextBox10 = Cells(iRow, 11)
.Show
End With
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rem: Wenn Klick in einer anderen Spalte als Spalte A, dann direkten Zellbezug aktivieren
If Target.Column <> 5 Then Application.EditDirectlyInCell = True
End SubDer nachfolgende Code gehört in ein StandardModul.
Option Explicit
Rem: Variable deklarieren, so dass sie in der UserForm abgefragt werden kann
Public iRow As LongUnd zum Schluss kopierst Du den nachfolgenden Code in das VBA- Projekt der UserForm, die bei Doppelklick in Spalte E angezeigt werden soll. Bedingung hier ist, dass die Schaltfläche zum Übertragen der Daten wieder zurück in das Tabellenblatt den Namen "CommandButton1" hat. Ansonsten anpassen.
Option Explicit
Private Sub CommandButton1_Click()
Rem: Daten aus TextBox in Zelle der aktiven Zeile übertragen
Cells(iRow, 2) = TextBox1
Cells(iRow, 3) = TextBox2
Cells(iRow, 4) = TextBox3
Cells(iRow, 5) = TextBox4
Cells(iRow, 6) = TextBox5
Cells(iRow, 7) = TextBox6
Cells(iRow, 8) = TextBox7
Cells(iRow, 9) = TextBox8
Cells(iRow, 10) = TextBox9
Cells(iRow, 11) = TextBox10
Rem: UserForm schließen
Unload Me
Rem: Direkte Zellbearbeitung deaktivieren, da sonst
Rem: der Cursor in der Zelle aktiv wäre
Application.EditDirectlyInCell = False
End SubIch hoffe, Du kommst klar. bei Fragen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 und 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Excelliste001
Hallo Oliver,
vielen Dank für deine schnelle Hilfe.
Habe es gerade ausprobiert. Es ist ja genial.
Funktioniert genau so, wie ich es gerne wollte.
Auch die Anleitung auf deiner Internetseite hat mir sehr geholfen.
Super, vielen vielen Dank!!!
Danke auch an Shaori.
Viele Grüße
Hartmut
vielen Dank für deine schnelle Hilfe.
Habe es gerade ausprobiert. Es ist ja genial.
Funktioniert genau so, wie ich es gerne wollte.
Auch die Anleitung auf deiner Internetseite hat mir sehr geholfen.
Super, vielen vielen Dank!!!
Danke auch an Shaori.
Viele Grüße
Hartmut

