janek
Goto Top

Dialoge in Makro!

Hallo erstmal,

ich möchte mit einem Makro ein Fenster einfügen in dem ich, (wie wenn ich sage "datei öffnen") auswählen kann was ich einfüge... bzw. Auswähle. Hat einer von euch ne idee wie ich das machen kann?


danke schonmal!

mfg
janek

Content-Key: 44491

Url: https://administrator.de/contentid/44491

Printed on: April 16, 2024 at 10:04 o'clock

Mitglied: 8644
8644 Nov 15, 2006 at 11:25:59 (UTC)
Goto Top
Mahlzeit,

wie wenn ich sage "datei öffnen"

Oder genau das?
Wo soll was eingefügt werden?
Beschreib mal bitte genau, was du möchtest!

Psycho
Member: Janek
Janek Nov 15, 2006 at 11:31:37 (UTC)
Goto Top
Also ich habe ein Makro, mit dem ich auf eine andere Mappe zugreifen will die ich über ein "datei öffnen" -fenster öffnen will, da diese mape vom inhalt her variiert.

bislang habe ich es so:

Range("TReQ").Select
Dim sTxt As String, Wert As Variant
sTxt = InputBox("Verzeichnisname (Bitte genauen Pfad angeben):")
If sTxt = " " Then Exit Sub

Aber das ist für die user für die es sein soll zu komplieziert...
Also möcht ich es stadtdessen mit einem "datei öffen" fenster machen

janek
Mitglied: 8644
8644 Nov 15, 2006 at 11:44:40 (UTC)
Goto Top
Hi,

mach dir doch den fertigen Dialog zu eigen:

Application.Dialogs(xlDialogOpen).Show "D:\Daten"  

Den Startpfad musst du natürlich noch anpassen.

Psycho
Member: Janek
Janek Nov 15, 2006 at 11:58:57 (UTC)
Goto Top
hmm ich habe das jetzt so eigefügt und es geht auch soweit doch es bleibt dann an der stelle hängen wenn es wieder zurück geht :

Range("TReQ").Select
Dim sTxt As String, Wert As Variant
Application.Dialogs(xlDialogOpen).Show "Y:\"
If sTxt = " " Then Exit Sub

Workbooks.Open Filename:=sTxt<-- hier bleibtes dann hängen


also vorher hatte ich es so:

Range("TReQ").Select
Dim sTxt As String, Wert As Variant
sTxt = InputBox("Verzeichnisname (Bitte genauen Pfad angeben):")
If sTxt = " " Then Exit Sub

Workbooks.Open Filename:=sTxt

und das hatte prima geklappt war halt nur zu komplieziert...

es geht dann ahlt so weiter:

Wert = Range("A1")
Windows("Mappe1").Activate
Workbooks.Open Filename:=sTxt
Wert1 = Range("Z2")
Windows("Mappe1").Activate
Range("F2") = Wert1 & "-" & Wert

aber so weit komm ich jetzt nicht mehr.
Mitglied: 8644
8644 Nov 15, 2006 at 12:14:31 (UTC)
Goto Top
...dann lass uns mal zusammenfassen:

Du hast eine Arbeitsmappe mit einem Makro, welches folgendes tun soll:

-> eine variable Arbeitsmappe öffnen
-> aus der ursprünglichen Mappe den Wert aus A1 speichern
-> aus der neu geöffneten Mappe den Wert aus Z2 speichern
-> diese Werte kombinieren
-> den neu erhaltenen Wert in die ursprüngliche Mappe in F2 schreiben

Korrigiere mich bitte, bevor ich Zeit in die falsche Lösung investiere face-wink

Psycho
Member: Janek
Janek Nov 15, 2006 at 12:19:41 (UTC)
Goto Top
fast....

-> eine variable Arbeitsmappe öffnen
-> aus der neu geöffneten Mappe den Wert aus A1 speichern
-> aus der neu geöffneten Mappe den Wert aus Z2 speichern
-> diese Werte kombinieren
-> den neu erhaltenen Wert in die ursprüngliche Mappe in F2 schreiben

aber sonnst stimmt es
Mitglied: 8644
8644 Nov 15, 2006 at 12:37:39 (UTC)
Goto Top
Hi,

unter Vorbehalt (ich würd's über Formeln lösen)

Sub open_file()
 Dim Wert, Wert1 As Variant
  Application.Dialogs(xlDialogOpen).Show
  Wert = Range("A1").Value  
  Wert1 = Range("Z2").Value  
  Windows("Mappe1").Activate  
  Range("F2").Value = Wert & "-" & Wert1  
End Sub

Psycho
Member: Janek
Janek Nov 15, 2006 at 12:42:20 (UTC)
Goto Top
könnte gehen, aber ich habe halt nicht nur das sondern es weren auf der ganzen seite insgesammt über 30 daten ausgetauscht
Mitglied: 8644
8644 Nov 15, 2006 at 12:45:25 (UTC)
Goto Top
...dann auf jeden Fall erst alle Werte, die du benötigst, in Variablen ablegen und dann den Wechsel in die ursprüngliche Mappe durchführen!

Psycho
Member: Janek
Janek Nov 15, 2006 at 13:10:38 (UTC)
Goto Top
upps... (kann gelöscht werden)
Member: Janek
Janek Nov 15, 2006 at 13:11:33 (UTC)
Goto Top
super das klappt jetzt soweit!

kann man jetzt auch noch sagen das wenn man jetzt sozusagen die "ursrüngliche" mappe öffnet (das ist eine vorlage) das man jetzt wenn man das makro startet eine Speicheraufforderung bekommt und man dann mit diesem eingegebenen Speichernamen dann weitermacht?

heist das dann nicht mehr:

Sub open_file()
Dim Wert, Wert1 As Variant
Application.Dialogs(xlDialogOpen).Show
Wert = Range("A1").Value
Wert1 = Range("Z2").Value
Windows("Mappe1").Activate --> hier steht sondern der neue speicher name?
Range("F2").Value = Wert & "-" & Wert1
End Sub


wenn du mir noch sagen könnest wie das geht wär ich dir sehr verbunden!

mfg
Mitglied: 8644
8644 Nov 15, 2006 at 13:16:01 (UTC)
Goto Top
Hi,

jep:

Sub open_file()
Dim Wert, Wert1 As Variant
Dim newname As String
Application.Dialogs(xlDialogSaveAs).Show
newname = Application.ActiveWorkbook.Name
Application.Dialogs(xlDialogOpen).Show
Wert = Range("A1").Value  
Wert1 = Range("Z2").Value  
Windows(newname).Activate
Range("F2").Value = Wert & "-" & Wert1  
End Sub

Psycho

[Edit: Das ist die Antwort auf die folgende Frage face-wink]
Member: Janek
Janek Nov 15, 2006 at 13:23:03 (UTC)
Goto Top
ok danke das wars erstmal face-wink hast mir sehr geholfen!
Mitglied: 8644
8644 Nov 15, 2006 at 13:50:20 (UTC)
Goto Top
...freut mich! Dann setze den Beitrag doch bitte noch auf "gelöst". Und wenn du schon mal beim Editieren bist, ändere evtl. noch den Titel auf "Dialoge in Makro" oder so etwas. Falls mal wieder jemand so ein Problem hat, sucht er wahrscheinlich nicht nach "Einfügungsfenster" face-wink

Psycho
Member: Janek
Janek Nov 16, 2006 at 09:17:26 (UTC)
Goto Top
hallo,
es hat sich ein neues Problem eingetragen.

in meiner tabelle (die gleiche wie oben) gibt es ein feld das in dem entweder was drinne steht oder nicht. wenn etwas drinn steht , soll das makro ganz normal weitermachen und wenn nicht soll er einen anderen wert dort rein setzen...

bsp.:
Also in fenster g5 (mappe1) steht etwas das makro soll es in mappe 2 nach j3 setzen
aber wenn ich g5 nichts steht dann soll g6 nach j3

und die dannach volgenden felder sollen ein aufrücken:

wenn was drinn steht (g5)

dann g5 nach j3
g6- j4
g7-j5 usw.

und wenn nicht in g5 steht

g6-j3
g7-j4
g8-j5 usw.

wie mach ich das?


was noch besser wär, wenn in g5 nichts drinn sthe dann soll es auf jeden fall g6 nach j3

aber kann ich bei den anderen auch sozusagen ausählen wo ich die hinschicke
position 1,2,3... ?

bin über jede antwort dankbar!

janek
Mitglied: 8644
8644 Nov 16, 2006 at 10:37:44 (UTC)
Goto Top
Hallo Janek face-wink

hier mal ein Ansatz:

Sub test()
 Dim Zelle As String
 Dim Zeile As Integer
 Dim i As Integer
 Dim Werte(20) As Variant
 If Range("G5").Value = "" Then Zeile = 5 Else Zeile = 6  
  For i = 0 To 20
   Zelle = "G" & CStr(i + Zeile)  
   Werte(i) = Range(Zelle).Value
  Next i
End Sub

Die Variable Werte ist ein Array, welches 21 (0 - 20) Werte aufnehmen kann. Hier musst du wissen, wie viele du benötigst.
Es wird geguckt, ob in G5 was steht - wenn ja, beginnen wir in Zeile 5 sonst in Zeile 6.
In der Zählschleife werden dann die Zellbezeichnungen entsprechend zusammengesetzt und die Werte in das Array geschrieben.
Das auslesen und in die andere Mappe übertragen bekommst du mit diesem Beispiel sicher selber hin!

Psycho
Member: bastla
bastla Nov 16, 2006 at 11:00:59 (UTC)
Goto Top
@psycho

Gibt es einen speziellen Grund, dass Du die "Range"-Schreibweise bevorzugst? Speziell bei Zählschleifen nehme ich lieber "Cells", also etwa
For i = 0 To 20
    Werte(i) = Cells(i + Zeile, 7).Value
Next

Grüße
bastla
Member: Janek
Janek Nov 16, 2006 at 11:01:29 (UTC)
Goto Top
also meine tabelle sieht bisher so aus:


Dim Wert, Wert1 As Variant
Dim newname As String
Application.Dialogs(xlDialogSaveAs).Show
newname = Application.ActiveWorkbook.Name
Application.Dialogs(xlDialogOpen).Show
Wert = Range("TReQNo").Value
Wert1 = Range("Z2").Value
Wert2 = Range("AC3").Value
Wert3 = Range("C3").Value
Wert4 = Range("H45").Value
Wert5 = Range("R45").Value
Wert6 = Range("C44").Value
Wert7 = Range("J44").Value
Wert8 = Range("N40").Value(---position1)
Wert9 = Range("K40").Value(---position1)

Windows(newname).Activate
Range("TreQ").Value = "TR-" & Wert1 & "-" & Wert
Range("E9").Value = Wert2
Range("AA5").Value = Wert3
Range("I11").Value = Wert4 & "/" & Wert5
Range("U10").Value = Wert6
Range("AA10").Value = Wert7
Range("J15").Value = Wert8(---position1)
Range("J17").Value = Wert9 (---position1)


wo soll ich das denn einfügen?

also genaue zahlen: (wenn was drinne steht)
N41 (g5) nach Q15 (j3)---Postion 2
K41 nach Q17---Postion 2

N32 nach X15 ---Postion 3
K32 nach X17 ---Position 3

N33 nach AE15---Postion 4
K33 nach AE17---Postion 4

N34 nach J15---Postion 5
K34 nach J17---Postion 5

N35 nach Q62---Postion 6
K35 nach Q64---Postion 6

N36 nach X62---Postion 7
K36 nach X64---Postion 7

N37 nach AE62---Postion 8
K37 nach AE64---Postion 8

wenn N41 leer

N32 nach Q15 ---Postion 2
K32 nach Q17 ---Position 2

N33 nach X15---Postion 3
K33 nach X17---Postion 3

N34 nach AE15---Postion 4
K34 nach AE17---Postion 4

N35 nach J62---Postion 5
K35 nach J64---Postion 5

N36 nach Q62---Postion 6
K36 nach Q64---Postion 6

N37 nach X62---Postion 7
K37 nach X64---Postion 7

(position 8 ist nicht belegt)


und die "N" und "K" möchte ich a liebsten in den verschiedenen Positionen per Hand auswählen welche daten in welche positin getan werden sollen.

janek
Mitglied: 8644
8644 Nov 16, 2006 at 11:04:22 (UTC)
Goto Top
@bastla,

es gibt keinen Grund, ich habe eigentlich von VBA keine große Ahnung und wurschtel mich mit der Hilfe durch. Danke für den Hinweis!

Psycho
Mitglied: 8644
8644 Nov 16, 2006 at 11:08:02 (UTC)
Goto Top
@Janek:

ich glaube, jetzt ist der Zeitpunk gekommen, wo du uns mal ganz genau dein Vorhaben erklären solltest! Sonst kommt nur noch Kauderwelsch raus! Für mich die wichtigste Frage:
Wieviel verschiedene Mappen zur Auswahl der Werte können es werden? - Wie gesagt, ich tendiere immer noch Richtung Formeln!


Psycho
Member: Janek
Janek Nov 16, 2006 at 11:39:55 (UTC)
Goto Top
ich versuche ja so gut wie es geht zu erklären was ich machen will aber das geht so übers internet nicht so gut...

also ich habe egal in welcher konstilation immer nur 2 mappen.

die 1. ist eine vorlage die vom tabellen aufbau her immer gleich ist und nicht ausgefüllt ist.

die 2. ist eine variiable mappe. sie ist vom tabellen aufbau her auch immer gleich, nur das die werte in den einzelnden zellen unterschiedlich sind. (diese mappe kommt zu uns aus einem anderen betrieb und kann also auch nicht verändert werden (zu hoher arbeitsaufwand!)
(für die 2. mappe kommen verdammt viele mappen zu auswahl...)

janek
Mitglied: 8644
8644 Nov 16, 2006 at 11:43:40 (UTC)
Goto Top
...so, ist denn die Anzahl der zu übertragenden Werte einheitlich? Wenn ja, wieviele hast du?
Und ist die Angbabe von dir, welcher Wert in welche Zelle soll komplett? Falls nicht aktualisier das mal bitte, dann schauen wir mal, was wir machen können!

Psycho
Member: Janek
Janek Nov 16, 2006 at 11:54:44 (UTC)
Goto Top
es müssten eigentlich 24 werte sein die rübergholt werden müssen
(ist aktualiesiert)

janek
Mitglied: 8644
8644 Nov 16, 2006 at 12:56:48 (UTC)
Goto Top
Hi Janek,

hier ist mal was zum Testen, Spielen, Anpassen...

Sub open_file()
Dim Werte(20) As Variant                    'Datenfeld für die Werte  
Dim Quell_Zellen As Variant

Quell_Zellen = Array("N32", "K32", "N33", "K33", "N34", "K34", "N35", "K35", "N36", "K36", "N37", "K37")  
                                            'Das sind die Zellen, aus denen wir die Werte holen!  
Dim Zielzellen As Variant
Zielzellen = Array("X15", "X17", "AE15", "AE17", "J15", "J17", "Q62", "Q64", "X62", "X64", "AE62", "AE64")  
                                            'Hier werden die Werte eingetragen  

                                            
Dim newname As String                       'Neuer Dateiname  
Dim i, n As Integer                         'Zählvariable für die Anzahl der Werte...  
                                            '...wird auch als Index für die Arrays verwendet  
Application.Dialogs(xlDialogSaveAs).Show    '"Speichern unter" Dialog aufrufen  
newname = Application.ActiveWorkbook.Name   'Zuweisung des neuen Dateinamens  
Application.Dialogs(xlDialogOpen).Show      '"Datei öffnen" Dialog aufrufen  
     
     '### Jetzt befinden wir uns in der Neuen Arbeitsmappe ###  
If Range("N41").Value <> "" Then  
 Werte(0) = Range("N41").Value  
 Werte(1) = Range("K41").Value                'Die Werte aus N41 und K41 speichern, falls vorhanden  
 For i = 2 To 13                              'Die Schleife zum Speichern der Werte  
  Werte(i) = Range(Quell_Zellen(i - 2)).Value 'Die Werte ins Array schreiben  
 Next i                                       'Ende der Schleife  
Else
For i = 0 To 11                               'Die Schleife zum Speichern der Werte  
  Werte(i) = Range(Quell_Zellen(i)).Value     'Die Werte ins Array schreiben  
 Next i                                       'Ende der Schleife  
End If

Windows(newname).Activate                   'Die Mustermappe aktivieren  
     
     '### Jetzt befinden wir uns in der Mustermappe ###  
 
 For i = 0 To 11
  Range(Zielzellen(i)).Value = Werte(i)      'Die Werte schreiben  
 Next i
End Sub

Psycho
Member: Janek
Janek Nov 16, 2006 at 13:03:41 (UTC)
Goto Top
hi psycho,

danke für die ausfürliche ausführung, werde ich gleich mal austesten, aber ich denke dasich das heuz nicht mehr fertig schaffen werde, weil ich glein shluss habe...
also werde ich hier morgen nochmalposten ob es so kappt wie ich es mir vorstelle bzw ob ich es so hinkriege...
Member: Janek
Janek Nov 17, 2006 at 07:38:29 (UTC)
Goto Top
ok das funktioniert so weit...

jetzt kann ich aber wärend das makro ausgeführt wird immer noch nicht einzelnd auswählen wo ich die sachen hinkopieren kann/soll... weißt du (bzw. ihr) wie das geht oder soll ich mal lieber im "vba Forum" (den ich grad gefunden habe) nochmal nen beitrag erstellen in dem ich hier auf den nen link setze oder so...

janek
Mitglied: 8644
8644 Nov 17, 2006 at 09:04:00 (UTC)
Goto Top
Guten Morgen Janek,

ich denke mal, dass wir hier weitermachen, weil ich immer noch mal die anderen Kommentare zu Rate ziehen muss!
Du musst mir / uns jetzt mal genau erklären, wann welche Zellen manuell angegeben werden sollen. Damit habe ich noch ein paar Verständnisprobleme.

Psycho
Member: Janek
Janek Nov 17, 2006 at 09:21:59 (UTC)
Goto Top
ok,
auch erstmal guten morgen!

alo wie ich schonmal oben geschrieben habe:

ich möchte nachdem er geguckt hat ob N41 bzw. K41 leer ist von Alle Zellen diem anfang das "N" hat auswählen können ob nach Q15, X15, AE15, J62(da hatte ich oben einen fehler im beitrag, sthet oben als J15 und J17 ist J64),Q62, X62, AE62 es hinkopiert werden soll.

und es soll automatisch immer das "K" zu dem "N" hinzu kommen (weil die gehören immer zusammen.

Bsp.:

Es wird gefragt: Wohin "der Inhalt aus N32"
dann müsste man auswählen können zwichen

Position 2 = Q15
Position 3 = X15
Position 4 = AE15
Position 5 = J62
Position 6 = Q62
Position 7 = X62
Position 8 = AE62

(Wobei die bei den Positionen nicht dabei stehen muss wo es ist...)

wenn man jetzt Position 2 wählt müsste automatisch der Inhalt von N32 nach Q15 und der inhalt von K32 nach Q17.

Jetzt müsste sich das nächste Fenster öffnen und Für das nächste "N" fragen. Wobei jetzt die Position die vorher ausgewählt wurde nicht mehr angezeigt werden sollten (wenn das nicht möglich ist, ist es auch egal!)

und halt immer so weiter....

hoffe das ist ausführlich genug ;)

janek
Mitglied: 8644
8644 Nov 17, 2006 at 09:38:45 (UTC)
Goto Top
Ok,

ich denke, ich habs verstanden! Komme aber erst heute abend dazu!

Psycho

P.S. Ich trinke Jack Daniels! face-wink
Member: Janek
Janek Nov 17, 2006 at 09:46:32 (UTC)
Goto Top
schade naja dann hoff ich das d mir het abend weiterhelfen kannst...

probier einfach ein bisschen rum..
Mitglied: 8644
8644 Nov 17, 2006 at 10:25:05 (UTC)
Goto Top
Ich noch mal face-wink

Was hältst du denn von folgendem Ansatz:

http://www.mario-schuster.net/neu-1.jpg

Psycho
Member: Janek
Janek Nov 17, 2006 at 10:34:59 (UTC)
Goto Top
ja sieht schonmal ganz gut aus, nur meine user die damit arbeiten werden so mit "N41" vllt probleme haben. Kann man stadt "N41 auf "2" hinschreiben?
N32 =3 und so.. (bis 8)

und bei "Q15" in diesen Feldern "Po. 2" bis "Po. 8" (bzw. kann man das so das es nur eine auswahlliste gibt (nur die linke und das sich die "rechte" automatisch anpasst?

halt wie in meinem letzte beitrag geschrieben.

also das wenn man N41 nach Po. 2 (Q15) das dann K41 auch nach Po. 2 (Q17) gesetzt wird. oder wenn es da probleme mit dem beschriften gibt (halt Po.2a und b oder so...)

das wär noch super!

janek
Mitglied: 8644
8644 Nov 17, 2006 at 10:37:09 (UTC)
Goto Top
...was da steht ist total egal! Das kannst du dir zur Not ja auch noch selber anpassen.
Aber wie gesagt, heute abend habe ich mehr Zeit.

Psycho
Member: Janek
Janek Nov 17, 2006 at 10:42:00 (UTC)
Goto Top
hab meinen letzten beitrag noch editiert:
Member: Janek
Janek Nov 17, 2006 at 11:44:35 (UTC)
Goto Top
es ist grad eine neue information aus der abteilug gekommen die die vorlagen erstellt und überarbeitet.

die die daten die in dem fenster ausgewählt werden, müssen wenn sie eingefügt werden nicht auf dem ersten sondern auf dem 2. tabellen blatt eingefügt werden.

was muss ich dann an dem befehl verändern?

dadurh haben sich auch die einfügungs werte verändert:

N40 nach E6 (in der 2. tabelle, von der "mustermappe")
K40 nach E8


Die neue Positionen die ich auswähln möcht:

Position 2 = G6
Position 3 = I6
Position 4 = M6
Position 5 = O6
Position 6 = S6
Position 7 = U6
Position 8 = Y6
Position 9 = AA6

(in der 2. tabelle der "mustermappe")

Es gibt jetzt eine position mehr wo ich es einfügen kann.

hoffe es ist jetzt immer noch verständlich...

janek
Mitglied: 8644
8644 Nov 20, 2006 at 07:06:34 (UTC)
Goto Top
Guten Morgen,

bitte kläre mal folgende Dinge ab:

- Ist es jetzt definitiv der letzte Stand, oder kommen da noch 5 - 10 Änderungswünsche?
- Wie heisst das 2. Tabellenblatt (Tabelle2)?
- Da jetzt noch eine Position hinzugekommen ist, brauche ich nochmal genaue Angaben im Stile von:
[Quelle]
Pos 2 -> N40
...
[Ziel]
Pos 2 -> Q88
...

Psycho
Member: Janek
Janek Nov 20, 2006 at 08:42:57 (UTC)
Goto Top
Morgen,

das ist jetzt der letzte stand.

Die 2. tabelle heist "Input"

[Quelle]
Pos 2 -> N41
Pos 3 -> N32
Pos 4 -> N33
Pos 5 -> N34
Pos 6 -> N35
Pos 7 -> N36
Pos 8 -> N37


[Ziel]
Pos 2 -> E6
Pos 3 -> I6
Pos 4 -> M6
Pos 5 -> O6
Pos 6 -> S6
Pos 7 -> U6
Pos 8 -> Y6
Pos 9 -> AA6

ich habe nur 8 (bzw 7 die ich auswählen möchte) quell zellen, aber 9 (bzw 8) ziel zellen. ich möcht von für jede quell zelle auswählen können in welches der 8 (2-9) zellen ich es einfügen kann.

es kommen dann noch hinzu:

[Quelle]
Pos 2a -> K41
Pos 3a -> K32
Pos 4a -> K33
Pos 5a -> K34
Pos 6a -> k35
Pos 7a -> k36
Pos 8a -> k37


[Ziel]
Pos 2a -> E8
Pos 3a -> I8
Pos 4a -> M8
Pos 5a -> O8
Pos 6a -> S8
Pos 7a -> U8
Pos 8a -> Y8
Pos 9a -> AA8

(wenn pos 3 nach pos 4, dann pos 3a nach Pos 4a)


janek
Mitglied: 8644
8644 Nov 20, 2006 at 09:01:44 (UTC)
Goto Top
ist es gewollt, dass beim Ziel Position 4 und 5 jeweils identisch sind?

Psycho
Member: Janek
Janek Nov 20, 2006 at 09:03:52 (UTC)
Goto Top
eh nein ist korriegiert...
Mitglied: 8644
8644 Nov 20, 2006 at 10:12:32 (UTC)
Goto Top
So, ich hab hier mal was gebastelt:

Folgende Vorgehensweise:

In der Mustermappe [Alt] + [F11] drücken um den VBA-Editor zu starten.
Hier fügst du dir ein UserForm ein (zweites Symbol von links).
Auf diesem Formular plazierst du entsprechende Labels, TextBoxen, ComboBoxen und Buttons nach folgendem Muster:

http://www.mario-schuster.net/neu-1.jpg

Die Anzeigetexte der Labels und Buttons änderst du mit der Eigenschaft Caption.
Die Namen der Textfelder sind wie folgt zu wählen:
Linke Spalte: TextFeld1 - TextFeld7
Rechte Spalte: TextFeld11 - TextFeld17
Die ComboBoxen heissen ComboBox1 - ComboBox7

Im VBA-Editor wählst du das Formular (UserForm1) aus und deklarierst eine globale Variable für den neuen Dateinamen:
Public newname As String
Dann schaffst du die Procedure UserForm_Initialize():
Private Sub UserForm_Initialize()
 Dim i As Integer
 
  For i = 2 To 9
   ComboBox1.AddItem ("Pos " & CStr(i))  
  Next i
  ComboBox2.List = ComboBox1.List
  ComboBox3.List = ComboBox1.List
  ComboBox4.List = ComboBox1.List
  ComboBox5.List = ComboBox1.List
  ComboBox6.List = ComboBox1.List
  ComboBox7.List = ComboBox1.List

Application.Dialogs(xlDialogSaveAs).Show
newname = Application.ActiveWorkbook.Name
Application.Dialogs(xlDialogOpen).Show
  
TextBox1.Text = Range("N40").Text  
TextBox2.Text = Range("N41").Text  
TextBox3.Text = Range("N32").Text  
TextBox4.Text = Range("N34").Text  
TextBox5.Text = Range("N35").Text  
TextBox6.Text = Range("N36").Text  
TextBox7.Text = Range("N37").Text  
  
TextBox11.Text = Range("K40").Text  
TextBox12.Text = Range("K41").Text  
TextBox13.Text = Range("K32").Text  
TextBox14.Text = Range("K34").Text  
TextBox15.Text = Range("K35").Text  
TextBox16.Text = Range("K36").Text  
TextBox17.Text = Range("K37").Text  
UserForm1.Hide
End Sub
Das geht zwar sicher alles noch eleganter - in Schleifen - aber hier fehlt mir die Erfahrung!
Jetzt machst du einen Doppelklick auf den OK-Button und bringst folgenden Code unter:
Private Sub CommandButton1_Click()
 Dim Zielzellen1 As Variant
  Zielzellen1 = Array("E6", "I6", "M6", "O6", "S6", "U6", "Y6", "AA6")  
  Dim Zielzellen2 As Variant
  Zielzellen2 = Array("E8", "I8", "M8", "O8", "S8", "U8", "Y8", "AA8")  
Windows(newname).Activate
Sheets("Input").Activate  
If ComboBox1.ListIndex >= 0 Then
 Range(Zielzellen1(ComboBox1.ListIndex)).Value = TextBox1.Value
 Range(Zielzellen2(ComboBox1.ListIndex)).Value = TextBox11.Value
End If
 Range(Zielzellen1(ComboBox2.ListIndex)).Value = TextBox2.Value
 Range(Zielzellen2(ComboBox2.ListIndex)).Value = TextBox12.Value
 Range(Zielzellen1(ComboBox3.ListIndex)).Value = TextBox3.Value
 Range(Zielzellen2(ComboBox3.ListIndex)).Value = TextBox13.Value
 Range(Zielzellen1(ComboBox4.ListIndex)).Value = TextBox4.Value
 Range(Zielzellen2(ComboBox4.ListIndex)).Value = TextBox14.Value
 Range(Zielzellen1(ComboBox5.ListIndex)).Value = TextBox5.Value
 Range(Zielzellen2(ComboBox5.ListIndex)).Value = TextBox15.Value
 Range(Zielzellen1(ComboBox6.ListIndex)).Value = TextBox6.Value
 Range(Zielzellen2(ComboBox6.ListIndex)).Value = TextBox16.Value
 Range(Zielzellen1(ComboBox7.ListIndex)).Value = TextBox7.Value
 Range(Zielzellen2(ComboBox7.ListIndex)).Value = TextBox17.Value
 UserForm1.Hide
End Sub
Ein Doppelklick auf den Abbrechen-Button erstellt diese Procedure:
Private Sub CommandButton2_Click()
 UserForm1.Hide
End Sub
Dein eigentliches (ursprüngliches) Makro beschränkt sich jetzt auf folgende Zeile:
 UserForm1.Show

hth

Psycho
Member: Janek
Janek Nov 20, 2006 at 10:34:18 (UTC)
Goto Top
1. Frage:

in der userform gibt es in spalte terxtfeld, dann noch ne spalte, und dann die combobox, wie soll ich die mitlere nenen?
Mitglied: 8644
8644 Nov 20, 2006 at 10:38:10 (UTC)
Goto Top
Es gibt zwei Spalten mit TextBoxen, die nennst du 1 - 7 und 11 - 17. Die ComboBoxen nennst du 1 - 7! Die Namen der übrigen Komponenten sind eigentlich egal!

Psycho
Member: Janek
Janek Nov 20, 2006 at 11:32:35 (UTC)
Goto Top
Im VBA-Editor wählst du das Formular
(UserForm1) aus und deklarierst eine globale
Variable für den neuen Dateinamen:
> Public newname As String
> 


kannst du mir das nochmal erläutern?
danke

sonnst habe ich das so weit, und ich muss dann in meinem eigentlichen makro nur noch "UserForm1.Show" eingeben? also da wo ich es hinhaben will?

janek
Mitglied: 8644
8644 Nov 20, 2006 at 11:40:35 (UTC)
Goto Top
kannst du mir das nochmal erläutern?
Diese Zeile gibst du ganz oben, über allen Prozeduren ein!
und ich muss dann in meinem eigentlichen makro nur noch "UserForm1.Show" eingeben?
Genau!

Psycho
Member: Janek
Janek Nov 20, 2006 at 11:52:30 (UTC)
Goto Top
Sub all()
'
' All Makro
' Makro am 14.11.2006 von j.fremerey aufgezeichnet
'

'

MsgBox , vbInformation "Um einen reibungslosen ablauf des Makros zu gewährleisten," + Chr(13) + "schließen sie bitte den eventuell geöffneten Test Request" + Chr(13) + " und drücken sie anschließend OK.", vbOKOnly
Dim Werte(20) As Variant                    'Datenfeld für die Werte  
Dim Quell_Zellen As Variant

Quell_Zellen = Array
("N32", "K32", "N33", "K33", "N34", "K34", "N35", "K35", "N36", "K36", "N37", "K37")  
                                            'Das sind die Zellen, aus denen wir die Werte holen!  
Dim Zielzellen As Variant
Zielzellen = Array
("X15", "X17", "AE15", "AE17", "J62", "J64", "Q62", "Q64", "X62", "X64", "AE62", "AE64")  
                                            'Hier werden die Werte eingetragen  

Dim newname As String 'Neuer Dateiname
Dim i, n As Integer 'Zählvariable für die Anzahl der Werte...
'...wird auch als Index für die Array verwendet
Application.Dialogs(xlDialogSaveAs).Show '"Speichern unter" Dialog aufrufen
newname = Application.ActiveWorkbook.Name 'Zuweisung des neuen Dateinamens
Application.Dialogs(xlDialogOpen).Show '"Datei öffnen" Dialog aufrufen


Dim Wert, Wert1 As Variant


'### Jetzt befinden wir uns in der Neuen Arbeitsmappe ###


Wert = Range("TReQNo").Value 'Kopfdaten werden kopiert
Wert1 = Range("Z2").Value
Wert2 = Range("AC3").Value
Wert3 = Range("C3").Value
Wert4 = Range("H45").Value
Wert5 = Range("R45").Value
Wert6 = Range("C44").Value
Wert7 = Range("J44").Value
Wert8 = Range("N40").Value
Wert9 = Range("K40").Value

If Range("N41").Value <> "" Then
Werte(0) = Range("N41").Value
Werte(1) = Range("K41").Value 'Die Werte aus N41 und K41 speichern, falls vorhanden
For i = 2 To 13 'Die Schleife zum Speichern der Werte
Werte(i) = Range(Quell_Zellen(i - 2)).Value 'Die Werte ins Array schreiben
Next i 'Ende der Schleife
Else
For i = 0 To 11 'Die Schleife zum Speichern der Werte
Werte(i) = Range(Quell_Zellen(i)).Value 'Die Werte ins Array schreiben
Next i 'Ende der Schleife
End If

Windows(newname).Activate 'Die Mustermappe aktivieren

'### Jetzt befinden wir uns in der Mustermappe ###

Range("TreQ").Value = "TR-" & Wert1 & "-" & Wert 'Kopfdaten werden eingefügt
Range("E9").Value = Wert2
Range("AA5").Value = Wert3
Range("I11").Value = Wert4 & "/" & Wert5
Range("U10").Value = Wert6
Range("AA10").Value = Wert7
Range("J15").Value = Wert8
Range("J17").Value = Wert9

For i = 0 To 11
Range(Zielzellen(i)).Value = Werte(i) 'Die Werte schreiben
Next i

UserForm1.Show

End Sub


was kann ich da jetzt alles rauslöschen?

ich habe mal makiert was ich denke...
Mitglied: 8644
8644 Nov 20, 2006 at 12:00:54 (UTC)
Goto Top
Das brauchst du alles nicht mehr!
Das was ich dir oben gepostet habe, ist der komplette Ablauf!

Psycho
Member: Janek
Janek Nov 20, 2006 at 12:10:15 (UTC)
Goto Top
Wert = Range("TReQNo").Value
Wert1 = Range("Z2").Value
Wert2 = Range("AC3").Value
Wert3 = Range("C3").Value
Wert4 = Range("H45").Value
Wert5 = Range("R45").Value
Wert6 = Range("C44").Value
Wert7 = Range("J44").Value
Wert8 = Range("N40").Value
Wert9 = Range("K40").Value


aber davon taucht doch zum bsp. gar nichts auf...


hab ich aber jetzt ausprobiert, aber er sagt mir


Private Sub CommandButton1_Click()
Dim Zielzellen1 As Variant
Zielzellen1 = Array("E6", "I6", "M6", "O6", "S6", "U6", "Y6", "AA6")
Dim Zielzellen2 As Variant
Zielzellen2 = Array("E8", "I8", "M8", "O8", "S8", "U8", "Y8", "AA8")
Windows(newname).Activate
Sheets("Input").Activate
If ComboBox1.ListIndex >= 0 Then
Range(Zielzellen1(ComboBox1.ListIndex)).Value = TextBox1.Value
Range(Zielzellen2(ComboBox1.ListIndex)).Value = TextBox11.Value
End If
Range(Zielzellen1(ComboBox2.ListIndex)).Value = TextBox2.Value --->Hier
Range(Zielzellen2(ComboBox2.ListIndex)).Value = TextBox12.Value
Range(Zielzellen1(ComboBox3.ListIndex)).Value = TextBox3.Value
Range(Zielzellen2(ComboBox3.ListIndex)).Value = TextBox13.Value
Range(Zielzellen1(ComboBox4.ListIndex)).Value = TextBox4.Value
Range(Zielzellen2(ComboBox4.ListIndex)).Value = TextBox14.Value
Range(Zielzellen1(ComboBox5.ListIndex)).Value = TextBox5.Value
Range(Zielzellen2(ComboBox5.ListIndex)).Value = TextBox15.Value
Range(Zielzellen1(ComboBox6.ListIndex)).Value = TextBox6.Value
Range(Zielzellen2(ComboBox6.ListIndex)).Value = TextBox16.Value
Range(Zielzellen1(ComboBox7.ListIndex)).Value = TextBox7.Value
Range(Zielzellen2(ComboBox7.ListIndex)).Value = TextBox17.Value
UserForm1.Hide

End Sub


Laufzeitfehler '9':
Index außerhalb des gültigen Bereichs
Mitglied: 8644
8644 Nov 20, 2006 at 12:49:53 (UTC)
Goto Top
Wert = Range("TReQNo").Value   
Wert1 = Range("Z2").Value  
Wert2 = Range("AC3").Value  
Wert3 = Range("C3").Value  
Wert4 = Range("H45").Value  
Wert5 = Range("R45").Value  
Wert6 = Range("C44").Value  
Wert7 = Range("J44").Value  
Wert8 = Range("N40").Value  
Wert9 = Range("K40").Value  

Ich dachte, das wäre hinfällig! face-sad

Die Indexüberschreitung ist mir auch noch ein Rätsel -> bei mir läuft's!
Member: Janek
Janek Nov 20, 2006 at 12:59:34 (UTC)
Goto Top
also das index problem habe ich gelöst. das war weil eine zelle nicht beschriftet war.

Wert = Range("TReQNo").Value   
Wert1 = Range("Z2").Value  
Wert2 = Range("AC3").Value  
Wert3 = Range("C3").Value  
Wert4 = Range("H45").Value  
Wert5 = Range("R45").Value  
Wert6 = Range("C44").Value  
Wert7 = Range("J44").Value  
Wert8 = Range("N40").Value  
Wert9 = Range("K40").Value  

warum dachtest du das sich das erledigt hat? hatte ich das ewähnt? hast du wohl falsch verstanden. aber das sind ja auch 2 verschiedene dinge, das kann man doch einfach also im normalen makro drinn lassen...

wenn du ne gute möglichkeit weißt, würd ich mich über ne antwort freuen... ich probier solang weiter rum...

janek
Mitglied: 8644
8644 Nov 20, 2006 at 14:24:39 (UTC)
Goto Top
hmm... Was soll denn mit Wert - Wert9 noch passieren und wo kommen die her?
Wenn die auch aus der der neuen Mappe kommen, würde ich mir ein Globales Array deklarieren:

Public Werte(10) As Variant
dann in der Prozedur UserForm_Initialize füllen:
Werte(0)=Range("TreQNo").Value  
.....
Werte(9)=Range("K40").Value  
...und in der Click Prozedur wieder in "Input" schreiben:
Range("Wasweissich").Value = Werte(0)  
...
Range("KeineAhnung").Value = Werte(9)  

Psycho

P.S. Sorry, dass ich ein bisschen den Überblick verloren habe!
Member: Janek
Janek Nov 20, 2006 at 14:33:09 (UTC)
Goto Top
ich hatte heut morgen oben noch ein tipp fehler den ich kurz nachdem du dir die daten geholt hast geändert habe...

soll ich

Public Werte(10) As Variant
in rivate Sub UserForm_Initialize():"
oder in "Private Sub CommandButton1_Click()"

einfügen?

janek
Mitglied: 8644
8644 Nov 20, 2006 at 14:36:20 (UTC)
Goto Top
Ganz oben, wo schon die andere Public-Deklaration steht!

Psycho
Member: Janek
Janek Nov 20, 2006 at 14:43:58 (UTC)
Goto Top
da sagt er mir:
Fehler beim Komplimieren:
Konstanten, Zeichenfolgen fester Länge, benutzerdefinierte Datenfelder und Declare-Anweisungen sind als Public Element von Objektmodulen nicht zugelassen.

janek
Member: Janek
Janek Nov 20, 2006 at 14:48:06 (UTC)
Goto Top
ich hab das jetzt so fals es dir weiterhilft:

Public newname As String
Public Werte(10) As Variant


Private Sub CommandButton1_Click()
Dim Zielzellen1 As Variant
  Zielzellen1 = Array("G6", "I6", "M6", "O6", "S6", "U6", "Y6", "AA6")  
  Dim Zielzellen2 As Variant
  Zielzellen2 = Array("G8", "I8", "M8", "O8", "S8", "U8", "Y8", "AA8")  
Windows(newname).Activate
Sheets("Input").Activate  
If ComboBox1.ListIndex >= 0 Then
 Range(Zielzellen1(ComboBox1.ListIndex)).Value = TextBox1.Value
 Range(Zielzellen2(ComboBox1.ListIndex)).Value = TextBox11.Value
End If
 Range(Zielzellen1(ComboBox2.ListIndex)).Value = TextBox2.Value
 Range(Zielzellen2(ComboBox2.ListIndex)).Value = TextBox12.Value
 Range(Zielzellen1(ComboBox3.ListIndex)).Value = TextBox3.Value
 Range(Zielzellen2(ComboBox3.ListIndex)).Value = TextBox13.Value
 Range(Zielzellen1(ComboBox4.ListIndex)).Value = TextBox4.Value
 Range(Zielzellen2(ComboBox4.ListIndex)).Value = TextBox14.Value
 Range(Zielzellen1(ComboBox5.ListIndex)).Value = TextBox5.Value
 Range(Zielzellen2(ComboBox5.ListIndex)).Value = TextBox15.Value
 Range(Zielzellen1(ComboBox6.ListIndex)).Value = TextBox6.Value
 Range(Zielzellen2(ComboBox6.ListIndex)).Value = TextBox16.Value
 Range(Zielzellen1(ComboBox7.ListIndex)).Value = TextBox7.Value
 Range(Zielzellen2(ComboBox7.ListIndex)).Value = TextBox17.Value
 
  Range("TreQ").Value = "TR-" & Wert(1) & "-" & Wert(0)  
    Range("E9").Value = Wert(2)  
    Range("AA5").Value = Wert(3)  
    Range("I11").Value = Wert(4) & "/" & Wert(5)  
    Range("U10").Value = Wert(6)  
    Range("AA10").Value = Wert(7)  
    Range("J15").Value = Wert(8)  
    Range("J17").Value = Wert(9)  
 
 UserForm1.Hide

End Sub

Private Sub CommandButton2_Click()
 UserForm1.Hide

End Sub


Private Sub UserForm_Initialize():

 Dim i As Integer
 
  For i = 2 To 9
   ComboBox1.AddItem ("Pos " & CStr(i))  
  Next i
  ComboBox2.List = ComboBox1.List
  ComboBox3.List = ComboBox1.List
  ComboBox4.List = ComboBox1.List
  ComboBox5.List = ComboBox1.List
  ComboBox6.List = ComboBox1.List
  ComboBox7.List = ComboBox1.List

Application.Dialogs(xlDialogSaveAs).Show
newname = Application.ActiveWorkbook.Name
Application.Dialogs(xlDialogOpen).Show
  
TextBox1.Text = Range("N41").Text  
TextBox2.Text = Range("N32").Text  
TextBox3.Text = Range("N33").Text  
TextBox4.Text = Range("N34").Text  
TextBox5.Text = Range("N35").Text  
TextBox6.Text = Range("N36").Text  
TextBox7.Text = Range("N37").Text  
  
TextBox11.Text = Range("K41").Text  
TextBox12.Text = Range("K32").Text  
TextBox13.Text = Range("K33").Text  
TextBox14.Text = Range("K34").Text  
TextBox15.Text = Range("K35").Text  
TextBox16.Text = Range("K36").Text  
TextBox17.Text = Range("K37").Text  
UserForm1.Hide

Wert(0) = Range("TReQNo").Value  
Wert(1) = Range("Z2").Value  
Wert(2) = Range("AC3").Value  
Wert(3) = Range("C3").Value  
Wert(4) = Range("H45").Value  
Wert(5) = Range("R45").Value  
Wert(6) = Range("C44").Value  
Wert(7) = Range("J44").Value  
Wert(8) = Range("N40").Value  
Wert(9) = Range("K40").Value  

End Sub

janek
Mitglied: 8644
8644 Nov 20, 2006 at 14:52:33 (UTC)
Goto Top
Sorry mein Fehler!

Über deinem "normalen" Makro natürlich!

Psycho
Member: Janek
Janek Nov 20, 2006 at 14:54:15 (UTC)
Goto Top
beide publics oder nur das 2.?

janek
Mitglied: 8644
8644 Nov 20, 2006 at 14:58:29 (UTC)
Goto Top
Nimms mir nicht übel, aber langsam glaube ich , dass du mich ver###ern willst!
Wenn es vorher geklappt hat, kann es sich ja nur um das zweite handeln!
Ich fahre jetzt nach hause, schmeisse meinen Rechner an und möchte eine Erfolgsmeldung hören - lesen!

Psycho
Member: Janek
Janek Nov 20, 2006 at 15:08:56 (UTC)
Goto Top
ok stimmt... hätt ich auch selber drauf kommen können!
Aber ver###rn wollt ich dich nicht! Mir wär es auch lieber wenn das teil laufen würde...

ich habe jetzt das public über mein "normales" makro getan und da tut sich jetzt gar nicht weil er mir wieder die fehlermeldung gibt:

Fehler beim Kompilieren:
Sub oder Fuction nicht definiert

und dann zeigt er auf:

Wert(0) = Range("TReQNo").Value <----
Wert(9) = Range("K40").Value


weißt du woran das liegen könnte?

und ich finde es echt toll das du mir so intensiv hilfst!

janek
Mitglied: 8644
8644 Nov 20, 2006 at 15:29:15 (UTC)
Goto Top
OK,

das mit dem Array scheint so nicht zu klappen, wie gesagt, da fehlt es mir an Erfahrung!
Ich stoße mal jemand anders auf diesen Thread!

Psycho
Member: Janek
Janek Nov 20, 2006 at 15:52:59 (UTC)
Goto Top
also da du ne positive nachricht hören willst

Das Makro funktioniert!

ich habe jetzt nur noch ein internes problem....

janek
Member: Janek
Janek Nov 21, 2006 at 12:05:15 (UTC)
Goto Top
Hallo,



noch 2 kleine fragen...

1.Kann ich das so einstellen, das automatisch in dem auswahlfenster das ziel der reihe nach durch schon drinn steht wenn man das makro öffnet?

und 2. kann ich das einstellen das statt "pos 1", "control" und dann statt "pos 2", pos 1 usw. steht. also ich hab schon raus gefunden wie man alles ändern kann aber nicht wie man es einzelnd hinbekommt...


(@psycho dad, kannst ja vllt doch noch mal ne antwort geben... wär nett!)
Danke


mfg janek
Mitglied: 8644
8644 Nov 21, 2006 at 12:38:28 (UTC)
Goto Top
Tach,

1.Kann ich das so einstellen, das automatisch in dem auswahlfenster das ziel der reihe
nach durch schon drinn steht wenn man das makro öffnet?

In UserForm_Initialize()

 ComboBox1.ListItem = 0
 ComboBox2.ListItem = 1
 ...

und 2. kann ich das einstellen das statt "pos 1", "control" und dann statt "pos 2", pos 1 usw. steht. also ich
hab schon raus gefunden wie man alles ändern kann aber nicht wie man es einzelnd hinbekommt...

Sorry, aber diese Frage verstehe ich nicht! face-sad

Psycho

P.S.
(@psycho dad, kannst ja vllt doch noch mal ne antwort geben... wär nett!)

Eigentlich bin ich doch immer nett!
Member: Janek
Janek Nov 21, 2006 at 12:59:32 (UTC)
Goto Top
hallo

> und 2. kann ich das einstellen das
statt "pos 1", "control"
und dann statt "pos 2", pos 1 usw.
steht. also ich
> hab schon raus gefunden wie man alles
ändern kann aber nicht wie man es
einzelnd hinbekommt...

Sorry, aber diese Frage verstehe ich nicht!
face-sad

bislang ist es doch so:

  For i = 2 To 9
   ComboBox1.AddItem ("Pos " & CStr(i))  
  Next i
  ComboBox2.List = ComboBox1.List
  ComboBox3.List = ComboBox1.List
  ComboBox4.List = ComboBox1.List
  ComboBox5.List = ComboBox1.List
  ComboBox6.List = ComboBox1.List
  ComboBox7.List = ComboBox1.List

und das heißt ja, nehm ich an:
In dieser Liste Schreib in jedes Feld "Pos " und setzte dort 2 - 9 hinter.
Jetzt möchte ich aber in der Combobox1 "Control" stehen haben und nur ComboBox2 bis ComboBox7 mit "Pos " durch nummerieren.

besser erklärt?


Janek

Ps.
Ich weiß doch das du nett bist face-wink
Mitglied: 8644
8644 Nov 21, 2006 at 13:06:11 (UTC)
Goto Top
Naja, dann musst du die ComboBox1 einzeln behandeln:

ComboBox1.AddItem("Control")  

und dann die Schleife auf ComboBox2 umbiegen:

For i = 2 To 9
   ComboBox2.AddItem ("Pos " & CStr(i))  
Next i

und die Zuweisungen dann auf die Restlichen münzen, wobei die Liste jetzt von ComboBox2 kommt:
  ComboBox3.List = ComboBox2.List
  ComboBox4.List = ComboBox2.List
  ComboBox5.List = ComboBox2.List
  ComboBox6.List = ComboBox2.List
  ComboBox7.List = ComboBox2.List

Psycho
Member: Janek
Janek Nov 21, 2006 at 13:43:05 (UTC)
Goto Top
also ich habe das jetzt so gemacht:

  ComboBox1.AddItem = ("Control")  
  
  For i = 2 To 9
   ComboBox2.AddItem ("Pos " & CStr(i))  
  Next i
  ComboBox3.List = ComboBox2.List
  ComboBox4.List = ComboBox2.List
  ComboBox5.List = ComboBox2.List
  ComboBox6.List = ComboBox2.List
  ComboBox7.List = ComboBox2.List
  

aber da gibt er mir ne fehlermeldung.

stimmt das das man auch hier: "ComboBox1.AddItem = ("Control")" additem hinschreiben muss oder gibtes da vllt noch ein anderen befehl?
kann ich mir vorstellen aber ich wüsste nicht welchen!

janek
Mitglied: 8644
8644 Nov 21, 2006 at 13:45:48 (UTC)
Goto Top
OHNE Gleichheitszeichen!

Psycho
Member: Janek
Janek Nov 21, 2006 at 13:56:28 (UTC)
Goto Top
nächster fehler face-smile

 ComboBox1.ListItem = Control
 ComboBox2.ListItem = 2
 ComboBox3.ListItem = 3
 ComboBox4.ListItem = 4
 ComboBox5.ListItem = 5
 ComboBox6.ListItem = 6
 ComboBox7.ListItem = 7
 

oder muss ich da Pos 2 etc reinschreiben?

janek
Mitglied: 8644
8644 Nov 21, 2006 at 14:04:10 (UTC)
Goto Top
ListItem ist der Index des Eintrages! Sprich immer von 0 (Null) bis zur Anzahl der Einträge minus 1!

Psycho
Member: Janek
Janek Nov 21, 2006 at 14:07:55 (UTC)
Goto Top
also so?

 ComboBox1.ListItem = 0
 ComboBox2.ListItem = 1
 ComboBox3.ListItem = 2
 ComboBox4.ListItem = 3
 ComboBox5.ListItem = 4
 ComboBox6.ListItem = 5
 ComboBox7.ListItem = 6

funktioniert nämlich auch nicht

janek
Mitglied: 8644
8644 Nov 21, 2006 at 14:09:33 (UTC)
Goto Top
Wie lautet denn der Fehler?
Member: Janek
Janek Nov 21, 2006 at 14:11:41 (UTC)
Goto Top
Compile error:
Method or data member not found
Mitglied: 8644
8644 Nov 21, 2006 at 14:12:50 (UTC)
Goto Top
Mein Fehler! Nicht ListItem sondern ListIndex!
Mitglied: 8644
8644 Nov 21, 2006 at 14:19:28 (UTC)
Goto Top
Meine Antwort steht schon drüber! ListIndex!
Member: Janek
Janek Nov 21, 2006 at 14:27:36 (UTC)
Goto Top
Ah super das funktioniert!

aber wenn ich jetzt in dem fenster eingebe, das pos1 nach "control"(E6) soll und pos2 nach Pos 1 (G6) usw dann kommt Pos 1 aber nach E6 und nicht nach G6 wo es hin soll...
Mitglied: 8644
8644 Nov 21, 2006 at 14:35:54 (UTC)
Goto Top
Ja,

weil durch die Änderungen die Zuordnungen in den Arrays (Zielzellen1 und Zielzellen2) wahrscheinlich nicht mehr stimmen. Also die Arrays haben Werte, die über einen Index angesprochen werden (0 bis soviel wie Werte minus 1)
Das Auslesen habe ich über den Index der jeweiligen ComboBox realisiert, der ja auch von 0 bis Anzahl der Einträge minus 1 geht.
Das musst du jetzt ensprechend anpassen, bzw. für die erste ComboBox ggf. noch weitere Arrays deklarieren.

Psycho

P.S. Jetzt brauch ich keinen Jack Daniels mehr, sondern Haarfärbemittel!
Member: Janek
Janek Nov 22, 2006 at 10:21:38 (UTC)
Goto Top
also es funktioniert!

ich will dich (könnt ja auch euch sagen aber psycho ist der einzige der antwortet... face-wink )ja nicht nerven aber weißt du/wisst ihr wie ich das mache das wenn in der userform in éiner textbox nicht drinn steht, weil die quell zelle leer ist, das die dann ausgeblendet wird beziehungsweise noch sichbar ist, aber nicht mehr zum anklicken ist.? müsste irgentwie mit invisibe oder so gehen aber ich weiß die genaueformle halt nicht

danke

janek
Mitglied: 8644
8644 Nov 22, 2006 at 10:26:43 (UTC)
Goto Top
Hallo Janek,

ich hab dich ja fast schon vermisst! face-wink

Also deine Frage betreffend:
If Range("Deine Zelle").Value = "" Then ComboBox1.Enabled = False Else ComboBox1.Enabled = True  

Psycho
Member: Janek
Janek Nov 22, 2006 at 11:04:23 (UTC)
Goto Top
ja ist schon ganz gut aber nicht genau so wie ich es haben will face-sad

ich habe jetzt ein bisschen dran rum probiert und mit diesem befehl ist das was ich machen will nicht unbeding möglich...

kann man es machen das das feld was man sperrt, grau hinterlegt wird? und es ist das problem das es ja jetzt ein vorschlag gibt in welche zelle was kommt und wenn jetzt die combobox1 bspw. pos 1 drinn stehen hatte, aber combobox1 gesperrt wurde kann ich auch kein anderes feld auf pos 1 setzten,

und geht das das man wenn man wenn man in der liste (in der combobox)eins ausgewählt hat das diese pos. dann aus den anderen listen weggeht, also das man sie nichtmehr anklicken kann?

das wär echt super! face-wink

janek
Mitglied: 8644
8644 Nov 22, 2006 at 11:21:02 (UTC)
Goto Top
kann man es machen das das feld was man sperrt, grau hinterlegt wird?

Wenn die ComboBox inaktiv ist, wird der Button rechts auch grau hinterlegt. Eine andere Möglichkeit kenne ich nicht!

und es ist das problem das es ja jetzt ein vorschlag gibt in welche zelle was kommt und
wenn jetzt die combobox1 bspw. pos 1 drinn stehen hatte, aber combobox1 gesperrt
wurde kann ich auch kein anderes feld auf pos 1 setzten,

Das liegt daran, dass die ComboBoxen ja erst ab der zweiten Position einen Eintrag erhalten haben! Das war die Zählschleife:
For i = 2 To 9 ...
...
Next i
Hier musst du jetzt einfach mit 1 anfangen!

und geht das das man wenn man wenn man in der liste (in der combobox)eins ausgewählt > hat das diese pos. dann aus den anderen listen weggeht, also das man sie nichtmehr
anklicken kann?

Das geht mit einem gewissen Aufwand schon! Ich würde es jetzt aber vorziehen, entweder eine Meldung an den User zu geben, wenn dieser Fall eintritt, bzw. den OK-Button solange zu sperren, bis die Einstellungen stimmen!
Denk mal drüber nach! Sonst muss ich meinen Wunsch nach dem Jackie doch wieder aufwärmen! face-wink

Psycho
Member: Janek
Janek Nov 22, 2006 at 11:57:27 (UTC)
Goto Top
ich hatte das auch schon voher verändert mit dem
For i = 2 To 9 ...
...
Next i

so sieht es zur zeit aus:
For i = 0 To 8
    If (i = 0) Then
        ComboBox1.AddItem ("Control")  
    Else
        ComboBox1.AddItem ("Test " & CStr(i))  
    End If
  Next i
  
    ComboBox2.List = ComboBox1.List
    ComboBox3.List = ComboBox1.List
    ComboBox4.List = ComboBox1.List
    ComboBox5.List = ComboBox1.List
    ComboBox6.List = ComboBox1.List
    ComboBox7.List = ComboBox1.List
    ComboBox8.List = ComboBox1.List

und die combobox die gesperrt wurde, wird trotzdem vergeben, das möchte ich halt vermeiden.

Das geht mit einem gewissen Aufwand schon! Ich würde es jetzt aber vorziehen, entweder eine Meldung an den User zu geben, wenn dieser Fall eintritt, bzw. den OK-Button solange zu sperren, bis die Einstellungen stimmen!

wie ich das mache ist eigentlich relativ egal, was ich will ist halt das keine position doppelt vergeben wird, und das die gesperrten felder nicht zugeorned werden.

janek

Ps. Ich würde dir auch mal nen jackie ausgeben, wird aber durchs internet ein bisschen schwierig... face-wink
Member: Janek
Janek Nov 22, 2006 at 12:00:36 (UTC)
Goto Top
Member: bastla
bastla Nov 22, 2006 at 12:02:16 (UTC)
Goto Top
Entschuldigung, wenn ich störe ...

Der sieht aber gar nicht aufgewärmt aus. face-wink

Grüße
bastla
Mitglied: 8644
8644 Nov 22, 2006 at 12:06:44 (UTC)
Goto Top
Danke für den Jackie!

Jetzt muss ich noch mal fragen: soll das "Control" in allen Boxen stehen oder nur in der ersten?

Psycho
Member: Janek
Janek Nov 22, 2006 at 12:07:20 (UTC)
Goto Top
@bastla
er will nicht den jack daniels aufwärmen sondern nur den wunsch danachface-wink
(in nem beitrag weiter oben face-wink )

janek
Member: Janek
Janek Nov 22, 2006 at 12:08:01 (UTC)
Goto Top
in allen habe ich so geändert...
Member: bastla
bastla Nov 22, 2006 at 12:11:50 (UTC)
Goto Top
@Janek
Wie konnte ich mich nur so irren ... face-wink

Grüße
bastla
Mitglied: 8644
8644 Nov 22, 2006 at 12:59:47 (UTC)
Goto Top
Tja, eine Lösung habe ich. Die ist allerdings nicht besonders elegant face-sad

Private Sub ComboBox2_Change()
 Dim ind As Integer
 ind = ComboBox2.ListIndex
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Das müsstest du halt für jede Box machen!

Psycho
Member: Janek
Janek Nov 22, 2006 at 13:04:58 (UTC)
Goto Top
also immer ein private sub für jede combobox öffnen und

ind = ComboBox1.ListIndex

die zahl immer ändern für die passende combobox oder muss ich bei

Else: CommandButton1.Enabled = True

die zahl auch anpassen?

frag lieber vorher face-wink

janek
Mitglied: 8644
8644 Nov 22, 2006 at 13:11:48 (UTC)
Goto Top
Für jede ComboBox eine Private Sub ComboBoxNummer_Change()
ind bekommt immer den Wert der aktuellen Box
In der If-Abfrage musst du immer eine Box ändern
Die Nummer des Button bleibt immer 1

Psycho
Member: Janek
Janek Nov 22, 2006 at 13:19:52 (UTC)
Goto Top
und welche?
ist das egal?
Mitglied: 8644
8644 Nov 22, 2006 at 13:25:15 (UTC)
Goto Top
Du musst immer die aktuelle Box mit allen anderen vergleichen!

Psycho
Member: Janek
Janek Nov 22, 2006 at 13:31:58 (UTC)
Goto Top
also so:?

(ind = ComboBox1.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex)
>für2

(ind = ComboBox1.ListIndex) Or (ind = ComboBox2.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex)
>für3
usw...
oder?
Mitglied: 8644
8644 Nov 22, 2006 at 13:39:34 (UTC)
Goto Top
Nö du! Also Komplett:
Private Sub ComboBox1_Change()
 Dim ind As Integer
 ind = ComboBox1.ListIndex
 If (ind = ComboBox2.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Private Sub ComboBox2_Change()
 Dim ind As Integer
 ind = ComboBox2.ListIndex
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Private Sub ComboBox3_Change()
 Dim ind As Integer
 ind = ComboBox3.ListIndex
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox2.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Private Sub ComboBox4_Change()
 Dim ind As Integer
 ind = ComboBox4.ListIndex
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox2.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Private Sub ComboBox5_Change()
 Dim ind As Integer
 ind = ComboBox5.ListIndex
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox2.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Private Sub ComboBox6_Change()
 Dim ind As Integer
 ind = ComboBox6.ListIndex
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox2ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox7.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Private Sub ComboBox7_Change()
 Dim ind As Integer
 ind = ComboBox7.ListIndex
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox2.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Then
  CommandButton1.Enabled = False
   Else: CommandButton1.Enabled = True
  End If
 End Sub

Psycho
Member: Janek
Janek Nov 22, 2006 at 13:44:00 (UTC)
Goto Top
jupp so hab ich das auch...

gut jetzt werden die zwar die nicht gebraucht werden zwar nicht gesperrt, aber da kümmer ich mich heut abend zuhause drumm oder morgen, wenn dir ne gut möglichkeit einfällt das nicht nur die combobox gesperrt wird, sondern die ganze zeile, wärstr du der beste!
bist du zwar sowieso, aber trotzdem face-wink

janek
Mitglied: 8644
8644 Nov 22, 2006 at 15:31:25 (UTC)
Goto Top
Da du die TextBoxen doch sowieso nicht ändern sollst, kannst du sie doch gleich auf inaktiv oder readonly setzen. Das bekommst du über die Eigenschaften der Elemente im VBA-Editor hin, ohne zu programmieren. Einfach auswählen "Enabled" suchen, auf False setzen und fertig!

Psycho
Member: Janek
Janek Nov 23, 2006 at 07:46:46 (UTC)
Goto Top
Morgen....

ich will halt auf einen Blick sehen, das wenn in den Feldern nichts drinn ist, sie anders aussehen (und das für die beden textboxen und die combobox in einer reihe...)

und das diese dann in dem vorschlag nicht vergeben werden...

(ich muss heute spätestens Morgen damit fertig werden danach hast du erstmal ruhe vor mir face-wink )

Also hoffe du weißt da was...

Janek

PS. ich glaube das ist so ziemlich der größte thread in diesem Forum hier oder?
Mitglied: 8644
8644 Nov 23, 2006 at 09:36:11 (UTC)
Goto Top
Hi!

Also was du vor hast, lässt sich auf vielen Wegen erreichen! Wenn die Zellen leer sind, bleiben auch die TextBoxen leer! Wenn du das nicht willst, schreibst du halt "leer" rein. Das kannst du ja dann auch noch formatieren. Irgend was in der Art:
If Range("Zelle").Value = "" Then   
 TextBox1.Text  = "Leer"  
 TextBox1.ForeColor = RGB(255,0,0)
Else
 TextBox1.Text  = Range("Zelle").Text  
 TextBox1.ForeColor = RGB(0,255,0)
End If

Dann musst du beim Schreiben natürlich auch aufpassen:
 If TextBox1.Text <> "Leer" Then  
 ...

Psycho
Member: Janek
Janek Nov 23, 2006 at 09:51:15 (UTC)
Goto Top
das würde das eine Problem lösen, aber das roblem das die combobox in dieser reihe vergeben wird habe ich doch auch noch...

bislang habe ich den befehl ja so:

For i = 0 To 8                                 
    If (i = 0) Then
        ComboBox1.AddItem ("Control")           
    Else
        ComboBox1.AddItem ("Test " & CStr(i))  
    End If
  Next i
  
    ComboBox2.List = ComboBox1.List
    ComboBox3.List = ComboBox1.List
    ComboBox4.List = ComboBox1.List
    ComboBox5.List = ComboBox1.List
    ComboBox6.List = ComboBox1.List
    ComboBox7.List = ComboBox1.List
    ComboBox8.List = ComboBox1.List             

    ComboBox1.ListIndex = 0                    
    ComboBox2.ListIndex = 1
    ComboBox3.ListIndex = 2
    ComboBox4.ListIndex = 3
    ComboBox5.ListIndex = 4
    ComboBox6.ListIndex = 5
    ComboBox7.ListIndex = 6
    ComboBox8.ListIndex = 7

und dieser befehl müsste nochmal mit einer schleife versehen werden die sagt,

wenn textbox2 = "" und textbox 12 "" dann combobox2 nicht "1" sondern enabled = false & text = ""

wie auch immer so ein befehl aussehen mag... das müsste doch gehen, oder?

janek
Mitglied: 8644
8644 Nov 23, 2006 at 09:55:07 (UTC)
Goto Top
Dann erweitere den Code wie folgt:
If Range("Zelle").Value = "" Then   
 TextBox1.Text  = "Leer"  
 TextBox1.ForeColor = RGB(255,0,0)
 ComboBox1.Enabled = False
Else
 TextBox1.Text  = Range("Zelle").Text  
 TextBox1.ForeColor = RGB(0,255,0)
 ComboBox1.Enabled = True
End If
Member: Janek
Janek Nov 23, 2006 at 10:06:11 (UTC)
Goto Top
ja schon ganz gut, aber aber da steht jetzt immer noch "Test 1" bzw "Pos 1" drinn... bekomm ich das auch weg?

weil sonnst weil ich eine andere pos. 1 belegt haben möchte, aber durch den befehl in den einzelnen comboboxen, ist es dann nicht mehr möglich pos 1 zu belegen, weil 1. ich pos 1 aus combobox 1 nicht mehr wegbekomme und 2. ich dann nicht auf "ok" drcken kann weil Pos. 1 2 mal belgt ist....
Mitglied: 8644
8644 Nov 23, 2006 at 10:08:31 (UTC)
Goto Top
Dann in den obigen Schnipsel noch
ComboBox1.ListIndex = -1
Member: Janek
Janek Nov 23, 2006 at 10:16:04 (UTC)
Goto Top
SUPER!

Wenn du mir jetzt noch sagen könntest, wie ich das machen kann das der listindex von den anderen pos. überall eins runter geht. dann wär ich echt glücklich!

also
jetzt ist es combobox 1 = 0
box2=1
box3=2

und wenn jetzt box 2 wegfällt das dann
box3=1
box4=2
usw bekommt...
Mitglied: 8644
8644 Nov 23, 2006 at 10:21:23 (UTC)
Goto Top
ComboBox2.ListIndex = ComboBox2.ListIndex - 1
...
Falls das nicht klappt, mit einer Variablen arbeiten:
Dim li As Integer
li = ComboBox2.ListIndex
li = li - 1
ComboBox2.ListIndex = li
...
Member: Janek
Janek Nov 23, 2006 at 10:26:10 (UTC)
Goto Top
und die variable auch in den oben stehen dialog einbinden (ober "schnipsel")?
Member: Janek
Janek Nov 23, 2006 at 10:36:18 (UTC)
Goto Top
hm dann wird aber bei beiden beispielen "control" eingefügt. und die anderen rutschen nicht auf...

also es ist nicht

box1=0
box2=1
box3=2
[...]
so ist es wenn es alles ausgefüllt ist....

so hätte ich es gerne:

box1=0
box2= ""
Box3=1
Box4=2
[...]
und so ist es auf jeden fall noch nicht face-sad

und so ist es :

box1=0
box2=0
Box3=2
box4=3
[...]

janek
Mitglied: 8644
8644 Nov 23, 2006 at 10:37:33 (UTC)
Goto Top
Einmal in den Schnipsel!

Jetzt mal 'ne blöde Frage: Hindert dich jemand daran auch mal was selber auszuprobieren?
Du glaubst gar nicht, wie sehr ich den grünen Hacken herbei sehne! Ich hätte nie für möglch gehalten, dass ich so eine Geduld aufbringen kann!
Und noch was, ich bin nicht scharf drauf, am längsten Thread im Forum beteiligt zu sein! face-wink

Psycho
Member: Janek
Janek Nov 23, 2006 at 10:39:24 (UTC)
Goto Top
hab ich ja gemacht...
Mitglied: 8644
8644 Nov 23, 2006 at 11:48:37 (UTC)
Goto Top
...und wie schauts jetzt?
Member: Janek
Janek Nov 24, 2006 at 08:25:38 (UTC)
Goto Top
SOOOOOOOOOOOOOOOOOOOOOOOOOOOO........
es ist ein ENDE in sicht face-big-smile face-big-smile face-big-smile face-big-smile face-big-smile


Also nochmal ein Herzliches Danke an alle die mir hier in den letzten 2 Wochen weitergeholfen haben (Psycho Dad... face-smile )
Ich denke mal es wird euch interressieren wie das fertige Formular aussieht:

Es sindnoch ein paar neue sachen hinzu gekommen. bzw. ich habe auch noch viel geändert was mir nict ganz gepasst hat face-wink

Public Wert(20) As Variant

Sub all()
'  
' All Makro  
' Makro am 14.11.2006 von j.fremerey aufgezeichnet  
'  
'  

MsgBox "Um einen reibungslosen Ablauf des Makros zu gewährleisten," + Chr(13) + "schließen sie Bitte den eventuell geöffneten Test Request" + Chr(13) + "und drücken sie anschließend auf OK.", vbOKOnly  



 
 UserForm1.Show

End Sub

________________________________________________________________________________________________


Public newname As String


Function indexCollision() As Variant
    Dim i As Integer
    Dim j As Integer
    Dim indexA As Integer
    Dim indexB As Integer

    For i = 1 To 7
        If (Me.Controls.Item("ComboBox" & i).Enabled = False) Then  
            GoTo continuecheck
        End If
        indexA = Me.Controls.Item("ComboBox" & i).listIndex  
        
        For j = i To 7
            If (Me.Controls.Item("ComboBox" & (j + 1)).Enabled = False) Then  
                GoTo continuecheck2
            End If
            indexB = Me.Controls.Item("ComboBox" & (j + 1)).listIndex  
            
            'MsgBox "ComboBox" & i & "=" & indexA & ", ComboBox=" & j + 1 & "=" & indexB  
            If (indexA = indexB) Then
                indexCollision = True
                GoTo exitFuntion
            End If
continuecheck2:
        Next j
        
continuecheck:
    Next i

    indexCollision = False

exitFuntion:
End Function

Private Sub fehlerAn()
    CommandButton1.Enabled = False
    fehlerLabel.Visible = True
End Sub

Private Sub fehlerAus()
    CommandButton1.Enabled = True
    fehlerLabel.Visible = False
End Sub

Private Sub ComboBox1_Change()
    If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If
    
    
' Dim ind As Integer                 'Wenn Ziele in ComboBox doppelt vergeben, "OK" Button Inaktiv.  
' ind = ComboBox1.listIndex  
' If (ind = ComboBox2.listIndex) Or (ind = ComboBox3.listIndex) Or (ind = ComboBox4.listIndex) Or (ind = ComboBox5.listIndex) Or (ind = ComboBox6.listIndex) Or (ind = ComboBox7.listIndex) Or (ind = ComboBox8.listIndex) Then  
'  CommandButton1.Enabled = False  
'  Label1.Visible = True  
'   Else: CommandButton1.Enabled = True  
'   Label1.Visible = False  
'  End If  
 
End Sub

Private Sub ComboBox2_Change()
    If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If
 
End Sub

Private Sub ComboBox3_Change()
     If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If
 
End Sub

Private Sub ComboBox4_Change()
    If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If

End Sub

Private Sub ComboBox5_Change()
     If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If

End Sub

Private Sub ComboBox6_Change()
    If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If
End Sub

Private Sub ComboBox7_Change()
    If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If
End Sub

Private Sub ComboBox8_Change()
    If (indexCollision) Then
        Call fehlerAn
    Else
        Call fehlerAus
    End If

End Sub

Private Sub CommandButton1_Click()  '"OK" Button  


    Wert(0) = Range("Q2").Value                 'Werte (O bis 14) Kopieren  
    Wert(1) = Range("Z2").Value  
    Wert(2) = Range("AC3").Value  
    Wert(3) = Range("C3").Value  
    Wert(4) = Range("H45").Value  
    Wert(5) = Range("R45").Value  
    Wert(6) = Range("C44").Value  
    Wert(7) = Range("J44").Value  
    Wert(8) = Range("F42").Value  
    Wert(9) = Range("K42").Value  
    Wert(10) = Range("O42").Value  
    Wert(11) = Range("Q44").Value  
    Wert(12) = Range("I42").Value  
    Wert(13) = Range("G42").Value  
    Wert(14) = Range("L42").Value  
    
Dim Zielzellen1 As Variant
    Zielzellen1 = Array("E6", "G6", "I6", "M6", "O6", "S6", "U6", "Y6", "AA6")          'Zielzellen merken  
Dim Zielzellen2 As Variant
    Zielzellen2 = Array("E8", "G8", "I8", "M8", "O8", "S8", "U8", "Y8", "AA8")  
Dim Zielzellen3 As Variant
    Zielzellen3 = Array("E7", "G7", "I7", "M7", "O7", "S7", "U7", "Y7", "AA7")  
  
Windows(newname).Activate

    Range("X2").Value = "TR-" & Wert(1) & "-" & Wert(0)                    'Werte (0 bis 14) einfügen  
    Range("E9").Value = Wert(2)  
    Range("AA5").Value = Wert(3)  
    Range("I11").Value = Wert(4) & "/" & Wert(5)  
    Range("U10").Value = Wert(6)  
    Range("Y10").Value = Wert(7)  
    Range("L10").Value = Wert(8)  
    Range("Q10").Value = Wert(9)  
    Range("R10").Value = Wert(10)  
    Range("AA10").Value = Wert(11)  
    Range("O10").Value = Wert(12)  
    Range("L11").Value = Wert(13)  
    Range("Q11").Value = Wert(14)  
    
Sheets("Input").Activate  


 
 Dim i As Integer
 For i = 1 To 8
    If (Me.Controls.Item("ComboBox" & i).Enabled) Then  
        'Zielzellen nach ComboBox-Verteilung einfügen  
        Range(Zielzellen1(Me.Controls.Item("ComboBox" & i).listIndex)).Value = Me.Controls.Item("TextBox" & i).Value  
        Range(Zielzellen2(Me.Controls.Item("ComboBox" & i).listIndex)).Value = Me.Controls.Item("TextBox1" & i).Value  
        Range(Zielzellen3(Me.Controls.Item("ComboBox" & i).listIndex)).Value = Me.Controls.Item("TextBox11" & i).Value  
    End If
 Next i
 
 exitForm

End Sub

Private Sub CommandButton2_Click()
 exitForm                     'Wenn auf "Abbrechen" gedrückt wird: Fenster Schließen!  
End Sub


Private Sub UserForm_Initialize():
    

Dim i As Integer
For i = 0 To 8                                  'Fügt in die ComboBox die Zielnamen ein.  
    If (i = 0) Then
        ComboBox1.AddItem ("Control")           'Von "Control"  
    Else
        ComboBox1.AddItem ("Test " & CStr(i))  
    End If
Next i
ComboBox1.listIndex = 0
  
Application.Dialogs(xlDialogSaveAs).Show        'Öffnet "Speichern Unter" Fenster.  
newname = Application.ActiveWorkbook.Name       'Öffnet das Fenster unter neuem Datei Namen  
Application.Dialogs(xlDialogOpen).Show          'Öffnet "Datei Öffnen" Fenster.  
  
TextBox1.Text = Range("N40").Text               'Linke Textbox Spalte. Für Tire Marking.  
TextBox2.Text = Range("N41").Text  
TextBox3.Text = Range("N32").Text  
TextBox4.Text = Range("N33").Text  
TextBox5.Text = Range("N34").Text  
TextBox6.Text = Range("N35").Text  
TextBox7.Text = Range("N36").Text  
TextBox8.Text = Range("N37").Text  
  
TextBox11.Text = Range("K40").Text              'Mitlere Textbox Spalte. Für Pattern  
TextBox12.Text = Range("K41").Text  
TextBox13.Text = Range("K32").Text  
TextBox14.Text = Range("K33").Text  
TextBox15.Text = Range("K34").Text  
TextBox16.Text = Range("K35").Text  
TextBox17.Text = Range("K36").Text  
TextBox18.Text = Range("K37").Text  

TextBox111.Text = Range("S40").Text             'Sind rechts außerhalb der Userform. Für Brand.  
TextBox112.Text = Range("S41").Text  
TextBox113.Text = Range("S32").Text  
TextBox114.Text = Range("S33").Text  
TextBox115.Text = Range("S34").Text  
TextBox116.Text = Range("S35").Text  
TextBox117.Text = Range("S36").Text  
TextBox118.Text = Range("S37").Text  

Dim textboxName1 As Variant
Dim textboxName2 As Variant
Dim comboboxName As String

Dim listIndex As Integer
listIndex = 1
For i = 1 To 8
    textboxName1 = "TextBox" & i  
    textboxName2 = "TextBox1" & i  
    comboboxName = "ComboBox" & i  

    If ((Len(Me.Controls.Item(textboxName1).Text)) < 1 And (Len(Me.Controls.Item(textboxName2).Text)) < 1) Then
        Me.Controls.Item(textboxName1).Enabled = False
        Me.Controls.Item(textboxName2).Enabled = False
        Me.Controls.Item(comboboxName).Enabled = False
        
        Me.Controls.Item(textboxName1).BackColor = Gray
        Me.Controls.Item(textboxName2).BackColor = Gray
        
        GoTo continue
    End If
    
    If (i = 1) Then
        GoTo continue
    End If
    
    Me.Controls.Item(comboboxName).list = ComboBox1.list
    Me.Controls.Item(comboboxName).listIndex = listIndex
    listIndex = listIndex + 1
continue:
Next i


Call fehlerAus
 UserForm1.Hide
End Sub

Sub exitForm()
    'MsgBox "abbruch!"  
     Unload UserForm1
End Sub

Also nochmal DANKE!


Gruß
Janek