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

Userform 1:n

Userform 1:n
22.05.2003 11:41:35
Volker
vor kurzem hat mir hier ein Mensch bei einer schweren Aufgabe geholfen die auch super funktioniert ...auch wenn ich nicht alles wirklich verstehe was im code passiert.

jedoch nun bin ich oder meine user auf den geschmack gekommen und es ergibt sich eine zusätzliche Aufgabe.

mit einer Userform in Tabelle 1 greift der code auf Tabelle 2 zu
und liest einen Schlüssel mit einem Wert daneben aus.

Nun besteht zusätzlich die Notwendigkeit auf Tabelle 3 und Tabelle 4 zuzugreifen und habe die entsprechenden listboxen hinzugefügt.

a)es funktioniert auf dem ersten Blick

b)ist in einer der Tabellen kein Wert vorhanden flieg ich raus
auch wenn in der nächsten Tabelle ein Wert vorhanden wäre......

könnte ich umgehen indem ich exit sub rausnehme ....aber ....

c)es gelingt mir nicht listbox3 mit mit drei Spalten einzurichten.


gruss

volker der anfänger im excel


Coding nicht von mir !!!!!!!!!!!!nur das was nicht funktioniert ist von mir *ggg*

Option Explicit
Public Zeile As Long
Sub UpdateUF()
Dim lfNr As Object
Dim lngArr As Long

UserForm1.Label1 = Cells(Zeile, 1)
UserForm1.Label2 = Cells(Zeile, 2)
UserForm1.ListBox1.ColumnCount = 2
UserForm1.ListBox2.ColumnCount = 2
UserForm1.ListBox3.ColumnCount = 3
UserForm1.ListBox1.Clear
UserForm1.ListBox2.Clear
UserForm1.ListBox3.Clear

With Worksheets("Tabelle2")


lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then lngArr = lngArr + 1
Next lfNr

If lngArr = 0 Then
MsgBox "Es gibt keinen Eintrag in ........"


Exit Sub
End If

ReDim MyArray(1 To lngArr, 0 To 1)
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(lfNr.Row, 2)
MyArray(lngArr, 1) = .Cells(lfNr.Row, 3)
End If
Next lfNr
UserForm1.ListBox1.List = MyArray
End With

With Worksheets("Tabelle3")


lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then lngArr = lngArr + 1
Next lfNr

If lngArr = 0 Then
MsgBox "Es gibt keine Werte in Tabelle 3"
Exit Sub
End If

ReDim MyArray(1 To lngArr, 0 To 1)
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(lfNr.Row, 2)
MyArray(lngArr, 1) = .Cells(lfNr.Row, 3)

End If
Next lfNr
UserForm1.ListBox2.List = MyArray
End With

With Worksheets("Tabelle4")


lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then lngArr = lngArr + 1
Next lfNr

If lngArr = 0 Then
MsgBox "Es gibt keine Werte in Tabelle 4"
Exit Sub
End If

ReDim MyArray(1 To lngArr, 0 To 1)
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(lfNr.Row, 2)
MyArray(lngArr, 1) = .Cells(lfNr.Row, 3)
End If
Next lfNr
UserForm1.ListBox3.List = MyArray
End With


End Sub

PS:sollte der geistige Vater dieses Codes diese Zeilen lesen,
ersuche ich um kurzen Kontakt auf folgende Mailadresse.....
würde mich gerne bedanken ...

VolkerJoachim@hotmail.com




13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Userform 1:n
22.05.2003 12:20:10
L.Vira

Ich kann mir gar nicht vorstellen, dass der Code korrekt funktioniert. Wo bekommt den die Variable Zeile ihren Wert her?
Wo steht der Code überhaupt, in einem Standardmodul oder im userform?



Re: Userform 1:n
22.05.2003 12:27:42
Volker

der code steht in einem Modul

das ganze passiert nach doppelclick


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

Load UserForm1

If Target.Column = 1 Or Target.Column = 2 Then
Zeile = Target.Row
Call UpdateUF
UserForm1.Show
Application.EditDirectlyInCell = False
End If

End Sub

Re: Userform 1:n
22.05.2003 12:34:52
L.Vira

Aha, das wäre geklärt, eine kleine Verbesserung, das andere Makro bekommst du in einigen Minuten:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Load UserForm1
If Target.Column = 1 Or Target.Column = 2 Then
Zeile = Target.Row
Call UpdateUF
UserForm1.Show
Cancel = True
End If
End Sub

Anzeige
Re: Userform 1:n
22.05.2003 12:42:18
Volker

verstehe das Application.EditDirectylnCell...war so nicht notwendig ...naja war auch mein schmarrnnnnnn *g*

Re: Userform 1:n
22.05.2003 12:42:39
L.Vira

Noch eine Frage, in welchem Blatt befindest du dich beim Aufruf des userform?

Re: Userform 1:n
22.05.2003 12:43:50
Volker

stehe immer in tabelle 1 die restlichen blende ich beim öffnen der arbeitsmappe aus .....

Re: Userform 1:n
22.05.2003 13:06:03
L.Vira

Eine Verbesserung wäre noch angebracht, wenn für keine der 3 Listen ein Wert gefunden wird, form nicht anzeigen:

Option Explicit
Public Zeile As Long
Sub UpdateUF()
Dim lfNr As Object
Dim lngArr As Long

UserForm1.Label1 = Cells(Zeile, 1)
UserForm1.Label2 = Cells(Zeile, 2)
UserForm1.ListBox1.ColumnCount = 2
UserForm1.ListBox2.ColumnCount = 2
UserForm1.ListBox3.ColumnCount = 3
UserForm1.ListBox1.Clear
UserForm1.ListBox2.Clear
UserForm1.ListBox3.Clear

With Worksheets("Tabelle2")

lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then lngArr = lngArr + 1
Next lfNr

If lngArr = 0 Then
MsgBox "Es gibt keinen Eintrag in Tabelle2"
Else
ReDim MyArray(1 To lngArr, 0 To 1)
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(lfNr.Row, 2)
MyArray(lngArr, 1) = .Cells(lfNr.Row, 3)
End If
Next lfNr
UserForm1.ListBox1.List = MyArray
End If
End With
''--------------------------------------------------------------
With Worksheets("Tabelle3")
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then lngArr = lngArr + 1
Next lfNr

If lngArr = 0 Then
MsgBox "Es gibt keine Werte in Tabelle 3"
Else
ReDim MyArray(1 To lngArr, 0 To 1)
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(lfNr.Row, 2)
MyArray(lngArr, 1) = .Cells(lfNr.Row, 3)
End If
Next lfNr
UserForm1.ListBox2.List = MyArray
End If
End With
''-------------------------------------------------------------
With Worksheets("Tabelle4")
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then lngArr = lngArr + 1
Next lfNr

If lngArr = 0 Then
MsgBox "Es gibt keine Werte in Tabelle 4"
Else
ReDim MyArray(1 To lngArr, 0 To 2)
lngArr = 0
For Each lfNr In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
If lfNr = Cells(Zeile, 1) Then
lngArr = lngArr + 1
MyArray(lngArr, 0) = .Cells(lfNr.Row, 2)
MyArray(lngArr, 1) = .Cells(lfNr.Row, 3)
MyArray(lngArr, 2) = .Cells(lfNr.Row, 4)
End If
Next lfNr
UserForm1.ListBox3.List = MyArray
End If
End With

End Sub



Anzeige
Userform 1:n !!!!!!!!!fertig
22.05.2003 13:20:09
Volker

lächel habe nicht gewusst das hier soviele Menschen mit so guten Kenntnissen unterwegs sind...

herzlichen Dank

liebe L.Vira

es funktioniert tadellos !!!!!!!


die Userform bleibt nach dem öffnen offen ...es gibt navigationsschalter nach oben und unten.....


theoretisch könnte ich jetzt noch die listboxen ausblenden wenn kein wert kommt....aber da wird es dann wirklich pervers...

der mensch will immer mehr und dastrifft auch auf mich zu...*g*


vielleicht kann ich irgendwann woanders helfen...danke


Gruss

Volker

Re: Userform 1:n !!!!!!!!!fertig
22.05.2003 13:25:47
L.Vira

"der mensch will immer mehr und dastrifft auch auf mich zu...*g*"
Das muss doch auch so sein!

Anzeige
Re: Userform 1:n !!!!!!!!!fertig
22.05.2003 13:50:46
Volker

du hast wahrscheinlich recht man(n) sollte das positiv sehen
werde noch lange brauchen,bis ich das alles kann und der tag hat nur 24 stunden...dafür schäme ich mich manchmal....das ist es ...

lg.grüsse

Volker

Re: Userform 1:n !!!!!!!!!fertig
22.05.2003 13:52:48
L.Vira

Dann nimm doch die Nacht dazu!

Re: Userform 1:n !!!!!!!!!fertig
22.05.2003 19:40:39
Volker

habe verstanden *gg* :-( :-)

Re: Userform 1:n !!!!!!!!!fertig
24.05.2003 19:53:11
Die Nacht dazu

äh hab noch ein paar nächte dazugenommen aber jetzt geht nix mehr .....hätte da noch eine bitte solltest du das noch lesen....


Volker

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige