VBA | Wie Kopiere Wert aus Zelle zu Zelle in Excel
Möchte ich kopieren Sie einen Zellenwert in eine andere Zelle, aber ich möchte Sie behalten den Wert in eine variable damit ich ihn benutzen kann wie pro Anforderung.
Folgenden ist der code, den ich versucht-
Private Sub CommandButton1_Click()
NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
For x = 1 To NumRows
a= Cells(x, 1).Value.Copy
Cells(x, 2).Value= a.PasteSpecial
Next
End Sub
Was hat der code tun, anstatt zu arbeiten, wie Sie es wollten?
CodeJockey die Antwort richtig ist, sollte Sie nur kopieren müssen Sie den Wert in der Zelle. Zur Erfüllung Ihrer zusätzlichen Anforderung, dass der Wert in einer variable gespeichert werden, ersetzen Sie einfach
Wie ist dann die variable ein im nachfolgendem code. In meinem code Cells(x, 2).Value=ein.PasteSpecial funktionieren nicht wie erwartet.
Ah, dein Problem ist der Umfang. Die variable wird zerstört, nachdem Sie verlassen Sie dieses Untermenü. Sie müssen erklären, wie eine Öffentliche Variable außerhalb der sub für sichtbar anderswo. Geben Sie Einfach
CodeJockey die Antwort richtig ist, sollte Sie nur kopieren müssen Sie den Wert in der Zelle. Zur Erfüllung Ihrer zusätzlichen Anforderung, dass der Wert in einer variable gespeichert werden, ersetzen Sie einfach
a = Cells(x, 1).Value.Copy
mit a = Cells(x, 2).Value
wie in CodeJockey Antwort.Wie ist dann die variable ein im nachfolgendem code. In meinem code Cells(x, 2).Value=ein.PasteSpecial funktionieren nicht wie erwartet.
Ah, dein Problem ist der Umfang. Die variable wird zerstört, nachdem Sie verlassen Sie dieses Untermenü. Sie müssen erklären, wie eine Öffentliche Variable außerhalb der sub für sichtbar anderswo. Geben Sie Einfach
Public a As Variant
Oben Private Sub CommandButton1_Click
. Beachten Sie, dass Sie nur speichern den letzten Wert von a in der Schleife. Siehe meine Antwort für das erstellen eines Arrays.a
ist ein zwei-dimensionales array. Die Methode PasteSpecial
existiert nicht für ein array. Siehe @CodeJockey die Antwort für wie man es richtig machen.InformationsquelleAutor Nitin Jadhav | 2014-05-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Keine Notwendigkeit, die
Range.Copy
Methode. Versuchen Sie dies:Wenn Sie möchten, behalten Sie ALLE Werte, die Sie benötigen, um ein array zu verwenden:
Ich auch empfehlen, explizite Deklaration von Variablen. Es finden sich in Ihren Optionen oder durch Eingabe
Option Explicit
GANZ oben, über allen subs oder Funktionen. Dieser wird Sie zwingen, sich zu erklären, Ihre Variablen. Ich weiß, es fühlt sich wie eine Bürde als ein newbee, aber es dauert nur ein Tippfehler immer deklariert eine neue variable, Ihre Meinung zu ändern.Statt der Schleife, kann auch nur tun:
a = Range("A1").Resize(NumRows,1).Value
und dannRange("A1").Offset(0,1).Resize(NumRows,1).Value = a
.InformationsquelleAutor CodeJockey
Wenn Sie wollen einfach nur pass-Range-Wert zu array, keine Notwendigkeit, um eine Schleife.
Probieren Sie etwas wie dieses:
Nun, wenn Sie wollen, verwenden Sie die variable
a
nach Ausführung von code, nur deklarieren Sie Sie außerhalb der sub so:Nun, Sie brauchen, um einen test, ob die variable
a
leer ist oder nicht, du wirst überschreiben, es und besiegen Ihren Zweck.Eine einfache überprüfung, wie das funktionieren sollte:
Hoffe, es hilft.
InformationsquelleAutor L42
Zuerst, ich schlage vor, Sie verwenden die Makro Aufzeichnen-Anlage auf den Entwickler-Band. Achten Sie auf "Verwenden Sie Relative Bezüge" auf, und notieren Sie die Maus, Klicks und Tastatureingaben von einer iteration von dem, was Sie machen möchten (Kopie von A1 bis B1). Öffnen Sie dann das makro in VB, und ändern Sie es.
Dies ist, was ich bekam, als ich nach diesem Ansatz, und es scheint zu funktionieren für mich. Ich hoffe, es funktioniert auch für Sie.
InformationsquelleAutor user3516774