Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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!

Frage Microsoft Microsoft Office

Mitglied: Janek

Janek (Level 1) - Jetzt verbinden

15.11.2006, aktualisiert 24.11.2006, 11180 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!

Mit freundlichen Grüßen
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!

Mit freundlichen Grüßen
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


Mit freundlichen Grüßen 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Microsoft Office
gelöst Makro wird beim öffnen Vorlage nicht ausgeführt (8)

Frage von Sunny89 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...