Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Clipboard aus variable befüllen, dann PasteSpecial

Clipboard aus variable befüllen, dann PasteSpecial
Cossy
Hallo Forumswelt,
nach langem suchen in den Weiten des Netzes find ich eine Antwort nicht.
Im Kaufm.Bereich gibts ab und an den Anlass, einen odere mehrere Werte mit -1 zu multiplizieren.
Um das mit einem Knopf zu erledigen, hab ich folgendes Makro gebaut:
Sub WertMalMinusEins()
Dim Bereich As Range
Set Bereich = ActiveSheet.Range(Selection.Address)
Application.ScreenUpdating = False
Range("IU65536").Select
ActiveCell.FormulaR1C1 = "-1"
Range("IU65536").Select
Selection.Copy
Bereich.Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
Range("IU65536").ClearContents
Application.ScreenUpdating = True
End Sub
Das geht auch wunderbar, nur eleganter wäre es, das Clipboard aus VBA mit der -1 zu füllen und dann den PasteSpecial-Befehl auszuführen.
Ich habs mit PutInClipboard versucht, dann geht aber der PasteSpecial-Befehl nimma.
In allen Beispielen der Netzwelt wird bei sowas aber auch immer der Wert einer Zelle kopiert und dann damit multipliziert.
Kann man das Clipboard nicht "rechenfähig" aus VBA befüllen?
Grüße und Danke,
Cossy

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Clipboard aus variable befüllen, dann PasteSpecial
20.05.2011 15:34:52
Tino
Hallo,
mit der Zwischenablage kann ich Dir auch nicht helfen.
Kannst aber mal dies versuchen.
Sub WertMalMinusEins()
Dim meArray(), n&, nn&

With Selection
    If .Cells.Count > 1 Then
        meArray = .Value2
        For n = 1 To Ubound(meArray)
            For nn = 1 To Ubound(meArray, 2)
                If IsNumeric(meArray(n, nn)) Then _
                meArray(n, nn) = meArray(n, nn) * -1
            Next nn
        Next
        .Cells = meArray
    Else
        If IsNumeric(.Value) Then _
            .Value = .Value * -1
    End If
End With

End Sub
Gruß Tino
Anzeige
AW: Clipboard aus variable befüllen, dann PasteSpecial
20.05.2011 16:00:42
Cossy
Hi Tino,
Merci Dir für die Antwort, eine ähnliche Idee hatte ich, als ich den ersten Beitrag verfasste.
Das geht auch wunderbar in einem durchgängig markierten Block, nur bei markierten Einzelzellen geht es nicht
"13"-"Typen unverträglich" :-(
Greets,
Cossy
AW: Clipboard aus variable befüllen, dann PasteSpecial
20.05.2011 16:09:11
Tino
Hallo,
kann man auch machen, gehen wir die Bereiche einzeln durch.
Sub WertMalMinusEins()
Dim meArray(), rngRange As Range, n&, nn&

Set rngRange = Selection
For Each rngRange In rngRange.Areas
    With rngRange
        If .Cells.Count > 1 Then
            meArray = .Value2
            For n = 1 To Ubound(meArray)
                For nn = 1 To Ubound(meArray, 2)
                    If IsNumeric(meArray(n, nn)) Then _
                    meArray(n, nn) = meArray(n, nn) * -1
                Next nn
            Next
            .Cells = meArray
        Else
            If IsNumeric(.Value) Then _
                .Value = .Value * -1
        End If
    End With
Next rngRange
End Sub
Gruß Tino
Anzeige
AW: Clipboard aus variable befüllen, dann PasteSpecial
20.05.2011 16:17:44
Cossy
Perfekt!
Boahh, ganz schön schnell.
Super, Merci vielmals,
Grüße,
Cossy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige