2016-03-27 14 views
1

Ich renne in einen Fehler (Laufzeitfehler '1004': anwendungsdefinierte oder objektdefinierte Fehler) beim Versuch, meine erste Excel-VBA-Makro zu schreiben. Ich habe ähnliche Fragen zu Stack-Überlauf und anderen Websites behandelt, aber mein Problem scheint grundlegender zu sein als Probleme, die andere haben.So extrahieren Sie Spalte aus Zelle (Excel, VBA)

Derzeit versuche ich, die Daten aus zwei Zellen aus einem Blatt zu nehmen und sie auf ein anderes Blatt zu schreiben. Ich verstehe, dass der Versuch, die Spalte oder Zeile einer Zelle zu finden, die ich nach Zelle oder Zeile referenziere, unnötig ist, aber schließlich werde ich for-Schleifen verwenden und die spezifischen Zellenreferenzen durch Variablen ersetzen.

Hier sind die beiden Codezeilen, die ich habe:

Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Range("A" & Worksheets("Sheet1").Range("B2").Row).Value 
Worksheets("Sheet2").Range("B1").Value = Worksheets("Sheet1").Range(Worksheets("Sheet1").Range("B2").Column & "1").Value 

Die erste Zeile fein läuft. Es schreibt Sheet1s A2 auf Sheet2s A1. Die zweite Zeile wird nicht ausgeführt, schreibt B1 von Sheet1 nicht in B1 von Sheet2, verweist auf den Fehler, und ich bin nicht sicher, warum.

Vielen Dank für Ihre Zeit und Hilfe!

Antwort

2

Die .Columns-Eigenschaft gibt eine Ganzzahl und keinen Buchstaben zurück. Verwenden Sie die Range.Cells property, wenn Sie einen Bereich mit einer numerischen Zeile und einer numerischen Spalte definieren möchten.

Worksheets("Sheet2").Range("B1").Value = Worksheets("Sheet1").Cells(1, Range("B2").Column).Value 

Ich nehme an, es gibt einen größeren Zweck, aber wie es sitzt, ist es sehr ausführlichen Code.

+0

Vielen Dank! Das hat funktioniert. – SeanM

0

Ihre letzten Zeilen aus Ihrer Frage sagen, dass Sie Sheet2-A1 mit Sheet1-A2 und Sheet2-B1 mit Sheet1-B1

der direkteste Weg ist

Worksheets("Sheet2").Range("A1") = Worksheets("Sheet1").Range("A2") 
Worksheets("Sheet2").Range("B1") = Worksheets("Sheet1").Range("B1") 
0

Ich bin ein füllen wollen Anfänger bei VBA genau wie du. Sie müssen nicht alles in VBA wissen, um es produktiv zu nutzen. Ich machte mein erstes Makro, indem ich es AUFZEICHTE, und es funktionierte (war aber hoffnungslos ineffizient).

hatte ich ein Problem ähnlich wie bei Ihnen: Daten auf einem anderen Arbeitsblatt aufzublicken. Ich habe die folgende Funktion:

Funktion GetMyNumber (C3ll) MyCol = C3ll.Column GetMyNumber = MyCol End Function

Um es in einer Tabelle zu verwenden, geben Sie einfach die Formel in eine Zelle, wie D5,

= GetMyNumber (D5)

Wenn Sie die Nummer 4 erscheint in Zelle D5 neu berechnen. Wenn Sie Zelle D5 in Zelle F3 kopieren, sehen Sie in der Formel 3, = GetMyNumber (F3) und berechnen einen 6. Natürlich zurückkehren, können Sie füllen nach unten oder wird das Argument für die Zelle die Formel geändert wird. Und Wenn Sie möchten, können Sie mit einem Argument, das sich auf eine beliebige Zelle bezieht, versetzen.

Sobald Sie diese Arbeit zu erhalten, können Sie den Code einfügen zu tun, Sie passende und andere Aufgaben, die Nutzung Ihrer Spaltennummer MyCol machen die Nummer aus dem anderen Arbeitsblatt zu extrahieren. Denken Sie daran, MyCol ist eine ganze Zahl.

hofft, dass dies hilft.

Verwandte Themen