Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Bereich mit Werten kopieren und "Nur Werte" einsetzen
#1
Hallo zusammen,

da ich hier schon öfter hilfe bekommen habe dachte ich das ich es noch einmal versuche :)

Da der Betreff für mehr Verwirrung sorgen wird als alles andere hole ich ein wenig mehr aus jetzt.
Es geht hier um eine Datei die ich gerade ausarbeite zur Dokumentierung und Bestellung von Fremdleistung...also Mitarbeiter A wird Krank und wird durch Sub Unternehmer ersetzt.

Im Idealfall möchte ich das ganze Thema Weitens gehen automatisiert haben da hier auch noch andere Verknüpfungen mit dem Controlling vorhanden sind.
Meine Idee ist jetzt das er sich anhand des Namens vom Kranken Mitarbeiter den Einsatzort zieht, soweit ja eigentlich ganz einfach S/XVerweis thema durch...

Die Herausforderung die ich habe ist jetzt das wenn sich der Einsatzort des Mitarbeiters ändert und ich die Stammdaten anpasse er natürlich auch alle zeilen die vorweg gegangen sind auch anpasst...und das darf nicht passieren.

Händisch würde ich das ganze lösen in dem ich die zellen Markiere > Kopiere und dann nur den werte einfüge.
Das ganze muss doch aber auch über VBA möglich sein beim Starten der Datei...

Bezogen auf meine Beispieldatei müsste folgendes Passieren:

1. Datei öffnet sich
2. C2:C4 wir Dynamisch markiert weil dort werte sind
3. Kopierte werte werden in C2 eingefügt (Nur werte) glaub das war irgendwas Xspecialpaste bin mir aber unsicher
4. Arbeitsmappe aktualisiert sich (Das ist wichtig für ein anderen punkt, die Arbeitsmappe ruft die Stammdaten aus einer anderen Datei ab das darf aber erst geschehen nach dem einfügen) 

Ich hoffe es ist halbwegs verständlich was ich mir wünsche :D 
Da ich so ein wenig mit VBA schon gearbeitet habe bin ich mir fast sicher das das funktionieren müsste...aber ich krieg es alleine nicht hin

Problematisch würde ich als VBA Anfänger sehen das auch werte in C5 sind für excel da eine Formel vorhanden ist er diese aber nicht berücksichtigen soll....


Angehängte Dateien
.xlsx   Beispiel Datei.xlsx (Größe: 10,27 KB / Downloads: 8)
Antworten Top
#2
Hallo

anbei dein Beispieldatei mit Lösung zurück. Gib bitte mal in eine Leere Zelle den Namen des Mitarbeites ein, und schaue was passiert! Da gibt es keine Formeln mehr!

Warum den Umweg über Formeln, da müsste man auch die "#NV" Werte löschen!
Deine Datei muss aber als xlsm Datei gespeichert werden, wegen dem Makro.
Ich verwende ein Target Makro das auf die Eingabe in Spalte C reagiert.

mfg Gast 123

Nachtrag es würde sich auch anbieten in Spalte C DropDown Zellen einzubauen, die du nur anklicken musst.

Hinweis: Meine Beispieldatei ist ein altes Excel 2003 Format, weil ich nur einen XP Laptop zur Verfügung habe!


Angehängte Dateien
.xls   Beispiel Datei F.xls (Größe: 24 KB / Downloads: 12)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Seeqi
Antworten Top
#3
WoW das ist Hammer, dankeschön nun schau ich mal das ich das ganze verstehe :D
Antworten Top
#4
Ok, nochmal vielen Dank, so langsam verstehe ich den Prozess :) gibt es eine Möglichkeit hier noch einzubauen das er für das Makro einen Blattschutz deaktiviert und nach dem Makro wieder aktiviert?
Antworten Top
#5
Hallöchen,

den dafür notwendigen Code kannst Du mit dem Makrorekorder aufzeichnen.
.      \\\|///      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:
  • Seeqi
Antworten Top
#6
Hallo

sehr einfach, direkt nach With Worksheet den Befehl: .Unprotect
und vor Ende With den Befehl: .Protect (vorgestellten Punkt nicht vergessen!)

Info zur With Klammer: durch den vorgestellten Punkt beziehen sich alle folgenden Angaben wie .Range, .Cells, .Shapes , .Protect immer auf diese Tabelle!
Wird der Punkt vergessen, beziehen sich die Angaben auf das aktive (selektierte) Sheet!

Freut mich das du den Code verstanden hast. Klein, simpel, aber wirkungsvoll!

mfg Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Seeqi
Antworten Top
#7
Super vielen Dank, wirklich :) 
das mit dem Recorder kannte ich noch garnicht  Angel

eine letzte Frage habe ich jetzt noch, besteht die Möglichkeit, wenn ich den namen wieder rauslösche das er dann auch die daten wieder entfernt?
Antworten Top
#8
Hallo

habe heute erst deine letzte Frage gesehen. Probiere es bitte mal damit:
Cells(Target.Row, 1) waehlt die Zelle in Spalte A aus, Resize erweitert sie um 5 Spalten nach Rechts.
Das sind die kleinen Tricks mit denen wir als Programmierer clever arbeiten.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ende
If Target.Row <= 2 Then Exit Sub
If Target.Value =  Empty Then
  'Lösche komplette Eingabe Zeile (alle Daten)
  Cells(Target.Row, 1).Resize(1, 5) = Empty
  Exit Sub
End If

If Target.Column <> 2 Then Exit Sub
With Worksheets("Stammdaten")
    lz1 = .Cells(1000, 1).End(xlUp).Row
    For Each AC In .Range("A4:A" & lz1)
        If AC.Value = Target.Value Then
            Target.Cells(1, 2) = AC.Cells(1, 2)
        End If
    Next AC
End With

If Target.Offset(0, -1) = Empty Then
  Target.Offset(0, -1).Select
  MsgBox "UK Nummer fehlt, bitte einfügen!"
End If
ende:
End Sub


mfg Gast 123

Nachtrag:  gelöscht wird die ganze Zeile, egal in welcher Spalte du löschst!
Wenn du nur bei Namens Eingabe löschen willst dann aender die İf Then Zeile
If Cells(Target.Row, 2) = Empty Then
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste