Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Dialoge in Makro!

Mitglied: Janek

Janek (Level 1) - Jetzt verbinden

15.11.2006, aktualisiert 24.11.2006, 11370 Aufrufe, 109 Kommentare

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
109 Antworten
Mitglied: 8644
15.11.2006 um 12:25 Uhr
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
Bitte warten ..
Mitglied: Janek
15.11.2006 um 12:31 Uhr
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
Bitte warten ..
Mitglied: 8644
15.11.2006 um 12:44 Uhr
Hi,

mach dir doch den fertigen Dialog zu eigen:

01.
Application.Dialogs(xlDialogOpen).Show "D:\Daten"
Den Startpfad musst du natürlich noch anpassen.

Psycho
Bitte warten ..
Mitglied: Janek
15.11.2006 um 12:58 Uhr
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.
Bitte warten ..
Mitglied: 8644
15.11.2006 um 13:14 Uhr
...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

Psycho
Bitte warten ..
Mitglied: Janek
15.11.2006 um 13:19 Uhr
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
Bitte warten ..
Mitglied: 8644
15.11.2006 um 13:37 Uhr
Hi,

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

01.
Sub open_file()
02.
 Dim Wert, Wert1 As Variant
03.
  Application.Dialogs(xlDialogOpen).Show
04.
  Wert = Range("A1").Value
05.
  Wert1 = Range("Z2").Value
06.
  Windows("Mappe1").Activate
07.
  Range("F2").Value = Wert & "-" & Wert1
08.
End Sub
09.
Psycho
Bitte warten ..
Mitglied: Janek
15.11.2006 um 13:42 Uhr
könnte gehen, aber ich habe halt nicht nur das sondern es weren auf der ganzen seite insgesammt über 30 daten ausgetauscht
Bitte warten ..
Mitglied: 8644
15.11.2006 um 13:45 Uhr
...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
Bitte warten ..
Mitglied: Janek
15.11.2006 um 14:10 Uhr
upps... (kann gelöscht werden)
Bitte warten ..
Mitglied: Janek
15.11.2006 um 14:11 Uhr
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
Bitte warten ..
Mitglied: 8644
15.11.2006 um 14:16 Uhr
Hi,

jep:

01.
Sub open_file()
02.
Dim Wert, Wert1 As Variant
03.
Dim newname As String
04.
Application.Dialogs(xlDialogSaveAs).Show
05.
newname = Application.ActiveWorkbook.Name
06.
Application.Dialogs(xlDialogOpen).Show
07.
Wert = Range("A1").Value
08.
Wert1 = Range("Z2").Value
09.
Windows(newname).Activate
10.
Range("F2").Value = Wert & "-" & Wert1
11.
End Sub
Psycho

[Edit: Das ist die Antwort auf die folgende Frage ]
Bitte warten ..
Mitglied: Janek
15.11.2006 um 14:23 Uhr
ok danke das wars erstmal hast mir sehr geholfen!
Bitte warten ..
Mitglied: 8644
15.11.2006 um 14:50 Uhr
...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"

Psycho
Bitte warten ..
Mitglied: Janek
16.11.2006 um 10:17 Uhr
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
Bitte warten ..
Mitglied: 8644
16.11.2006 um 11:37 Uhr
Hallo Janek

hier mal ein Ansatz:

01.
Sub test()
02.
 Dim Zelle As String
03.
 Dim Zeile As Integer
04.
 Dim i As Integer
05.
 Dim Werte(20) As Variant
06.
 If Range("G5").Value = "" Then Zeile = 5 Else Zeile = 6
07.
  For i = 0 To 20
08.
   Zelle = "G" & CStr(i + Zeile)
09.
   Werte(i) = Range(Zelle).Value
10.
  Next i
11.
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
Bitte warten ..
Mitglied: bastla
16.11.2006 um 12:00 Uhr
@psycho

Gibt es einen speziellen Grund, dass Du die "Range"-Schreibweise bevorzugst? Speziell bei Zählschleifen nehme ich lieber "Cells", also etwa
01.
For i = 0 To 20
02.
    Werte(i) = Cells(i + Zeile, 7).Value
03.
Next
Grüße
bastla
Bitte warten ..
Mitglied: Janek
16.11.2006 um 12:01 Uhr
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
Bitte warten ..
Mitglied: 8644
16.11.2006 um 12:04 Uhr
@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
Bitte warten ..
Mitglied: 8644
16.11.2006 um 12:08 Uhr
@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
Bitte warten ..
Mitglied: Janek
16.11.2006 um 12:39 Uhr
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
Bitte warten ..
Mitglied: 8644
16.11.2006 um 12:43 Uhr
...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
Bitte warten ..
Mitglied: Janek
16.11.2006 um 12:54 Uhr
es müssten eigentlich 24 werte sein die rübergholt werden müssen
(ist aktualiesiert)

janek
Bitte warten ..
Mitglied: 8644
16.11.2006 um 13:56 Uhr
Hi Janek,

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

01.
Sub open_file()
02.
Dim Werte(20) As Variant                    'Datenfeld für die Werte
03.
Dim Quell_Zellen As Variant
04.

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

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

32.
Windows(newname).Activate                   'Die Mustermappe aktivieren
33.
     
34.
     '### Jetzt befinden wir uns in der Mustermappe ###
35.
 
36.
 For i = 0 To 11
37.
  Range(Zielzellen(i)).Value = Werte(i)      'Die Werte schreiben
38.
 Next i
39.
End Sub
Psycho
Bitte warten ..
Mitglied: Janek
16.11.2006 um 14:03 Uhr
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...
Bitte warten ..
Mitglied: Janek
17.11.2006 um 08:38 Uhr
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
Bitte warten ..
Mitglied: 8644
17.11.2006 um 10:04 Uhr
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
Bitte warten ..
Mitglied: Janek
17.11.2006 um 10:21 Uhr
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
Bitte warten ..
Mitglied: 8644
17.11.2006 um 10:38 Uhr
Ok,

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

Psycho

P.S. Ich trinke Jack Daniels!
Bitte warten ..
Mitglied: Janek
17.11.2006 um 10:46 Uhr
schade naja dann hoff ich das d mir het abend weiterhelfen kannst...

probier einfach ein bisschen rum..
Bitte warten ..
Mitglied: 8644
17.11.2006 um 11:25 Uhr
Ich noch mal

Was hältst du denn von folgendem Ansatz:

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

Psycho
Bitte warten ..
Mitglied: Janek
17.11.2006 um 11:34 Uhr
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
Bitte warten ..
Mitglied: 8644
17.11.2006 um 11:37 Uhr
...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
Bitte warten ..
Mitglied: Janek
17.11.2006 um 11:42 Uhr
hab meinen letzten beitrag noch editiert:
Bitte warten ..
Mitglied: Janek
17.11.2006 um 12:44 Uhr
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
Bitte warten ..
Mitglied: 8644
20.11.2006 um 08:06 Uhr
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
Bitte warten ..
Mitglied: Janek
20.11.2006 um 09:42 Uhr
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
Bitte warten ..
Mitglied: 8644
20.11.2006 um 10:01 Uhr
ist es gewollt, dass beim Ziel Position 4 und 5 jeweils identisch sind?

Psycho
Bitte warten ..
Mitglied: Janek
20.11.2006 um 10:03 Uhr
eh nein ist korriegiert...
Bitte warten ..
Mitglied: 8644
20.11.2006 um 11:12 Uhr
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:
01.
Public newname As String
Dann schaffst du die Procedure UserForm_Initialize():
01.
Private Sub UserForm_Initialize()
02.
 Dim i As Integer
03.
 
04.
  For i = 2 To 9
05.
   ComboBox1.AddItem ("Pos " & CStr(i))
06.
  Next i
07.
  ComboBox2.List = ComboBox1.List
08.
  ComboBox3.List = ComboBox1.List
09.
  ComboBox4.List = ComboBox1.List
10.
  ComboBox5.List = ComboBox1.List
11.
  ComboBox6.List = ComboBox1.List
12.
  ComboBox7.List = ComboBox1.List
13.

14.
Application.Dialogs(xlDialogSaveAs).Show
15.
newname = Application.ActiveWorkbook.Name
16.
Application.Dialogs(xlDialogOpen).Show
17.
  
18.
TextBox1.Text = Range("N40").Text
19.
TextBox2.Text = Range("N41").Text
20.
TextBox3.Text = Range("N32").Text
21.
TextBox4.Text = Range("N34").Text
22.
TextBox5.Text = Range("N35").Text
23.
TextBox6.Text = Range("N36").Text
24.
TextBox7.Text = Range("N37").Text
25.
  
26.
TextBox11.Text = Range("K40").Text
27.
TextBox12.Text = Range("K41").Text
28.
TextBox13.Text = Range("K32").Text
29.
TextBox14.Text = Range("K34").Text
30.
TextBox15.Text = Range("K35").Text
31.
TextBox16.Text = Range("K36").Text
32.
TextBox17.Text = Range("K37").Text
33.
UserForm1.Hide
34.
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:
01.
Private Sub CommandButton1_Click()
02.
 Dim Zielzellen1 As Variant
03.
  Zielzellen1 = Array("E6", "I6", "M6", "O6", "S6", "U6", "Y6", "AA6")
04.
  Dim Zielzellen2 As Variant
05.
  Zielzellen2 = Array("E8", "I8", "M8", "O8", "S8", "U8", "Y8", "AA8")
06.
Windows(newname).Activate
07.
Sheets("Input").Activate
08.
If ComboBox1.ListIndex >= 0 Then
09.
 Range(Zielzellen1(ComboBox1.ListIndex)).Value = TextBox1.Value
10.
 Range(Zielzellen2(ComboBox1.ListIndex)).Value = TextBox11.Value
11.
End If
12.
 Range(Zielzellen1(ComboBox2.ListIndex)).Value = TextBox2.Value
13.
 Range(Zielzellen2(ComboBox2.ListIndex)).Value = TextBox12.Value
14.
 Range(Zielzellen1(ComboBox3.ListIndex)).Value = TextBox3.Value
15.
 Range(Zielzellen2(ComboBox3.ListIndex)).Value = TextBox13.Value
16.
 Range(Zielzellen1(ComboBox4.ListIndex)).Value = TextBox4.Value
17.
 Range(Zielzellen2(ComboBox4.ListIndex)).Value = TextBox14.Value
18.
 Range(Zielzellen1(ComboBox5.ListIndex)).Value = TextBox5.Value
19.
 Range(Zielzellen2(ComboBox5.ListIndex)).Value = TextBox15.Value
20.
 Range(Zielzellen1(ComboBox6.ListIndex)).Value = TextBox6.Value
21.
 Range(Zielzellen2(ComboBox6.ListIndex)).Value = TextBox16.Value
22.
 Range(Zielzellen1(ComboBox7.ListIndex)).Value = TextBox7.Value
23.
 Range(Zielzellen2(ComboBox7.ListIndex)).Value = TextBox17.Value
24.
 UserForm1.Hide
25.
End Sub
Ein Doppelklick auf den Abbrechen-Button erstellt diese Procedure:
01.
Private Sub CommandButton2_Click()
02.
 UserForm1.Hide
03.
End Sub
Dein eigentliches (ursprüngliches) Makro beschränkt sich jetzt auf folgende Zeile:
01.
 UserForm1.Show
hth

Psycho
Bitte warten ..
Mitglied: Janek
20.11.2006 um 11:34 Uhr
1. Frage:

in der userform gibt es in spalte terxtfeld, dann noch ne spalte, und dann die combobox, wie soll ich die mitlere nenen?
Bitte warten ..
Mitglied: 8644
20.11.2006 um 11:38 Uhr
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
Bitte warten ..
Mitglied: Janek
20.11.2006 um 12:32 Uhr
Im VBA-Editor wählst du das Formular
(UserForm1) aus und deklarierst eine globale
Variable für den neuen Dateinamen:
01.
> Public newname As String
02.
> 


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
Bitte warten ..
Mitglied: 8644
20.11.2006 um 12:40 Uhr
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
Bitte warten ..
Mitglied: Janek
20.11.2006 um 12:52 Uhr
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
01.
Dim Werte(20) As Variant                    'Datenfeld für die Werte
02.
Dim Quell_Zellen As Variant
03.

04.
Quell_Zellen = Array
05.
("N32", "K32", "N33", "K33", "N34", "K34", "N35", "K35", "N36", "K36", "N37", "K37")
06.
                                            'Das sind die Zellen, aus denen wir die Werte holen!
07.
Dim Zielzellen As Variant
08.
Zielzellen = Array
09.
("X15", "X17", "AE15", "AE17", "J62", "J64", "Q62", "Q64", "X62", "X64", "AE62", "AE64")
10.
                                            '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...
Bitte warten ..
Mitglied: 8644
20.11.2006 um 13:00 Uhr
Das brauchst du alles nicht mehr!
Das was ich dir oben gepostet habe, ist der komplette Ablauf!

Psycho
Bitte warten ..
Mitglied: Janek
20.11.2006 um 13:10 Uhr
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
Bitte warten ..
Mitglied: 8644
20.11.2006 um 13:49 Uhr
01.
Wert = Range("TReQNo").Value 
02.
Wert1 = Range("Z2").Value
03.
Wert2 = Range("AC3").Value
04.
Wert3 = Range("C3").Value
05.
Wert4 = Range("H45").Value
06.
Wert5 = Range("R45").Value
07.
Wert6 = Range("C44").Value
08.
Wert7 = Range("J44").Value
09.
Wert8 = Range("N40").Value
10.
Wert9 = Range("K40").Value
Ich dachte, das wäre hinfällig!

Die Indexüberschreitung ist mir auch noch ein Rätsel -> bei mir läuft's!
Bitte warten ..
Mitglied: Janek
20.11.2006 um 13:59 Uhr
also das index problem habe ich gelöst. das war weil eine zelle nicht beschriftet war.

01.
Wert = Range("TReQNo").Value 
02.
Wert1 = Range("Z2").Value
03.
Wert2 = Range("AC3").Value
04.
Wert3 = Range("C3").Value
05.
Wert4 = Range("H45").Value
06.
Wert5 = Range("R45").Value
07.
Wert6 = Range("C44").Value
08.
Wert7 = Range("J44").Value
09.
Wert8 = Range("N40").Value
10.
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
Bitte warten ..
Mitglied: 8644
20.11.2006 um 15:24 Uhr
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:

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

P.S. Sorry, dass ich ein bisschen den Überblick verloren habe!
Bitte warten ..
Mitglied: Janek
20.11.2006 um 15:33 Uhr
ich hatte heut morgen oben noch ein tipp fehler den ich kurz nachdem du dir die daten geholt hast geändert habe...

soll ich

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

einfügen?

janek
Bitte warten ..
Mitglied: 8644
20.11.2006 um 15:36 Uhr
Ganz oben, wo schon die andere Public-Deklaration steht!

Psycho
Bitte warten ..
Mitglied: Janek
20.11.2006 um 15:43 Uhr
da sagt er mir:
01.
Fehler beim Komplimieren:
02.
Konstanten, Zeichenfolgen fester Länge, benutzerdefinierte Datenfelder und Declare-Anweisungen sind als Public Element von Objektmodulen nicht zugelassen.
janek
Bitte warten ..
Mitglied: Janek
20.11.2006 um 15:48 Uhr
ich hab das jetzt so fals es dir weiterhilft:

01.
Public newname As String
02.
Public Werte(10) As Variant
03.

04.

05.
Private Sub CommandButton1_Click()
06.
Dim Zielzellen1 As Variant
07.
  Zielzellen1 = Array("G6", "I6", "M6", "O6", "S6", "U6", "Y6", "AA6")
08.
  Dim Zielzellen2 As Variant
09.
  Zielzellen2 = Array("G8", "I8", "M8", "O8", "S8", "U8", "Y8", "AA8")
10.
Windows(newname).Activate
11.
Sheets("Input").Activate
12.
If ComboBox1.ListIndex >= 0 Then
13.
 Range(Zielzellen1(ComboBox1.ListIndex)).Value = TextBox1.Value
14.
 Range(Zielzellen2(ComboBox1.ListIndex)).Value = TextBox11.Value
15.
End If
16.
 Range(Zielzellen1(ComboBox2.ListIndex)).Value = TextBox2.Value
17.
 Range(Zielzellen2(ComboBox2.ListIndex)).Value = TextBox12.Value
18.
 Range(Zielzellen1(ComboBox3.ListIndex)).Value = TextBox3.Value
19.
 Range(Zielzellen2(ComboBox3.ListIndex)).Value = TextBox13.Value
20.
 Range(Zielzellen1(ComboBox4.ListIndex)).Value = TextBox4.Value
21.
 Range(Zielzellen2(ComboBox4.ListIndex)).Value = TextBox14.Value
22.
 Range(Zielzellen1(ComboBox5.ListIndex)).Value = TextBox5.Value
23.
 Range(Zielzellen2(ComboBox5.ListIndex)).Value = TextBox15.Value
24.
 Range(Zielzellen1(ComboBox6.ListIndex)).Value = TextBox6.Value
25.
 Range(Zielzellen2(ComboBox6.ListIndex)).Value = TextBox16.Value
26.
 Range(Zielzellen1(ComboBox7.ListIndex)).Value = TextBox7.Value
27.
 Range(Zielzellen2(ComboBox7.ListIndex)).Value = TextBox17.Value
28.
 
29.
  Range("TreQ").Value = "TR-" & Wert(1) & "-" & Wert(0)
30.
    Range("E9").Value = Wert(2)
31.
    Range("AA5").Value = Wert(3)
32.
    Range("I11").Value = Wert(4) & "/" & Wert(5)
33.
    Range("U10").Value = Wert(6)
34.
    Range("AA10").Value = Wert(7)
35.
    Range("J15").Value = Wert(8)
36.
    Range("J17").Value = Wert(9)
37.
 
38.
 UserForm1.Hide
39.

40.
End Sub
41.

42.
Private Sub CommandButton2_Click()
43.
 UserForm1.Hide
44.

45.
End Sub
46.

47.

48.
Private Sub UserForm_Initialize():
49.

50.
 Dim i As Integer
51.
 
52.
  For i = 2 To 9
53.
   ComboBox1.AddItem ("Pos " & CStr(i))
54.
  Next i
55.
  ComboBox2.List = ComboBox1.List
56.
  ComboBox3.List = ComboBox1.List
57.
  ComboBox4.List = ComboBox1.List
58.
  ComboBox5.List = ComboBox1.List
59.
  ComboBox6.List = ComboBox1.List
60.
  ComboBox7.List = ComboBox1.List
61.

62.
Application.Dialogs(xlDialogSaveAs).Show
63.
newname = Application.ActiveWorkbook.Name
64.
Application.Dialogs(xlDialogOpen).Show
65.
  
66.
TextBox1.Text = Range("N41").Text
67.
TextBox2.Text = Range("N32").Text
68.
TextBox3.Text = Range("N33").Text
69.
TextBox4.Text = Range("N34").Text
70.
TextBox5.Text = Range("N35").Text
71.
TextBox6.Text = Range("N36").Text
72.
TextBox7.Text = Range("N37").Text
73.
  
74.
TextBox11.Text = Range("K41").Text
75.
TextBox12.Text = Range("K32").Text
76.
TextBox13.Text = Range("K33").Text
77.
TextBox14.Text = Range("K34").Text
78.
TextBox15.Text = Range("K35").Text
79.
TextBox16.Text = Range("K36").Text
80.
TextBox17.Text = Range("K37").Text
81.
UserForm1.Hide
82.

83.
Wert(0) = Range("TReQNo").Value
84.
Wert(1) = Range("Z2").Value
85.
Wert(2) = Range("AC3").Value
86.
Wert(3) = Range("C3").Value
87.
Wert(4) = Range("H45").Value
88.
Wert(5) = Range("R45").Value
89.
Wert(6) = Range("C44").Value
90.
Wert(7) = Range("J44").Value
91.
Wert(8) = Range("N40").Value
92.
Wert(9) = Range("K40").Value
93.

94.
End Sub
janek
Bitte warten ..
Mitglied: 8644
20.11.2006 um 15:52 Uhr
Sorry mein Fehler!

Über deinem "normalen" Makro natürlich!

Psycho
Bitte warten ..
Mitglied: Janek
20.11.2006 um 15:54 Uhr
beide publics oder nur das 2.?

janek
Bitte warten ..
Mitglied: 8644
20.11.2006 um 15:58 Uhr
Nimms mir nicht übel, aber langsam glaube ich , dass du mich ver###rn 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
Bitte warten ..
Mitglied: Janek
20.11.2006 um 16:08 Uhr
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:

01.
Fehler beim Kompilieren:
02.
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
Bitte warten ..
Mitglied: 8644
20.11.2006 um 16:29 Uhr
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
Bitte warten ..
Mitglied: Janek
20.11.2006 um 16:52 Uhr
also da du ne positive nachricht hören willst

Das Makro funktioniert!

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

janek
Bitte warten ..
Mitglied: Janek
21.11.2006 um 13:05 Uhr
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
Bitte warten ..
Mitglied: 8644
21.11.2006 um 13:38 Uhr
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()

01.
 ComboBox1.ListItem = 0
02.
 ComboBox2.ListItem = 1
03.
 ...
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!

Psycho

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

Eigentlich bin ich doch immer nett!
Bitte warten ..
Mitglied: Janek
21.11.2006 um 13:59 Uhr
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!


bislang ist es doch so:

01.
  For i = 2 To 9
02.
   ComboBox1.AddItem ("Pos " & CStr(i))
03.
  Next i
04.
  ComboBox2.List = ComboBox1.List
05.
  ComboBox3.List = ComboBox1.List
06.
  ComboBox4.List = ComboBox1.List
07.
  ComboBox5.List = ComboBox1.List
08.
  ComboBox6.List = ComboBox1.List
09.
  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
Bitte warten ..
Mitglied: 8644
21.11.2006 um 14:06 Uhr
Naja, dann musst du die ComboBox1 einzeln behandeln:

01.
ComboBox1.AddItem("Control")
und dann die Schleife auf ComboBox2 umbiegen:

01.
For i = 2 To 9
02.
   ComboBox2.AddItem ("Pos " & CStr(i))
03.
Next i
und die Zuweisungen dann auf die Restlichen münzen, wobei die Liste jetzt von ComboBox2 kommt:
01.
  ComboBox3.List = ComboBox2.List
02.
  ComboBox4.List = ComboBox2.List
03.
  ComboBox5.List = ComboBox2.List
04.
  ComboBox6.List = ComboBox2.List
05.
  ComboBox7.List = ComboBox2.List
Psycho
Bitte warten ..
Mitglied: Janek
21.11.2006 um 14:43 Uhr
also ich habe das jetzt so gemacht:

01.
  ComboBox1.AddItem = ("Control")
02.
  
03.
  For i = 2 To 9
04.
   ComboBox2.AddItem ("Pos " & CStr(i))
05.
  Next i
06.
  ComboBox3.List = ComboBox2.List
07.
  ComboBox4.List = ComboBox2.List
08.
  ComboBox5.List = ComboBox2.List
09.
  ComboBox6.List = ComboBox2.List
10.
  ComboBox7.List = ComboBox2.List
11.
  
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
Bitte warten ..
Mitglied: 8644
21.11.2006 um 14:45 Uhr
OHNE Gleichheitszeichen!

Psycho
Bitte warten ..
Mitglied: Janek
21.11.2006 um 14:56 Uhr
nächster fehler

01.
 ComboBox1.ListItem = Control
02.
 ComboBox2.ListItem = 2
03.
 ComboBox3.ListItem = 3
04.
 ComboBox4.ListItem = 4
05.
 ComboBox5.ListItem = 5
06.
 ComboBox6.ListItem = 6
07.
 ComboBox7.ListItem = 7
08.
 
oder muss ich da Pos 2 etc reinschreiben?

janek
Bitte warten ..
Mitglied: 8644
21.11.2006 um 15:04 Uhr
ListItem ist der Index des Eintrages! Sprich immer von 0 (Null) bis zur Anzahl der Einträge minus 1!

Psycho
Bitte warten ..
Mitglied: Janek
21.11.2006 um 15:07 Uhr
also so?

01.
 ComboBox1.ListItem = 0
02.
 ComboBox2.ListItem = 1
03.
 ComboBox3.ListItem = 2
04.
 ComboBox4.ListItem = 3
05.
 ComboBox5.ListItem = 4
06.
 ComboBox6.ListItem = 5
07.
 ComboBox7.ListItem = 6
funktioniert nämlich auch nicht

janek
Bitte warten ..
Mitglied: 8644
21.11.2006 um 15:09 Uhr
Wie lautet denn der Fehler?
Bitte warten ..
Mitglied: Janek
21.11.2006 um 15:11 Uhr
01.
Compile error:
02.
Method or data member not found
Bitte warten ..
Mitglied: 8644
21.11.2006 um 15:12 Uhr
Mein Fehler! Nicht ListItem sondern ListIndex!
Bitte warten ..
Mitglied: 8644
21.11.2006 um 15:19 Uhr
Meine Antwort steht schon drüber! ListIndex!
Bitte warten ..
Mitglied: Janek
21.11.2006 um 15:27 Uhr
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...
Bitte warten ..
Mitglied: 8644
21.11.2006 um 15:35 Uhr
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!
Bitte warten ..
Mitglied: Janek
22.11.2006 um 11:21 Uhr
also es funktioniert!

ich will dich (könnt ja auch euch sagen aber psycho ist der einzige der antwortet... )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
Bitte warten ..
Mitglied: 8644
22.11.2006 um 11:26 Uhr
Hallo Janek,

ich hab dich ja fast schon vermisst!

Also deine Frage betreffend:
01.
If Range("Deine Zelle").Value = "" Then ComboBox1.Enabled = False Else ComboBox1.Enabled = True
Psycho
Bitte warten ..
Mitglied: Janek
22.11.2006 um 12:04 Uhr
ja ist schon ganz gut aber nicht genau so wie ich es haben will

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!

janek
Bitte warten ..
Mitglied: 8644
22.11.2006 um 12:21 Uhr
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:
01.
For i = 2 To 9 ...
02.
...
03.
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!

Psycho
Bitte warten ..
Mitglied: Janek
22.11.2006 um 12:57 Uhr
ich hatte das auch schon voher verändert mit dem
For i = 2 To 9 ...
...
Next i

so sieht es zur zeit aus:
01.
For i = 0 To 8
02.
    If (i = 0) Then
03.
        ComboBox1.AddItem ("Control")
04.
    Else
05.
        ComboBox1.AddItem ("Test " & CStr(i))
06.
    End If
07.
  Next i
08.
  
09.
    ComboBox2.List = ComboBox1.List
10.
    ComboBox3.List = ComboBox1.List
11.
    ComboBox4.List = ComboBox1.List
12.
    ComboBox5.List = ComboBox1.List
13.
    ComboBox6.List = ComboBox1.List
14.
    ComboBox7.List = ComboBox1.List
15.
    ComboBox8.List = ComboBox1.List
und die combobox die gesperrt wurde, wird trotzdem vergeben, das möchte ich halt vermeiden.

01.
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...
Bitte warten ..
Mitglied: bastla
22.11.2006 um 13:02 Uhr
Entschuldigung, wenn ich störe ...

Der sieht aber gar nicht aufgewärmt aus.

Grüße
bastla
Bitte warten ..
Mitglied: 8644
22.11.2006 um 13:06 Uhr
Danke für den Jackie!

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

Psycho
Bitte warten ..
Mitglied: Janek
22.11.2006 um 13:07 Uhr
@bastla
er will nicht den jack daniels aufwärmen sondern nur den wunsch danach
(in nem beitrag weiter oben )

janek
Bitte warten ..
Mitglied: Janek
22.11.2006 um 13:08 Uhr
in allen habe ich so geändert...
Bitte warten ..
Mitglied: bastla
22.11.2006 um 13:11 Uhr
@Janek
Wie konnte ich mich nur so irren ...

Grüße
bastla
Bitte warten ..
Mitglied: 8644
22.11.2006 um 13:59 Uhr
Tja, eine Lösung habe ich. Die ist allerdings nicht besonders elegant

01.
Private Sub ComboBox2_Change()
02.
 Dim ind As Integer
03.
 ind = ComboBox2.ListIndex
04.
 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
05.
  CommandButton1.Enabled = False
06.
   Else: CommandButton1.Enabled = True
07.
  End If
08.
 End Sub
Das müsstest du halt für jede Box machen!

Psycho
Bitte warten ..
Mitglied: Janek
22.11.2006 um 14:04 Uhr
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

janek
Bitte warten ..
Mitglied: 8644
22.11.2006 um 14:11 Uhr
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
Bitte warten ..
Mitglied: Janek
22.11.2006 um 14:19 Uhr
und welche?
ist das egal?
Bitte warten ..
Mitglied: 8644
22.11.2006 um 14:25 Uhr
Du musst immer die aktuelle Box mit allen anderen vergleichen!

Psycho
Bitte warten ..
Mitglied: Janek
22.11.2006 um 14:31 Uhr
also so:?

01.
(ind = ComboBox1.ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex)
02.
>für2
01.
(ind = ComboBox1.ListIndex) Or (ind = ComboBox2.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox6.ListIndex) Or (ind = ComboBox7.ListIndex)
02.
>für3
usw...
oder?
Bitte warten ..
Mitglied: 8644
22.11.2006 um 14:39 Uhr
Nö du! Also Komplett:
01.
Private Sub ComboBox1_Change()
02.
 Dim ind As Integer
03.
 ind = ComboBox1.ListIndex
04.
 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
05.
  CommandButton1.Enabled = False
06.
   Else: CommandButton1.Enabled = True
07.
  End If
08.
 End Sub
09.

10.
Private Sub ComboBox2_Change()
11.
 Dim ind As Integer
12.
 ind = ComboBox2.ListIndex
13.
 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
14.
  CommandButton1.Enabled = False
15.
   Else: CommandButton1.Enabled = True
16.
  End If
17.
 End Sub
18.

19.
Private Sub ComboBox3_Change()
20.
 Dim ind As Integer
21.
 ind = ComboBox3.ListIndex
22.
 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
23.
  CommandButton1.Enabled = False
24.
   Else: CommandButton1.Enabled = True
25.
  End If
26.
 End Sub
27.

28.
Private Sub ComboBox4_Change()
29.
 Dim ind As Integer
30.
 ind = ComboBox4.ListIndex
31.
 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
32.
  CommandButton1.Enabled = False
33.
   Else: CommandButton1.Enabled = True
34.
  End If
35.
 End Sub
36.

37.
Private Sub ComboBox5_Change()
38.
 Dim ind As Integer
39.
 ind = ComboBox5.ListIndex
40.
 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
41.
  CommandButton1.Enabled = False
42.
   Else: CommandButton1.Enabled = True
43.
  End If
44.
 End Sub
45.

46.
Private Sub ComboBox6_Change()
47.
 Dim ind As Integer
48.
 ind = ComboBox6.ListIndex
49.
 If (ind = ComboBox1.ListIndex) Or (ind = ComboBox2ListIndex) Or (ind = ComboBox3.ListIndex) Or (ind = ComboBox4.ListIndex) Or (ind = ComboBox5.ListIndex) Or (ind = ComboBox7.ListIndex) Then
50.
  CommandButton1.Enabled = False
51.
   Else: CommandButton1.Enabled = True
52.
  End If
53.
 End Sub
54.

55.
Private Sub ComboBox7_Change()
56.
 Dim ind As Integer
57.
 ind = ComboBox7.ListIndex
58.
 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
59.
  CommandButton1.Enabled = False
60.
   Else: CommandButton1.Enabled = True
61.
  End If
62.
 End Sub
Psycho
Bitte warten ..
Mitglied: Janek
22.11.2006 um 14:44 Uhr
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

janek
Bitte warten ..
Mitglied: 8644
22.11.2006 um 16:31 Uhr
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
Bitte warten ..
Mitglied: Janek
23.11.2006 um 08:46 Uhr
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 )

Also hoffe du weißt da was...

Janek

PS. ich glaube das ist so ziemlich der größte thread in diesem Forum hier oder?
Bitte warten ..
Mitglied: 8644
23.11.2006 um 10:36 Uhr
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:
01.
If Range("Zelle").Value = "" Then 
02.
 TextBox1.Text  = "Leer"
03.
 TextBox1.ForeColor = RGB(255,0,0)
04.
Else
05.
 TextBox1.Text  = Range("Zelle").Text
06.
 TextBox1.ForeColor = RGB(0,255,0)
07.
End If
Dann musst du beim Schreiben natürlich auch aufpassen:
01.
 If TextBox1.Text <> "Leer" Then
02.
 ...
Psycho
Bitte warten ..
Mitglied: Janek
23.11.2006 um 10:51 Uhr
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:

01.
For i = 0 To 8                                 
02.
    If (i = 0) Then
03.
        ComboBox1.AddItem ("Control")         
04.
    Else
05.
        ComboBox1.AddItem ("Test " & CStr(i))
06.
    End If
07.
  Next i
08.
  
09.
    ComboBox2.List = ComboBox1.List
10.
    ComboBox3.List = ComboBox1.List
11.
    ComboBox4.List = ComboBox1.List
12.
    ComboBox5.List = ComboBox1.List
13.
    ComboBox6.List = ComboBox1.List
14.
    ComboBox7.List = ComboBox1.List
15.
    ComboBox8.List = ComboBox1.List             
16.

17.
    ComboBox1.ListIndex = 0                    
18.
    ComboBox2.ListIndex = 1
19.
    ComboBox3.ListIndex = 2
20.
    ComboBox4.ListIndex = 3
21.
    ComboBox5.ListIndex = 4
22.
    ComboBox6.ListIndex = 5
23.
    ComboBox7.ListIndex = 6
24.
    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
Bitte warten ..
Mitglied: 8644
23.11.2006 um 10:55 Uhr
Dann erweitere den Code wie folgt:
01.
If Range("Zelle").Value = "" Then 
02.
 TextBox1.Text  = "Leer"
03.
 TextBox1.ForeColor = RGB(255,0,0)
04.
 ComboBox1.Enabled = False
05.
Else
06.
 TextBox1.Text  = Range("Zelle").Text
07.
 TextBox1.ForeColor = RGB(0,255,0)
08.
 ComboBox1.Enabled = True
09.
End If
Bitte warten ..
Mitglied: Janek
23.11.2006 um 11:06 Uhr
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....
Bitte warten ..
Mitglied: 8644
23.11.2006 um 11:08 Uhr
Dann in den obigen Schnipsel noch
01.
ComboBox1.ListIndex = -1
Bitte warten ..
Mitglied: Janek
23.11.2006 um 11:16 Uhr
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...
Bitte warten ..
Mitglied: 8644
23.11.2006 um 11:21 Uhr
01.
ComboBox2.ListIndex = ComboBox2.ListIndex - 1
02.
...
Falls das nicht klappt, mit einer Variablen arbeiten:
01.
Dim li As Integer
02.
li = ComboBox2.ListIndex
03.
li = li - 1
04.
ComboBox2.ListIndex = li
05.
...
Bitte warten ..
Mitglied: Janek
23.11.2006 um 11:26 Uhr
und die variable auch in den oben stehen dialog einbinden (ober "schnipsel")?
Bitte warten ..
Mitglied: Janek
23.11.2006 um 11:36 Uhr
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

und so ist es :

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

janek
Bitte warten ..
Mitglied: 8644
23.11.2006 um 11:37 Uhr
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!

Psycho
Bitte warten ..
Mitglied: Janek
23.11.2006 um 11:39 Uhr
hab ich ja gemacht...
Bitte warten ..
Mitglied: 8644
23.11.2006 um 12:48 Uhr
...und wie schauts jetzt?
Bitte warten ..
Mitglied: Janek
24.11.2006 um 09:25 Uhr
SOOOOOOOOOOOOOOOOOOOOOOOOOOOO........
es ist ein ENDE in sicht


Also nochmal ein Herzliches Danke an alle die mir hier in den letzten 2 Wochen weitergeholfen haben (Psycho Dad... )
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

01.
Public Wert(20) As Variant
02.

03.
Sub all()
04.
'
05.
' All Makro
06.
' Makro am 14.11.2006 von j.fremerey aufgezeichnet
07.
'
08.
'
09.

10.
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
11.

12.

13.

14.
 
15.
 UserForm1.Show
16.

17.
End Sub
18.

19.
________________________________________________________________________________________________
20.

21.

22.
Public newname As String
23.

24.

25.
Function indexCollision() As Variant
26.
    Dim i As Integer
27.
    Dim j As Integer
28.
    Dim indexA As Integer
29.
    Dim indexB As Integer
30.

31.
    For i = 1 To 7
32.
        If (Me.Controls.Item("ComboBox" & i).Enabled = False) Then
33.
            GoTo continuecheck
34.
        End If
35.
        indexA = Me.Controls.Item("ComboBox" & i).listIndex
36.
        
37.
        For j = i To 7
38.
            If (Me.Controls.Item("ComboBox" & (j + 1)).Enabled = False) Then
39.
                GoTo continuecheck2
40.
            End If
41.
            indexB = Me.Controls.Item("ComboBox" & (j + 1)).listIndex
42.
            
43.
            'MsgBox "ComboBox" & i & "=" & indexA & ", ComboBox=" & j + 1 & "=" & indexB
44.
            If (indexA = indexB) Then
45.
                indexCollision = True
46.
                GoTo exitFuntion
47.
            End If
48.
continuecheck2:
49.
        Next j
50.
        
51.
continuecheck:
52.
    Next i
53.

54.
    indexCollision = False
55.

56.
exitFuntion:
57.
End Function
58.

59.
Private Sub fehlerAn()
60.
    CommandButton1.Enabled = False
61.
    fehlerLabel.Visible = True
62.
End Sub
63.

64.
Private Sub fehlerAus()
65.
    CommandButton1.Enabled = True
66.
    fehlerLabel.Visible = False
67.
End Sub
68.

69.
Private Sub ComboBox1_Change()
70.
    If (indexCollision) Then
71.
        Call fehlerAn
72.
    Else
73.
        Call fehlerAus
74.
    End If
75.
    
76.
    
77.
' Dim ind As Integer                 'Wenn Ziele in ComboBox doppelt vergeben, "OK" Button Inaktiv.
78.
' ind = ComboBox1.listIndex
79.
' 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
80.
'  CommandButton1.Enabled = False
81.
'  Label1.Visible = True
82.
'   Else: CommandButton1.Enabled = True
83.
'   Label1.Visible = False
84.
'  End If
85.
 
86.
End Sub
87.

88.
Private Sub ComboBox2_Change()
89.
    If (indexCollision) Then
90.
        Call fehlerAn
91.
    Else
92.
        Call fehlerAus
93.
    End If
94.
 
95.
End Sub
96.

97.
Private Sub ComboBox3_Change()
98.
     If (indexCollision) Then
99.
        Call fehlerAn
100.
    Else
101.
        Call fehlerAus
102.
    End If
103.
 
104.
End Sub
105.

106.
Private Sub ComboBox4_Change()
107.
    If (indexCollision) Then
108.
        Call fehlerAn
109.
    Else
110.
        Call fehlerAus
111.
    End If
112.

113.
End Sub
114.

115.
Private Sub ComboBox5_Change()
116.
     If (indexCollision) Then
117.
        Call fehlerAn
118.
    Else
119.
        Call fehlerAus
120.
    End If
121.

122.
End Sub
123.

124.
Private Sub ComboBox6_Change()
125.
    If (indexCollision) Then
126.
        Call fehlerAn
127.
    Else
128.
        Call fehlerAus
129.
    End If
130.
End Sub
131.

132.
Private Sub ComboBox7_Change()
133.
    If (indexCollision) Then
134.
        Call fehlerAn
135.
    Else
136.
        Call fehlerAus
137.
    End If
138.
End Sub
139.

140.
Private Sub ComboBox8_Change()
141.
    If (indexCollision) Then
142.
        Call fehlerAn
143.
    Else
144.
        Call fehlerAus
145.
    End If
146.

147.
End Sub
148.

149.
Private Sub CommandButton1_Click()  '"OK" Button
150.

151.

152.
    Wert(0) = Range("Q2").Value                 'Werte (O bis 14) Kopieren
153.
    Wert(1) = Range("Z2").Value
154.
    Wert(2) = Range("AC3").Value
155.
    Wert(3) = Range("C3").Value
156.
    Wert(4) = Range("H45").Value
157.
    Wert(5) = Range("R45").Value
158.
    Wert(6) = Range("C44").Value
159.
    Wert(7) = Range("J44").Value
160.
    Wert(8) = Range("F42").Value
161.
    Wert(9) = Range("K42").Value
162.
    Wert(10) = Range("O42").Value
163.
    Wert(11) = Range("Q44").Value
164.
    Wert(12) = Range("I42").Value
165.
    Wert(13) = Range("G42").Value
166.
    Wert(14) = Range("L42").Value
167.
    
168.
Dim Zielzellen1 As Variant
169.
    Zielzellen1 = Array("E6", "G6", "I6", "M6", "O6", "S6", "U6", "Y6", "AA6")          'Zielzellen merken
170.
Dim Zielzellen2 As Variant
171.
    Zielzellen2 = Array("E8", "G8", "I8", "M8", "O8", "S8", "U8", "Y8", "AA8")
172.
Dim Zielzellen3 As Variant
173.
    Zielzellen3 = Array("E7", "G7", "I7", "M7", "O7", "S7", "U7", "Y7", "AA7")
174.
  
175.
Windows(newname).Activate
176.

177.
    Range("X2").Value = "TR-" & Wert(1) & "-" & Wert(0)                    'Werte (0 bis 14) einfügen
178.
    Range("E9").Value = Wert(2)
179.
    Range("AA5").Value = Wert(3)
180.
    Range("I11").Value = Wert(4) & "/" & Wert(5)
181.
    Range("U10").Value = Wert(6)
182.
    Range("Y10").Value = Wert(7)
183.
    Range("L10").Value = Wert(8)
184.
    Range("Q10").Value = Wert(9)
185.
    Range("R10").Value = Wert(10)
186.
    Range("AA10").Value = Wert(11)
187.
    Range("O10").Value = Wert(12)
188.
    Range("L11").Value = Wert(13)
189.
    Range("Q11").Value = Wert(14)
190.
    
191.
Sheets("Input").Activate
192.

193.

194.
 
195.
 Dim i As Integer
196.
 For i = 1 To 8
197.
    If (Me.Controls.Item("ComboBox" & i).Enabled) Then
198.
        'Zielzellen nach ComboBox-Verteilung einfügen
199.
        Range(Zielzellen1(Me.Controls.Item("ComboBox" & i).listIndex)).Value = Me.Controls.Item("TextBox" & i).Value
200.
        Range(Zielzellen2(Me.Controls.Item("ComboBox" & i).listIndex)).Value = Me.Controls.Item("TextBox1" & i).Value
201.
        Range(Zielzellen3(Me.Controls.Item("ComboBox" & i).listIndex)).Value = Me.Controls.Item("TextBox11" & i).Value
202.
    End If
203.
 Next i
204.
 
205.
 exitForm
206.

207.
End Sub
208.

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

213.

214.
Private Sub UserForm_Initialize():
215.
    
216.

217.
Dim i As Integer
218.
For i = 0 To 8                                  'Fügt in die ComboBox die Zielnamen ein.
219.
    If (i = 0) Then
220.
        ComboBox1.AddItem ("Control")           'Von "Control"
221.
    Else
222.
        ComboBox1.AddItem ("Test " & CStr(i))
223.
    End If
224.
Next i
225.
ComboBox1.listIndex = 0
226.
  
227.
Application.Dialogs(xlDialogSaveAs).Show        'Öffnet "Speichern Unter" Fenster.
228.
newname = Application.ActiveWorkbook.Name       'Öffnet das Fenster unter neuem Datei Namen
229.
Application.Dialogs(xlDialogOpen).Show          'Öffnet "Datei Öffnen" Fenster.
230.
  
231.
TextBox1.Text = Range("N40").Text               'Linke Textbox Spalte. Für Tire Marking.
232.
TextBox2.Text = Range("N41").Text
233.
TextBox3.Text = Range("N32").Text
234.
TextBox4.Text = Range("N33").Text
235.
TextBox5.Text = Range("N34").Text
236.
TextBox6.Text = Range("N35").Text
237.
TextBox7.Text = Range("N36").Text
238.
TextBox8.Text = Range("N37").Text
239.
  
240.
TextBox11.Text = Range("K40").Text              'Mitlere Textbox Spalte. Für Pattern
241.
TextBox12.Text = Range("K41").Text
242.
TextBox13.Text = Range("K32").Text
243.
TextBox14.Text = Range("K33").Text
244.
TextBox15.Text = Range("K34").Text
245.
TextBox16.Text = Range("K35").Text
246.
TextBox17.Text = Range("K36").Text
247.
TextBox18.Text = Range("K37").Text
248.

249.
TextBox111.Text = Range("S40").Text             'Sind rechts außerhalb der Userform. Für Brand.
250.
TextBox112.Text = Range("S41").Text
251.
TextBox113.Text = Range("S32").Text
252.
TextBox114.Text = Range("S33").Text
253.
TextBox115.Text = Range("S34").Text
254.
TextBox116.Text = Range("S35").Text
255.
TextBox117.Text = Range("S36").Text
256.
TextBox118.Text = Range("S37").Text
257.

258.
Dim textboxName1 As Variant
259.
Dim textboxName2 As Variant
260.
Dim comboboxName As String
261.

262.
Dim listIndex As Integer
263.
listIndex = 1
264.
For i = 1 To 8
265.
    textboxName1 = "TextBox" & i
266.
    textboxName2 = "TextBox1" & i
267.
    comboboxName = "ComboBox" & i
268.

269.
    If ((Len(Me.Controls.Item(textboxName1).Text)) < 1 And (Len(Me.Controls.Item(textboxName2).Text)) < 1) Then
270.
        Me.Controls.Item(textboxName1).Enabled = False
271.
        Me.Controls.Item(textboxName2).Enabled = False
272.
        Me.Controls.Item(comboboxName).Enabled = False
273.
        
274.
        Me.Controls.Item(textboxName1).BackColor = Gray
275.
        Me.Controls.Item(textboxName2).BackColor = Gray
276.
        
277.
        GoTo continue
278.
    End If
279.
    
280.
    If (i = 1) Then
281.
        GoTo continue
282.
    End If
283.
    
284.
    Me.Controls.Item(comboboxName).list = ComboBox1.list
285.
    Me.Controls.Item(comboboxName).listIndex = listIndex
286.
    listIndex = listIndex + 1
287.
continue:
288.
Next i
289.

290.

291.
Call fehlerAus
292.
 UserForm1.Hide
293.
End Sub
294.

295.
Sub exitForm()
296.
    'MsgBox "abbruch!"
297.
     Unload UserForm1
298.
End Sub
Also nochmal DANKE!


Gruß
Janek
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBS Datei Auswahl Dialog
gelöst Frage von 133202VB for Applications5 Kommentare

Hallo Ihr, im Thread: konnte ich schon finden, was ich gesucht habe: Jetzt möchte ich allerdings, dass am Anfang ...

Microsoft Office
Excel-Makro
gelöst Frage von yuki13Microsoft Office7 Kommentare

Hallo Zusammen!! :-) Ich bin nicht so fit in Excel Makros und wollte mich hier erkundigen, ob mir jemand ...

PHP
Website drucken ohne Druck-Dialog
Frage von SchmakusPHP3 Kommentare

Hallo Zusammen, ich arbeite gerade an einer WebApplikation zur Anzeige von Einsatzdaten einer Feuerwehr. Das System läuft nur im ...

Microsoft Office
Excel Makro Hilfe
gelöst Frage von freshman2017Microsoft Office8 Kommentare

Moin Moin! Ich würde gerne mit Excel - Kombinationen für Artikelnummern erstellen. Könnte hierbei bereits heraus finden, dass ein ...

Neue Wissensbeiträge
Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 6 StundenInternet2 Kommentare

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 1 TagWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Windows 10

Windows 10 - Programme laufen schneller, wenn Sie mit Administratorrechten ausgeführt werden

Erfahrungsbericht von 1Werner1 vor 2 TagenWindows 1013 Kommentare

Moin, das wollte ich erst nicht glauben, aber es ist so. Wenn Ihr ein Programm mit Administratorrechten unter Windows ...

Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 3 TagenSicherheits-Tools8 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Heiß diskutierte Inhalte
Server-Hardware
Kompatibilität Tray für HP Proliant DL385 G10 vs. G8, G9
Frage von chris123Server-Hardware19 Kommentare

Hallo, weiß einer der hier anwesenden, ob die Trays für 2,5 " HDDs zwischen einem DL 385 G10 und ...

Outlook & Mail
Office 365 mit Email-Profil installieren
gelöst Frage von 139221Outlook & Mail18 Kommentare

Hallo, kurz zu meiner Person: Vor ungefahr 10 Jahren habe ich eine Umschuldung zum Fachinformatiker für Systemintegration gemacht aber ...

Server-Hardware
Server Hardwareempfehlung für Projekt
gelöst Frage von heax22Server-Hardware12 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer geeigneten Server Plattform um unter Hyper-V einen virtuellen Server 2016 ...

E-Mail
Wie funktionieren DNS Blacklisten?
gelöst Frage von WinLiCLIE-Mail12 Kommentare

Ich frage mich schon seit längerem, woher genau die Blacklisten für die Mailserver die Domains und Ips kennen die ...