Registriert seit: 14.01.2015
Version(en): 2003
15.11.2016, 09:36
(Dieser Beitrag wurde zuletzt bearbeitet: 15.11.2016, 09:36 von lion7123.)
servus, entschuldige bitte aber war leider gesch. unterwegs die letzten tage.
danke erstmal für den code und die erklärung, aber bin mir nich sicher (außer ich versteh den code falsch) ob du mich richtig verstanden hast:
hab dir aus dem Grund einmal einen Auszug der Excel datei hochgeladen. Makros musst nicht aktivieren. Damit hast dann auch gleich die richtigen Zellen
es geht dann um den Reiter Vorlage und die Rot-geschriebenen Felder. Hier habe ich mitlerweile zwar eine Formel gefunden aber das "x" unter dem Reiter "sonstige Adressen" kann eben an mehr stellen stehen und muss dem entsprechend auch andere Zellen kopieren.
Gruß und danke lion
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, das würde im Prinzip so gehen: Code: Private Sub Worksheet_Change(ByVal Target As Range) 'Wenn der Eintrag der geaenderten Zelle ein x ist, dann If Target.Value = "x" Then 'Ereignisreaktion ausschalten Application.EnableEvents = False 'Daten aus X1 nach A1 uebernehmen Sheets("Vorlage").Range("B5").Value = Target.Offset(0, 2).Value 'Ereignisreaktion einschalten Application.EnableEvents = True 'Ende Wenn die Adresse der geaenderten Zelle Y1 ist, dann End If End Sub
Der Code schaut, ob in der Eingabezelle ein x eingetragen wurde, und überträgt dann den Inhalt der Zelle zwei rechts daneben nach Vorlage B5. Das x kannst DU sonstwo eingeben, ob das dann Sinn macht, sei erst mal dahingestellt. Man könnte, wie im ersten Beispiel, die Eingabezelle(n) auch wieder einschränken, z.B. auf die Spalten B, AB usw, oder auch enger auf die Zellen B2, B4, AB2, AB4 usw. Man könnte die Zellen auch zu einem Bereich zusammenfassen (Zellen markieren, im Adressfeld einen Namen eingeben) und dann mit dem Namen arbeiten. Der Code entfernt auch nicht eventuell vorhandene x - Einträge. Da wäre eine engere Definition der Eingabezellen von Vorteil, z.B. das mit dem gerade beschriebenen Namen. Probiers mal und sag, wie es weiter gehen soll
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.01.2015
Version(en): 2003
16.11.2016, 09:37
(Dieser Beitrag wurde zuletzt bearbeitet: 16.11.2016, 09:37 von lion7123.)
irgendwie steh ich aufn schlauch ... wenn ich mir so den code durchlese
???? Daten aus X1 nach A1 uebernehmen ????
und wo müßte ich den code einfügen ? in der Arbeitsmappe bei Vorlage oder sonstige Adressen? oder gar bei die module ?
sorry aber was codes angeht kann ich nichts selbst ändern wenn das deine idee war .. ich check da so gut wie null ... ich seh da nur welche zellen du angibst und da kommt ich mit den oben gennanten nicht klar.
ich bin echt froh das du mir hilfst aber vill reden wir auch immernoch aneinander vorbei ;)
das ganze ist ein Rechnungsformular ... und bei "Vorlage" soll in das adressfeld und ins Kundennummernfeld immer die Werte aus "sonstige adressen" eingegeben werden.
das "X" in der "Vorlage" kann nur in den Zellen B2 / B4 / B6 / B8 / B10 stehen ( es sollen später evtl noch weitere Vorlage geben 1&2 aber die beziehen ihre Adressen und nummern von anderen Zellen in "sonstige Adressen"
wenn "X" auf "B4" steht, soll er "C4 von sonstige adressen" ins Kundennummerfeld "V9 in der "Vorlage" kopieren + "D4 von sonstige adressen" ins Adressfeld von "B5 in der Vorlage" gleichzeitig muss er aber halt auch die anderen B2 /B4/ B8 & B10 abfragen ob das X da steht und gegebenenfalls ihre daten kopieren.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, der Code muss in das Codemodul vom Blatt "Adressen_sonstige" Die Kopie der Zahl hab ich übersehen. Also, wenn Du im Blatt "Adressen_sonstige" in B2 ein x eingibst, soll der Inhalt von C2 auf das Blatt "Vorlage" Zelle V9 und der Inhalt von D2 auf das Blatt "Vorlage" B5. Und wenn Du ein weiteres x anderswo eingibst, z.B. in B4, werden die Daten im Blatt Vorlage überschrieben. Das passt auch zu Deinem Satz Zitat:wenn "X" auf "B4" steht, soll er "C4 von sonstige adressen" ins Kundennummerfeld "V9 in der "Vorlage" kopieren + "D4 von sonstige adressen" ins Adressfeld von "B5 in der Vorlage" Wenn Du in B2 und B4 ein x hast, wo sollen dann die Daten hin? Du schreibst Zitat:gleichzeitig muss er aber halt auch die anderen B2 /B4/ B8 & B10 abfragen ob das X da steht und gegebenenfalls ihre daten kopieren. Wenn ich jetzt noch wüsste, wo die eingefügt werden sollen ... Gibt ja min. 3 Möglichkeiten. Ich überschreibe B5 Ich schreibe es woanders hin Oder in Vorlage B5 soll alles zusammengemischt werden? Na ja, und man könnte nach dem Eintrag in B5 das Blatt kopieren und dann den nächsten Eintrag in Vorlage B5 einfügen und wieder kopieren usw, man hätte also für jeden Eintrag ein Blatt. Oder ... Wenn Du in B2 das x wegnimmst und das in B4 drin lässt, was soll dann eigentlich passieren?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.01.2015
Version(en): 2003
16.11.2016, 16:35
(Dieser Beitrag wurde zuletzt bearbeitet: 16.11.2016, 17:12 von WillWissen.
Bearbeitungsgrund: siehe Edit
)
ahhh da is der wurm :D es gibt nur ein X für die erste vorlage das zweite und dritte X wären bei sonstige Adressen die anderen spalten so wie die Überschriften lauten vorlage 1 / 2 und 3 und fur die gibt es dann auch einen eigenen reiter wo die daten hin übertragen werden sollen (vorlage_2 und vorlage_3) aber auch hier gilt nur jeweils ein X.
das ganze is für kunden gedacht die einmal im halben jahr vill anrufen und die teilen sich dann eben ein Vorlage. und das mal zwei von denen gleichzeitig anrufen kann ich mir nicht vorstellen ;P
ps geb dir auch gern meine handy nummer wenns dir lieber is. sowas per text zu erklären is teilweise immer bisl blöd weil fur einen selbst is ja alles glas klar :D
Edit: Absolut identischen Beitrag von 16:08 gelöscht
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo, hier nun ein Code, der die Einträge auf unterschiedlichen Blättern platziert. Ich habe hier mal angenommen, dass die Vorlage für B2 auch entsprechend heißt, also Vorlage_B2. B4 wäre dann Vorlage_B4. Die Blätter muss es aber schon geben, sonst kommt eine Fehlermeldung. Code: Private Sub Worksheet_Change(ByVal Target As Range) 'Wenn der Eintrag der geaenderten Zelle ein x ist, dann If Target.Value = "x" Then 'Ereignisreaktion ausschalten Application.EnableEvents = False 'Daten in die Vorlage nach V9 und B5 uebernehmen On Error GoTo errorhandler With Sheets("Vorlage_" & Replace(Target.Address, "$", "")) .Range("V9").Value = Target.Offset(0, 1).Value .Range("B5").Value = Target.Offset(0, 2).Value End With errorhandler: 'Ereignisreaktion einschalten Application.EnableEvents = True 'Bei Fehler Meldung ausgeben If Err.Number <> 0 Then MsgBox "Fehler! Bitte Blatt Vorlage_" & Replace(Target.Address, "$", "") & " kontrollieren!" 'Ende Wenn die Adresse der geaenderten Zelle Y1 ist, dann End If End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.01.2015
Version(en): 2003
18.11.2016, 11:14
(Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2016, 11:21 von lion7123.)
ich würde dir gerne sage das du mich diesmal richtig verstanden hast ... aber leider nein ... dann könnte ich ja gleich wieder jedem einen eigenen reiter geben :
schau mal ich hab dir hier ein screenshot hochgeladen.
oben steht vorlage / vorlage_2 und vorlage_3 darunter kommen jemweils 5 kästchen in der gleichen farbe wo adressen stehen. links daneben die kundennummer und ein kästchen um ein X einzugeben.
und nur die adresse und KdNr wo das X is soll in die jeweiligen Vorlage übertragen werden.
PS: die Reiter heißen so wie oben beschrieben.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, dann hoffentlich so. Code: Private Sub Worksheet_Change(ByVal Target As Range) 'Variablendeklaration 'Integer Dim iCnt% 'Fuer Schleife 'String Dim strVorlage 'Fuer Vorlagenname 'Wenn der Eintrag der geaenderten Zelle ein x ist und die Zeile 4, 6, 8 oder 10, dann If Target.Value = "x" And (Target.Row = 2 Or Target.Row = 4 Or Target.Row = 6 Or Target.Row = 8 Or Target.Row = 10) Then 'Auswahl je nach Spalte Select Case Target.Column 'Spalte 2 = B ergibt Vorlage Case 2: strVorlage = "Vorlage" 'Spalte 28 = AB ergibt Vorlage_2 Case 28: strVorlage = "Vorlage_2" 'Spalte 74 = BB ergibt Vorlage_3 Case 74: strVorlage = "Vorlage_3" 'bei allen anderen Spalten Makro verlassen Case Else: Exit Sub 'Ende Auswahl je nach Spalte End Select 'Ereignisreaktion ausschalten Application.EnableEvents = False 'alle "alten" Eintraege in den "X"-Zellen entfernen 'Schleife ueber Eintraege ab Zeile 2 bis Zeile 10, Schrittweite 2 For iCnt = 2 To 10 Step 2 'Wenn nicht die geaenderte Zelle, dann Zelle leeren If Target.Row <> iCnt Then Cells(iCnt, Target.Column).Value = "" 'Ende Schleife ueber Eintraege ab Zeile 4 bis Zeile 10, Schrittweite 2 Next 'Daten in die Vorlage nach V9 und B5 uebernehmen On Error GoTo errorhandler 'Mit der Vorlage With Sheets(strVorlage) 'Zahl uebernehmen .Range("V9").Value = Target.Offset(0, 1).Value 'Text uebernehmen .Range("B5").Value = Target.Offset(0, 2).Value 'Ende Mit der Vorlage End With errorhandler: 'Ereignisreaktion einschalten Application.EnableEvents = True 'Bei Fehler Meldung ausgeben If Err.Number <> 0 Then MsgBox "Fehler! Bitte Blatt Vorlage_" & Replace(Target.Address, "$", "") & " kontrolieren!" 'Ende Wenn die Adresse der geaenderten Zelle Y1 ist, dann End If End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• lion7123
Registriert seit: 14.01.2015
Version(en): 2003
jetzt hammas ;) funktioniert super und macht genau das was ich wollte! tausend dank für dein Engagement :)
|