Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
VBA "copy-paste" funktioniert nicht
#1
Hallo zusammen,
vorab sage ich gleich mal dass ich mich mit VBA nicht so gut auskenne.
Ich habe eine Datei mit mehreren Sheets ( die im Aufbau identisch sind), in denen haufenweise Formeln sind. Diese gehören täglich  in Werte umgewandelt, da sich die Dateien, aus deren die Formeln ihre Daten beziehen, laufend ändern.
Bis jetzt waren es 4 Sheets und das Makro lief einwandfrei.
Jetzt ist ein 5. Sheet dazu gekommen ( "KB"). Der Vorgang ist laut VBA der selbe, aber bei der Ausführung wird im 5. Sheet etwas anderes in einem anderen Bereich gemacht.
Hat hierfür jemand eine Erklärung?

Danke schon mal vorab für eure Hilfe
Gruß Michael


[font=Arial, sans-serif]    Sheets("M51").Select[/font]
[font=Arial, sans-serif]    Dim zelle As Range[/font]
[font=Arial, sans-serif]    Dim mySelection As Range[/font]
[font=Arial, sans-serif]    Set mySelection = Selection[/font]
[font=Arial, sans-serif]    Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260)).Select[/font]
[font=Arial, sans-serif]    Selection.Copy[/font]
[font=Arial, sans-serif]    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _[/font]
[font=Arial, sans-serif]        :=False, Transpose:=False[/font]
[font=Arial, sans-serif]    ActiveSheet.Range("$A$1:$JA$2915").AutoFilter Field:=1, Criteria1:="="[/font]
[font=Arial, sans-serif]       [/font]
[font=Arial, sans-serif]    Sheets("M6").Select[/font]
[font=Arial, sans-serif]    Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260)).Select[/font]
[font=Arial, sans-serif]    Selection.Copy[/font]
[font=Arial, sans-serif]    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _[/font]
[font=Arial, sans-serif]        :=False, Transpose:=False[/font]
[font=Arial, sans-serif]    ActiveSheet.Range("$A$1:$IZ$2853").AutoFilter Field:=1, Criteria1:="="[/font]
[font=Arial, sans-serif]   [/font]
[font=Arial, sans-serif]    Sheets("M7").Select[/font]
[font=Arial, sans-serif]     Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260)).Select[/font]
[font=Arial, sans-serif]    Selection.Copy[/font]
[font=Arial, sans-serif]    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _[/font]
[font=Arial, sans-serif]        :=False, Transpose:=False[/font]
[font=Arial, sans-serif]    ActiveSheet.Range("$A$1:$JA$2853").AutoFilter Field:=1, Criteria1:="="[/font]
[font=Arial, sans-serif]   [/font]
[font=Arial, sans-serif]    Sheets("M8").Select[/font]
[font=Arial, sans-serif]     Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260)).Select[/font]
[font=Arial, sans-serif]    Selection.Copy[/font]
[font=Arial, sans-serif]    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _[/font]
[font=Arial, sans-serif]        :=False, Transpose:=False[/font]
[font=Arial, sans-serif]    ActiveSheet.Range("$A$1:$IZ$2853").AutoFilter Field:=1, Criteria1:="="[/font]
[font=Arial, sans-serif]   [/font]
[font=Arial, sans-serif]     Sheets("KB").Select[/font]
[font=Arial, sans-serif]    Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260)).Select[/font]
[font=Arial, sans-serif]    Selection.Copy[/font]
[font=Arial, sans-serif]    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _[/font]
[font=Arial, sans-serif]        :=False, Transpose:=False[/font]
[font=Arial, sans-serif]    ActiveSheet.Range("$A$1:$JA$2853").AutoFilter Field:=1, Criteria1:="="[/font]
Zitieren
#2
Hallo,



um die Formeln inPlace gegen die Werte zu tauschen, reicht schon ...

Code:
With Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260))
    .Value = .Value
End With

[font=Arial, sans-serif]Sabina[/font]
Zitieren
#3
Hallo Sabina,

vielen Dank für deine schnelle Hilfe.
Ich bin jetzt dazu gekommen das zu ändern.

Ich habe die Zeilen so eingefügt wie du geschrieben hast:

With Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260))
    .Value = .Value
End With


Leider hat das Makro keinen Wert umgewandelt, es bleiben die Formeln in den Feldern.
Da ich mir das nicht erklären kann, hier das komplette Teil:


  msg = MsgBox("Ist der richtige Tag (Heute) auf M5 makiert? Sind die Angaben der LW/PA-Aufstellung in Ordnung?", vbYesNo)
    If msg = vbNo Then
    Exit Sub
    Else
   
   
   
    Application.DisplayAlerts = False
   
    ActiveWorkbook.SaveAs Filename:= _
        "S:\..." _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
   
    Application.DisplayAlerts = True
   
    Application.ScreenUpdating = False
   
   
    Sheets("M51").Select
    ActiveSheet.Range("$A$1:$JB$3861").AutoFilter Field:=1
    Sheets("M6").Select
    ActiveSheet.Range("$A$1:$IZ$3405").AutoFilter Field:=1
    ActiveWindow.SmallScroll Down:=3
    Sheets("M7").Select
    ActiveSheet.Range("$A$1:$JB$3405").AutoFilter Field:=1
    Sheets("M8").Select
    ActiveSheet.Range("$A$1:$IZ$4413").AutoFilter Field:=1
    Sheets("KB").Select
    ActiveSheet.Range("$A$1:$IZ$4413").AutoFilter Field:=1
   
   
   
   
    Sheets("M51").Select
    Dim zelle As Range
    Dim mySelection As Range
    Set mySelection = Selection
    With Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260))
    .Value = .Value
    End With
    ActiveSheet.Range("$A$1:$JA$2915").AutoFilter Field:=1, Criteria1:="="
       
    Sheets("M6").Select
    With Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260))
    .Value = .Value
    End With
    ActiveSheet.Range("$A$1:$IZ$2853").AutoFilter Field:=1, Criteria1:="="
   
    Sheets("M7").Select
  With Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260))
    .Value = .Value
    End With
    ActiveSheet.Range("$A$1:$JA$2853").AutoFilter Field:=1, Criteria1:="="
   
    Sheets("M8").Select
    With Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260))
    .Value = .Value
    End With
    ActiveSheet.Range("$A$1:$IZ$2853").AutoFilter Field:=1, Criteria1:="="
   
    Sheets("KB").Select
  With Range(Cells(mySelection.Row + 91, mySelection.Column - 15), Cells(mySelection.Row + 91, mySelection.Column + 260))
    .Value = .Value
    End With
    ActiveSheet.Range("$A$1:$JA$2853").AutoFilter Field:=1, Criteria1:="="

   
    Sheets("Daten").Select

    Application.ScreenUpdating = True
   
    ActiveWorkbook.Save
   
  End If
 
    msg = MsgBox("Tag in Werte umgewandelt", vbOKOnly)
End Sub
Zitieren


Gehe zu:


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




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions