Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
356to360
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
356to360
356to360
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

User Forms

User Forms
05.01.2004 13:05:10
Jennifer
Liebes Forum,
Ich habe ein für mich unlösbares Problem.
Ich habe eine UserForm erstellt, in die man Daten eingeben und diese mittels Button in ein Tabellenblatt übertragen kann. Die UserForm wird beim Clicken auf eine Zelle aktiviert (A1). Die Daten in der UserForm habe ich genaue Zellen zugewiesen (damit meine ich, der Wert der Textbox wird in eine genannte Zelle übertragen).

Zur Orientierung hier der Code für das Übertragen in das Tabellenblatt und für das Übertragen von dem Tabellenblatt in die UserForm beim Öffnen dieser:


Sub UserForm_Initialize()
Nachname = ActiveSheet.Range("B10")
Vorname = ActiveSheet.Range("E10")
Firma = ActiveSheet.Range("G10")
End Sub



Sub Datenübertragen_click()
ActiveSheet.Range("B10") = Nachname.Value
ActiveSheet.Range("E10") = Vorname.Value
ActiveSheet.Range("G10") = Firma.Value
End Sub


Nun aber zu meinem Problem:
Ich habe nicht nur eine Zeile in der die Daten eingegeben werden, sondern in etwa 100, sowie 12 Tabellenblätter. D.h. im Prinzip müsste ich für jede Zeile eine eigene Userform, erstellen. Das beim Click auf Zelle A1 UserForm1 geöffnet wird, beim Click auf Zelle A2 UserForm2 usw. Dafür müsste ich dann ja knapp 1200 Userforms mit immer neuen Verweisen auf die Zeilen erstellen. Geht das auch anders? Ich bin für jede Idee wirklich sehr dankbar!!!!!!!

MfG

Jennifer

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: User Forms
05.01.2004 13:10:25
soendi
hallo jennifer

a) setze eine variable >> Adresse = Target.Address(0, 0)
(target.adress(0, 0) gibt dir die aktuelle position aus, wo du klickst)

b) setze nachher alles auf diese variable.
ActiveSheet.Range("Adresse") = Nachname.Value

c) frag mich nicht weiter, ich müsste das auch selbst ausprobieren, bin kein vba-mensch!

soendi
AW: User Forms
05.01.2004 13:12:43
Jennifer
Sorry, aber das verstehe ich nicht!!!! Tut mir super leid, aber ich habe mit mühe und not die userform hergestellt, weiter weiß ich echt nicht....... könnt ihr mir das vielleicht ein bißchen genauer erklären?
:-( *verlegen*

Ich danke Euch
Anzeige
AW: User Forms
05.01.2004 13:29:34
Ulf Thore
Also, Du rufst die Form ja über das WorksheetSelectionChange Ereignis auf.
Dies liefert Dir eine Variable Namens Target, die zB auch die Adresse der Zelle enthält, die ausgewählt wurde. Also Target.Adress wäre $A$1 wenn Du die Zelle a1 auswählst. Mit Hilfe von Target.row erhälst Du die Zeile in der die Zelle ist, die Du aufgerufen hast. Mit diesem Wert arbeitest Du dann auch in deiner Form in dem Du die Werte nicht via Range sondern über die Cells-anweisung veränderst, wobei Du für den Zeilenindex von cells target.row verwendest. So kannst Du die Form für alle Zeilen benutzen.

Also:


Sub UserForm_Initialize()
Nachname = ActiveSheet.Cells(Target.Row, 2)
Vorname = ActiveSheet.Cells(Target.Row, 5)
Firma = ActiveSheet.Cells(Target.Row, 7)
End Sub




Sub Datenübertragen_click()
ActiveSheet.Cells(Target.Row, 2) = Nachname.Value
ActiveSheet.Cells(Target.Row, 5) = Vorname.Value
ActiveSheet.Cells(Target.Row, 7) = Firma.Value
End Sub


Ich hoffe, das hilft.
Anzeige
AW: User Forms
05.01.2004 13:16:22
Michael
Ist die Zelle zum Aktivieren des Userform immer A1 oder kann das auch die Zeile sein, in die dann die Informationen geschrieben werden sollen?
AW: User Forms
05.01.2004 13:47:03
Jennifer
Die Zelle zum Aktivieren ist immer die in Spalte A in welcher Zeile die Daten stehen......... Also A1, A2, A3........
AW: User Forms
05.01.2004 15:03:42
Michael
In der beiliegenden Arbeitsmappe DEMO1.XLS habe ich Dir eine Lösung beschrieben.
In der Tabelle1 wird mit dem Ereignis SELECTION_CHANGE das Formular geöffnet (wenn eine Zelle der Spalte A angeklickt wurde).
Mit dem Anzeigen des Formulars werden die gewünschten Spalten der aktuellen Zeile in das Formular kopiert.
Beim Schließen des Formular über den Commandbutton werden die ev. geänderten Werte wieder in die entsprechenden Spalten der aktuellen Zeile geschrieben.

So müßte eingetnlich Dein Problem leicht zu lösen sein.

Gruß
Michael
Anzeige
AW: User Forms
05.01.2004 15:36:57
Jennifer
Hallo Michael!!!!

Vielen, vielen Dank!!!!!!!

ich probier es gerade aus, das dauert :-)

eine Frage habe ich aber noch: wenn die Spalte für den Wert vor der Spalte der aktualisierung liegt........ also, zB bei Spalte G wird die userform geöffnet, in Spalte F soll der wert........ = -1 ???????
AW: User Forms
05.01.2004 15:40:49
Michael
ja,
das Offset bezieht sich in alle 4 Richtungen auf die aktuelle Zelle (bzw. Spalte/Zeile)
AW: User Forms
05.01.2004 15:43:33
Michael
Du mußt natürlich das Ereignis "SELECTION_CHANGE" in der Tabelle auch entsprechend ändern (zu prüfende Spalte).
Anzeige
AW: User Forms
05.01.2004 15:47:41
Jennifer
so habe ich es gemacht, da bei cklick auf eine zelle in spalte G die userform geöffnet werden soll:

....
If Target.Column = 7
....

nun wäre ja das hier
....
ActiveCell.Offset(0, 0) = TextBox1.Value
....

ein wert in der selben spalte (wegen der 0), wenn aber der wert in spalte E soll.. hieße es dann:
ActiveCell.Offset(0, -1) = TextBox1.Value

????

danke nochmnal fpür deine zeit
AW: User Forms
05.01.2004 15:51:41
Michael
fast, aber nicht ganz!
activecell.offset(0,-2) weil Spalte E 2 Spalten vor G!
AW: User Forms
05.01.2004 16:06:56
Jennifer
ich werde mich im laufe des Tages nochmal melden, um dire rückmeldung zu geben!!1

jetzt aber schon mal vielen Dank

Jenny
Anzeige
AW: User Forms
05.01.2004 13:33:09
Martin Beck
Hallo Jennifer,

bei Level "VBA nein" wird's schwierig. Daher hier mal der Versuch einer "einfachen Lösung.

1. Der Klick in Spalte A sollte immer für die Zeile gelten, in die geklickt wurde, also Klick in A1 für Zeile 1, Klick in A10 für Zeile 10 usw. Das müßtest Du selbst programmieren, für A1 hast Du das ja schon realisiert.

2. Ändere den Code wie folgt:


Sub UserForm_Initialize()
ActiveSheet.Range("Z1")=ActiveCell.Row ' oder beliebige andere Zelle an Stelle von Z1
z=ActiveCell.Row
Nachname = ActiveSheet.Cells(z, 2)
Vorname = ActiveSheet.Cells(z, 5)
Firma = ActiveSheet.Cells(z, 7)
End Sub




Sub Datenübertragen_click()
z = ActiveSheet.Range("Z1")
ActiveSheet.Cells(z, 2) = Nachname.Value
ActiveSheet.Cells(z, 5) = Vorname.Value
ActiveSheet.Cells(z, 7) = Firma.Value
End Sub


Ich frage mich allerdings ohnehin, was das Ganze soll. Wieso müssen die Eintragungen in der Tabelle über Textformen in der UserForm erfolgen? Das geht doch direkt in der Tabelle viel einfacher.

Gruß
Martin Beck

P.S. Der Code ist ungetestet!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige