Supportnet Computer
Planet of Tech

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.

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

Antwort 3 von Beverly

Hi Impact,

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.

Antwort 5 von Beverly

Hi Impact,

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

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"

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

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!