Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zahlen in Zelle nebendran kopieren

Betrifft: Zahlen in Zelle nebendran kopieren von: Nastja Kremel
Geschrieben am: 13.08.2014 10:52:43

Hallo Leute,

folgendes Problem.
Hier eine Beispieldatei: www.herber.de/bbs/user/92069.xlsx

Eigentlich soll lediglich beim Ausführen des Makros die Zahlen von K34-K36 in P34-P36 kopiert werden und in P38 das Datum vom Ausführen des Makros geschrieben werden.

Bei jeder weiteren Ausführung des Makros sollen weiterhin die Zahlen von K34-K36 kopiert werden, jetzt nur nicht wie vorher in P34-P36 & Schreiben des Datum in P38 sondern immer eins nebendran. Also in Q34-Q36 und Datum in Q38.

Danke im Voraus.

  

Betrifft: in einer .xlsx ist kein Makro... owT von: robert
Geschrieben am: 13.08.2014 11:17:39




  

Betrifft: AW: in einer .xlsx ist kein Makro... owT von: Nastja Kremel
Geschrieben am: 13.08.2014 13:36:29

Ja ich weiß. Das soll auch nur ein Beispiel sein, um das Makro dort zu implementieren.


  

Betrifft: vielleicht geht es so. von: Tino
Geschrieben am: 13.08.2014 18:32:01

Hallo,
hier mal ein Code zum testen.
(Datei als xls oder xlsm speichern wegen VBA)

Sub Beispiel()
Dim rngCopy As Range
Dim lngCol&

With Tabelle1 'Tabelle anpassen
    If .Cells(33, .Columns.Count) <> "" Then
        MsgBox "keine Spalte mehr frei"
        Exit Sub
    End If
    lngCol = .Cells(33, .Columns.Count).End(xlToLeft).Column + 1
    'wenn nächste < Spalte P dann Spalte P
    If lngCol < 16 Then lngCol = 16
    'Bereich der kopiert werden soll
    Set rngCopy = .Range("K34:K36")
    'kopieren
    rngCopy.Copy .Cells(34, lngCol)
    'Datum eintragen
    .Cells(33, lngCol) = Date
End With
End Sub
Gruß Tino


  

Betrifft: AW: vielleicht geht es so. von: Kremel
Geschrieben am: 14.08.2014 19:17:46

Vielen Dank Tino, funktioniert optimal.
Jetzt nur noch 2 kleine Sachen:

1. Anstatt des Datumformates TT.MM.YYYY soll nur der Monat und das jahr angezeigt werden. (Also: August 14, September 14 ....)

2. Das Ausführen des Makros soll nur funktionieren, wenn bisher noch keine Werte aus dem aktuellen Monat kopiert worden sind. Sprich: Wenn ich das Makro jetzt ausführe, soll als Datum August 2014 und darunter die kopierten Werte erscheinen. Wenn ich das Makro dannach nochmal ausführe, soll nichts geschehen, da die Werte für August schon übertragen worden sind. Erst ab September darf es wieder funktionieren usw. Im Endeffekt soll einfach verhindert werden, dass der gleiche Monat nochmal erscheint.


  

Betrifft: AW: vielleicht geht es so. von: Kremel
Geschrieben am: 18.08.2014 01:46:53

Keiner ne Ahnung??


  

Betrifft: AW: vielleicht geht es so. von: Kremel
Geschrieben am: 18.08.2014 01:54:41

hier nochmal die aktuellste Version:

https://www.herber.de/bbs/user/92163.xlsm


  

Betrifft: AW: vielleicht geht es so. von: fcs
Geschrieben am: 18.08.2014 14:22:32

Hallo Nastja,

mit den folgenden Anpassungen (Datumsprüfung und Formatierung der Datumszelle) sollte es wie gewünscht funktionieren.


Gruß
Franz

Sub Beispiel()
  Dim rngCopy As Range
  Dim lngCol&, Datum As Date
  
  With Tabelle1 'Tabelle anpassen
      If .Cells(33, .Columns.Count) <> "" Then
          MsgBox "keine Spalte mehr frei"
          Exit Sub
      End If
      lngCol = .Cells(33, .Columns.Count).End(xlToLeft).Column + 1
      'wenn nächste < Spalte P dann Spalte P
      If lngCol < 16 Then lngCol = 16
      If lngCol > 16 Then Datum = .Cells(33, lngCol - 1)
      If Month(Date) = Month(Datum) Then
        MsgBox "Daten wurden in diesem Monat schon kopiert"
      Else
        'Bereich der kopiert werden soll
        Set rngCopy = .Range("K34:K36")
        'kopieren
        rngCopy.Copy .Cells(34, lngCol)
        'Datum eintragen
        With .Cells(33, lngCol)
          .NumberFormat = "MMMM YY"
          .Value = Date
        End With
      End If
  End With
End Sub



  

Betrifft: AW: vielleicht geht es so. von: Nastja Kremel
Geschrieben am: 18.08.2014 15:38:52

Hallo Franz,

vielen Dank. es klappt super!!!! Nun noch ne letzte Frage. Habe total vergessen, dass sich die zu kopierenden Werte aus einer ZÄHLENWENN Funktion ergeben. Dadurch werden wahrscheinlich beim Ausführen des Makros nicht die richtigen Werte übertragen bzw. alles Nuller.

Ist es möglich dies noch zu beheben?

Hier die aktuellste Version https://www.herber.de/bbs/user/92174.xlsm


  

Betrifft: AW: vielleicht geht es so. von: fcs
Geschrieben am: 19.08.2014 10:55:54

Hallo Nastja,

dann muss man beim Kopieren nur Formate und Werte einfügen.

Gruß
Franz

Sub Beispiel()
  Dim rngCopy As Range
  Dim lngCol&, Datum As Date
  
  With Tabelle1 'Tabelle anpassen
      If .Cells(33, .Columns.Count) <> "" Then
          MsgBox "keine Spalte mehr frei"
          Exit Sub
      End If
      lngCol = .Cells(33, .Columns.Count).End(xlToLeft).Column + 1
      'wenn nächste < Spalte P dann Spalte P
      If lngCol < 16 Then lngCol = 16
      If lngCol > 16 Then Datum = .Cells(33, lngCol - 1)
      If Month(Date) = Month(Datum) Then
        MsgBox "Daten wurden in diesem Monat schon kopiert"
      Else
        'Bereich der kopiert werden soll
        Set rngCopy = .Range("K34:K36")
        'kopieren
        rngCopy.Copy
        With .Cells(34, lngCol)
          .PasteSpecial Paste:=xlPasteFormats
          .PasteSpecial Paste:=xlPasteValues
        End With
        Application.CutCopyMode = False
        'Datum eintragen
        With .Cells(33, lngCol)
          .NumberFormat = "MMMM YY"
          .Value = Date
        End With
      End If
  End With
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Zahlen in Zelle nebendran kopieren"