Supportnet / Forum / Tabellenkalkulation
VBA: Userform / Makro für markierte Zelle starten
Frage
--------------------------------------------------------------------------------
Hi!
ich habe folgendes problem:
Ich hab eine Userform in VBA, die geöffnet werden soll, wenn ich eine beliebige Zelle eines Exel-Sheets markiere und dann auf einen CommandButton klicke.
Also:
1. beliebige Zelle markieren
2. CommandButton klicken
3. Userform soll geöffnet werden
In die Userform werden dann Daten geschrieben, die in ein anderes sheet übertragen werden, abhängig davon welche zelle angeklickt wurde!
Die Userform über den command button zu öffnen bekomm ich ja noch hin, aber der bezug auf die zelle fehlt.
Es müsste also irgendwie registriert werden welche zelle markiert wurde, damit ich mit einer If...Then abfrage zuordnen kann in welche Tabelle die in der Userform eingetragene Daten fließen.
Ich benutze Exel 2003 mit VBA 6.3
Ich hoffe mir kann da jemand helfen!
Antwort 1 von DukeNT
hi,
die Adresse der markierten Zelle bekommst du mit "Selection.Address" heraus.
die Adresse der markierten Zelle bekommst du mit "Selection.Address" heraus.
Antwort 2 von !mpact
Danke erstmal für die schnelle antwort....
Das könnte mir vielleicht weiterhelfen....
aber wie nutze ich diesen Code? Kann ich den irgendwie in eine Abfrage einbauen? Oder vielleicht die adresse in ein excel-sheet schreiben?
ein kleines beispiel wäre nicht schlecht
Das könnte mir vielleicht weiterhelfen....
aber wie nutze ich diesen Code? Kann ich den irgendwie in eine Abfrage einbauen? Oder vielleicht die adresse in ein excel-sheet schreiben?
ein kleines beispiel wäre nicht schlecht
Antwort 3 von Beverly
Hi Impact,
weshalb einen extra CommandButton? Verwende doch das Doppelklick Ereignis der Tabelle
Bis später,
Karin
weshalb einen extra CommandButton? Verwende doch das Doppelklick Ereignis der Tabelle
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
UserForm1.TextBox1.Value = ActiveCell.Address
UserForm1.Show
End Sub
Bis später,
Karin
Antwort 4 von _mpact
Hi Karin!
Danke! Ne super Idee mit dem doppelklick! Und das mit der ActiveCell.Adresse funktioniert auch einwandfrei!
Wenn mir jetzt noch jemand sagen kann wie ich VBA dazu bring das es merkt wenn die markierte zelle in einer bestimmten spalte ist.
Er soll also merken dass z.B D10 oder D22 in der spalte D ist, weil es wichtig ist das die daten, die ich in die userform eingebe in die richtige Tabelle, die auf nem andern sheet ist, geschrieben werden.
Beispiel:
Alle Infos der Userform die durch doppelklick einer beliebigen zelle in der Spalte D eingegeben werden sollen in Tabelle1 fließen. Die für Spalte E in Tabelle2.
Danke! Ne super Idee mit dem doppelklick! Und das mit der ActiveCell.Adresse funktioniert auch einwandfrei!
Wenn mir jetzt noch jemand sagen kann wie ich VBA dazu bring das es merkt wenn die markierte zelle in einer bestimmten spalte ist.
Er soll also merken dass z.B D10 oder D22 in der spalte D ist, weil es wichtig ist das die daten, die ich in die userform eingebe in die richtige Tabelle, die auf nem andern sheet ist, geschrieben werden.
Beispiel:
Alle Infos der Userform die durch doppelklick einer beliebigen zelle in der Spalte D eingegeben werden sollen in Tabelle1 fließen. Die für Spalte E in Tabelle2.
Antwort 5 von Beverly
Hi Impact,
diesen Code in ein allgemeines Modul
diesen Code als Doopelklick Ereignis der Tabelle
und z.B. unter einen CommandButton auf dem UserForm
Bis später,
Karin
diesen Code in ein allgemeines Modul
Public wsTabelle As Worksheet
diesen Code als Doopelklick Ereignis der Tabelle
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Select Case Target.Column
Case 4
Set wsTabelle = Worksheets("Tabelle1")
Case 5
Set wsTabelle = Worksheets("Tabelle2")
End Select
UserForm1.TextBox1.Value = ActiveCell.Address
UserForm1.Show
End Sub
und z.B. unter einen CommandButton auf dem UserForm
Private Sub CommandButton1_Click()
wsTabelle.Range("A1") = TextBox1.Value
End Sub
Bis später,
Karin
Antwort 6 von _mpact
Hi!
hab das angepasst und ausprobiert.... aber irgendie funktioniert das nich so ganz...
VBA bringt die meldung Type dismatch und der debugger markiert die Zeie
Userform1.TextBox15.Value = ActiveCell.Address
im "Worksheet_BeforeDoubleClick " sub
Kannst du mir erklären für was genau die befehle sind, wie sie zusammenhängen, und wie das ganze funktioniert? Die VBA-Hile is da nich sehr informativ... Will ja nich nur ne lösung, sondern die auch verstehen ;-)
Danke schonmal im voraus
Gruß
Jörg
hab das angepasst und ausprobiert.... aber irgendie funktioniert das nich so ganz...
VBA bringt die meldung Type dismatch und der debugger markiert die Zeie
Userform1.TextBox15.Value = ActiveCell.Address
im "Worksheet_BeforeDoubleClick " sub
Kannst du mir erklären für was genau die befehle sind, wie sie zusammenhängen, und wie das ganze funktioniert? Die VBA-Hile is da nich sehr informativ... Will ja nich nur ne lösung, sondern die auch verstehen ;-)
Danke schonmal im voraus
Gruß
Jörg
Antwort 7 von _mpact
ach ja... mein VBA hänngt sich danach immer auf, nachdem die fehlermeldung gekommen ist :-(
Antwort 8 von _mpact
a... ich glaub ich habs schon selbst rausgefunden was das mchaen soll.....
Ich denke das problem liegt darin, das die Tabellen alle in einem sheet drin sind. Das sollt eigentlich auch so bleiben, da zwischen ca. 14 spalten unterscheiden muss, un ich keine 14 sheets will... es müsste also noch eine angabe für den "startpunkt", also die erste zeile der jeweiligen Tabelle geben. das sheet heist übrigens "Calculations"
Ich denke das problem liegt darin, das die Tabellen alle in einem sheet drin sind. Das sollt eigentlich auch so bleiben, da zwischen ca. 14 spalten unterscheiden muss, un ich keine 14 sheets will... es müsste also noch eine angabe für den "startpunkt", also die erste zeile der jeweiligen Tabelle geben. das sheet heist übrigens "Calculations"
Antwort 9 von Beverly
Hi,
die Select Case Anweisung weist in dem Code ausgehend von der aktiven Spalte die Tabelle - Worksheet - zu. Case 4 bedeutet, dass du in Spalte D (=4) den Doppelklick ausgeführt hast. Das musst du entsprechend anpassen und erweitern. Und anstelle Worksheets("Tabelle1") musst du die Startzelle angeben, in die kopiert werden soll.
Schreibe anstelle
besser
Bis später,
Karin
die Select Case Anweisung weist in dem Code ausgehend von der aktiven Spalte die Tabelle - Worksheet - zu. Case 4 bedeutet, dass du in Spalte D (=4) den Doppelklick ausgeführt hast. Das musst du entsprechend anpassen und erweitern. Und anstelle Worksheets("Tabelle1") musst du die Startzelle angeben, in die kopiert werden soll.
Schreibe anstelle
Userform1.TextBox15.Value = ActiveCell.Address
besser
Userform1.TextBox15.Value = Target.Address
Bis später,
Karin
Antwort 10 von _mpact
DANKE!
Bis zum nächsten mal!
Bis zum nächsten mal!