Office: Bestimmte Werte kopieren

Helfe beim Thema Bestimmte Werte kopieren in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Guten Morgen allesamt! Ich hab wieder mal ein Problem mit VB. Ich habe eine Tabelle mit meinen Arbeitszeiten. Und ich habe eine Rechnungsvorlage... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von adpar, 19. September 2009.

  1. adpar Erfahrener User

    Bestimmte Werte kopieren


    Guten Morgen allesamt!

    Ich hab wieder mal ein Problem mit VB.
    Ich habe eine Tabelle mit meinen Arbeitszeiten.
    Und ich habe eine Rechnungsvorlage erstellt, bei den ich die Arbeitszeiten eintragen muss.

    Hier mal meine Arbeitszeittabelle:

    Bestimmte Werte kopieren [​IMG]


    Und hier mal meine Rechnungsvorlage:

    Bestimmte Werte kopieren [​IMG]


    Ich hab schon ein Makro von unserem Schatzi (danke nochmal) damals bekommen, dass den Monat und auch die Summe auf die Rechnung überträgt, sobald ich auf die Geldscheine ;-) gehe.
    Mein Problem an der Geschichte ist, dass bei den Arbeitszeiten nicht alle Spalten gebraucht werden sondern nur die Spalten A,B,C,D,F und H.
    Die Spalten E und G müssen nicht auf die Rechnung.
    Das nächste Problem ist, dass die Arbeitszeittabelle jeden Monat eine andere Länge hat (Man arbeitet ja nicht immer die gleiche Anzahl an Tagen).
    Eingefügt müssen die Spalten auf der Rechnung ab Zeile 21.

    Ich gebe hier nochmal das vorhandene Makro rein:

    Dank euch schon mal für die Hilfe im voraus!

    MFG
    adpar


    P.s.:sollte noch irgendwas unverständlich sein, einfach fragen!
     
  2. Exl121150 Erfahrener User
    Hallo,

    anstelle des bisherigen Makros folgendes Makro installieren:

    Code:
    Sub August()
      Const WerteZahlenformate = 12, NurWerte = -4163, KeineOperation = -4142
      Const xlDialogSaveAs = 5
      Dim RechBlatt As Worksheet
      Dim RechErstPos As Range, RechLtztPos As Range, RechPos As Range
      'Die folgende Datei wird geöffnet:
      Workbooks.Open "C:\Dokumente und Einstellungen\ingo\Eigene Dateien\Vorlage Rechnung.xls"
      'In der nächsten Zeile musst du den Namen deines Rechnungsblatts eingeben (statt "August")
      Set RechBlatt = ThisWorkbook.Sheets("August")
      With ActiveWorkbook.Sheets("Tabelle2")
        .Range("B16") = RechBlatt.Range("A1")
        Set RechErstPos = RechBlatt.Columns(1).Find("Beginn").Offset(1, 0)
        Set RechLtztPos = RechErstPos.End(xlDown)
        Set RechPos = RechBlatt.Range(RechErstPos, RechLtztPos.Offset(0, 3))
        RechPos.Copy Destination:=.Range("A21")
        Set RechPos = RechPos.Offset(0, 5).Resize(, 1)
        RechPos.Copy
        .Range("E21").PasteSpecial Paste:=NurWerte, Operation:=KeineOperation
        RechPos.Offset(0, 2).Copy
        .Range("F21").PasteSpecial Paste:=NurWerte, Operation:=KeineOperation
        .Range("F31") = RechBlatt.Columns(6).Find("Summe:").Offset(0, 2)
    'Die Rechnung wird geschlossen und gespeichert.
        Application.Dialogs(xlDialogSaveAs).Show
       .PrintOut Copies:=1, Collate:=True
      End With
    End Sub
     
    Exl121150, 20. September 2009
    #2
  3. adpar Erfahrener User
    Hallo EXL121150!

    Ich hab dein Makro nun installiert aber er sagt mir immer:

    Index außerhalb gültigen Bereichs!

    Verstehe leider nicht was er von mir haben will.
    Ich hab das Makro so geändert wie es da stand:
    Die rechnung öffnet er noch, aber Werte überträgt er gar nicht!

    Ich weiß nicht was er noch haben will(Ich verstehe auch nicht den ganzen Code ! Bestimmte Werte kopieren :oops: )

    MFG
    adpar
     
  4. Exl121150 Erfahrener User

    Bestimmte Werte kopieren

    Hallo adpar,

    Du hattest in Deiner ursprünglichen Problembeschreibung 2 Excel-Dateien präsentiert:

    1) Die Excel-Datei "Arbeitszeit Hinz 09.xls". In dieser sind mehrere Arbeitsblätter enthalten mit Namen: 'Januar', 'Februar',..., 'August', .. , usw.
    Dabei hast Du den Inhalt von Arbeitsblatt 'August' in Deiner Beschreibung offengelegt. Dort sind im Zellbereich A4:D9 die händischen Arbeitszeiteingaben für den Monat August 2009 enthalten. In Spalte I ist ein Geldscheinstapel zu sehen, offenbar ein Button, der das Makro namens 'August' startet.
    Genau diesen Arbeitsblattnamen (der unten in der Tabulatorbeschriftung zu sehen ist) hättest Du statt der Bezeichnung "August" einfügen müssen. Eingefügt hast Du "Vorlage Rechnung" - diese Blattbezeichnung hat Excel in seinen internen Listen nicht gefunden und daher die Fehlermeldung 'Index außerhalb des gültigen Bereichs'.

    2) Die Excel-Datei "Vorlage Rechnung.xls", die offenbar auf Deiner Festplatte mit folgendem Pfad zu finden ist:
    "C:\Dokumente und Einstellungen\ingo\Eigene Dateien\Vorlage Rechnung.xls".
    Diese Datei/Arbeitsmappe enthält wieder mehrere Arbeitsblätter mit Namen 'Tabelle1', 'Tabelle2', 'Tabelle3', wovon Du in Deiner Beschreibung den Inhalt von Blatt 'Tabelle2' offengelegt hast.
    Hier ist offenbar eine Art Rechnungsformular enthalten, in das gewisse Daten aus Punkt 1) übertragen werden sollen mit Hilfe des Makros namens 'August'.
    Der Name dieses Arbeitsblattes 'Tabelle2' taucht (abgesehen vom Dateipfad) auch im Makro auf in der Zeile 'With ActiveWorkbook.Sheets("Tabelle2")'

    3) Und nun zum Makro namens 'August':
    3a) Es wird offenbar mit dem Geldscheinstapel-Button aus dem Arbeitsblatt "August" in der Arbeitsmappe "Arbeitszeit Hinz 09" der Excel-Datei "Arbeitszeit Hinz 09.xls" gestartet.
    3b) Ich habe das Makro leicht modifiziert und habe jetzt ausführliche Kommentare eingefügt. Die einzige Stelle, die jetzt eventuell noch anzupassen ist, ist in folgender Zeile enthalten:
    Code:
      With ActiveWorkbook.Sheets("Tabelle2")
    Es ist im Kommentar ausführlich erläutert, was es damit auf sich hat.
    Und eventuell muss natürlich auch noch der Pfad und Dateiname für die "Vorlage Rechnungs.xls" noch angepasst werden (die das Arb.Blatt 'Tabelle2' beinhaltet als Vorlage fürs Rechnungsformular).

    Ich hoffe, dass ich das Makro jetzt ausführlich und präzise genug erläutert habe. Nachfolgend noch das Makro (mit Kommentaren):
    Code:
    Sub August()
      Const WerteZahlenformate = 12, NurWerte = -4163, KeineOperation = -4142
      Const xlDialogSaveAs = 5
      Dim DatenBlatt As Worksheet
      Dim DatenErstPos As Range, DatenLtztPos As Range, DatenPos As Range
    ' Excel merkt sich in 'DatenBlatt' das Blatt mit den Eingabedaten,
    ' in dem auch der Geldschein-Button enthalten ist.
      Set DatenBlatt = ThisWorkbook.ActiveSheet
     'Die folgende Datei wird geöffnet; sie wird damit zur aktiven Arbeitsmappe.
      Workbooks.Open "C:\Dokumente und Einstellungen\ingo\Eigene Dateien\Vorlage Rechnung.xls"
     'In dieser aktiven Arbeitsmappe gibt es ein Arbeitsblatt 'Tabelle2',
     'in der das Rechnungsformular enthalten ist,
     'in das die Daten aus 'DatenBlatt' übertragen werden sollen.
     'Falls dieses Arbeitsblatt umbenannt wurde, ist dies in der folgenden Zeile anzupassen
      With ActiveWorkbook.Sheets("Tabelle2")
         'Die Re.Nr. aus Zelle A1 des Datenblattes wird in Zelle B16 des Re.Formulars gespeichert
          .Range("B16").Value = DatenBlatt.Range("A1").Value
         'Im DatenBlatt wird in Spalte A nach dem Wort "Beginn" gesucht und
         'die Fundstelle in 'DatenErstPos' gemerkt
          Set DatenErstPos = DatenBlatt.Columns(1).Find("Beginn").Offset(1, 0)
         'Von dieser Fundstelle wird in Spalte A weitergesucht nach der letzten Datenzeile und
         'die Fundstelle in 'DatenLtztPos' gemerkt
          Set DatenLtztPos = DatenErstPos.End(xlDown)
         'Aus diesen beiden Fundstellen wird der Zellbereich mit den Tagen/Uhrzeiten
         '(im Aug.Bsp. A4:D9) ermittelt und in 'DatenPos' gemerkt.
          Set DatenPos = DatenBlatt.Range(DatenErstPos, DatenLtztPos.Offset(0, 3))
         'Der Zellbereich 'DatenPos' wird kopiert ins Re.Formular in den
         'Bereich mit der linken oberen Ecke in Zelle A21
          DatenPos.Copy Destination:=.Range("A21")
         'Der Zellbereich 'DatenPos' wird um 5 Spalten nach rechts verschoben und
         'zu 1 Spalte verschmälert, sodass er den Bereich mit den Stundenanzahlen bedeckt,
         'und wiederum in 'DatenPos' gemerkt
          Set DatenPos = DatenPos.Offset(0, 5).Resize(, 1)
         'Der Zellbereich 'DatenPos' wird in die Zwischenablage kopiert
          DatenPos.Copy
         'Der Inhalt der Zwischenablage wird im Re.Formular ab linker oberer Zelle E21 eingefügt
         'und zwar nur die Zahlen (=Stunden) ohne jede Formatierung. Die Formatierung für die
         'Stunden muss bereits im Re.Formular enthalten sein
          .Range("E21").PasteSpecial Paste:=NurWerte, Operation:=KeineOperation
         'Der Zellbereich 'DatenPos' wird wieder um 2 Spalten im DatenBlatt weiter nach rechts
         'verschoben, sodass er den Bereich Betragssummen bedeckt, und wieder in die
         'Zwischenablage kopiert.
          DatenPos.Offset(0, 2).Copy
         'Der Inhalt der Zwischenablage wird im Re.Formular ab linker oberer Zelle F21 eingefügt
         'und wiederum nur die Zahlen (EUR-Beträge) ohne jede Formatierung. Die Formatierung für
         'die Beträge muss bereits im Re.Formular enthalten sein.
          .Range("F21").PasteSpecial Paste:=NurWerte, Operation:=KeineOperation
         'Im DatenBlatt wird in Spalte F nach dem Wort "Summe:" gesucht und, ausgehend von der
         'Fundstelle, wird der Inhalt der Zelle, die 2 Spalten weiter rechts liegt, in
         'die Zelle F31 des Re.Formulars kopiert (Nettobetrag).
          .Range("F31").Value = DatenBlatt.Columns(6).Find("Summe:").Offset(0, 2).Value
         'Es wird der Dateidialog für 'Speichern unter ...' der aktiven Arbeitsmappe, die das
         'Blatt mit dem Re.Formular 'Tabelle2' enthält, angezeigt. Hier muss ein neuer Dateiname
         'eingegeben werden, damit die bisherige Vorlagendatei nicht überschrieben wird
          Application.Dialogs(xlDialogSaveAs).Show
         'Daraufhin wird der Inhalt des aktiven Arbeitsblattes 'Tabelle2' ausgedruckt und zwar:
         '1 Exemplar, das sortiert ist (was bei 1 Exemplar bedeutungslos ist).
          .PrintOut Copies:=1, Collate:=True
      End With
    End Sub
     
    Exl121150, 22. September 2009
    #4
  5. adpar Erfahrener User
    Hay!
    Vielen lieben Dank!
    Du bist echt spitze!
    Erstens funktioniert es nun perfekt und zweitens sind deine erklährungen für mich auch verständlich und nachvollziehbar. Bist ein super Lehrer :!:
    Dank dir!

    MFG
    adpar
     
Thema:

Bestimmte Werte kopieren

Die Seite wird geladen...
  1. Bestimmte Werte kopieren - Similar Threads - Bestimmte Werte kopieren

  2. Wenn in Zelle bestimmter Wert dann kopieren

    in Microsoft Excel Hilfe
    Wenn in Zelle bestimmter Wert dann kopieren: Hallo, ich bin absolut neu was Excel angeht und suche eine Lösung für mein Problem. Ich habe zwei Arbeitsblätter ("Übersicht Zimmer & "Bereiche") mit Haushaltsaufgaben und deren Turnus. Nun...
  3. Wenn in Zeile bestimmter Wert dann ganze Zelle kopieren

    in Microsoft Excel Hilfe
    Wenn in Zeile bestimmter Wert dann ganze Zelle kopieren: Hallo, ich bin auf der Suche nach einer Lösung für folgendes Problem: In Tabelle 1 habe ich eine gesamte Stückliste, auf Tabelle 2 hätte ich gerne die Daten aus Tabelle 1 nach einem bestimmten...
  4. Bei gleichem Wert bestimmte Zellen kopieren

    in Microsoft Excel Hilfe
    Bei gleichem Wert bestimmte Zellen kopieren: Hallo zusammen, ich bin völliger Excel/VBA Neuling und bräuchte Hilfe bei meinem Problem. Ich hoffe ihr könnt mir aushelfen. Mein Vorhaben: In Spalte G & H werden ab Zeile 3 Werte eingetragen....
  5. VBA Zelle mit bestimmten Werten kopieren

    in Microsoft Excel Hilfe
    VBA Zelle mit bestimmten Werten kopieren: Hallo zusammen, ich habe folgendes Problem und keine wirkliche Lösung dafür. Ich möchte mittels VBA in einem Dokument alle Zeilen kopieren, welche in einer bestimmten Spalte (bspw. Spalte 11)...
  6. Wenn Wert in Spalte, dann kopiere bestimmte Zellen

    in Microsoft Excel Hilfe
    Wenn Wert in Spalte, dann kopiere bestimmte Zellen: Hallo zusammen Ich versuche einen Planer zu erstellen. Dazu müsste ich folgende Formel/ Makro erstellen, kann dies jedoch mit meinen Excelkünsten nicht: Falls der Wert in Spalte "A" "1" hat,...
  7. Zeile kopieren um einen bestimmten Wert

    in Microsoft Excel Hilfe
    Zeile kopieren um einen bestimmten Wert: Hallo, kann mir jemand weiterhelfen? Ich möchte eine Zelle mittels "ziehen" automatisch kopieren und dabei immer um einen bestimmten Wert erhöhen. (siehe Screenshot) kann mir hier jemand...
  8. Wenn in Zeile bestimmter Wert dann ganze Zeile in anderes Tabellen Blatt Kopieren.

    in Microsoft Excel Hilfe
    Wenn in Zeile bestimmter Wert dann ganze Zeile in anderes Tabellen Blatt Kopieren.: Hallo, habe zwei Probleme wo ihr mir sicher helfen könnt: 1) Wenn in Zelle A2 ein bestimmter Wert steht (PWM), dann soll die ganze Zeile in ein extra dafür angelegtes Tabellen Blatt (PWM)...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden