Select-Methode des Worksheet-Klasse ist Fehlgeschlagen
Ich habe diese sub in Excel 2010 soll filter durch alle Zellen in einem Blatt, bis es eine übereinstimmung findet, Proj Nein, dann fügen Sie ein Feld aus dieser Zeile in ein anderes Feld.
Wenn ich versuche, führen Sie das sub, es gibt mir eine Fehlermeldung 1004: die Select-Methode des Worksheet-Klasse ist Fehlgeschlagen. Ich ' ve markiert die Linie, wo dies der Fall ist. Jegliche Hilfe würde sehr geschätzt werden.
Option Explicit
Private Sub btnNext_Click()
Dim ProjNo As String
Dim Col As String
Dim Row As String
Dim cell As Range
Unload Dialog
formWait.Show
Sheets("Sheet7").Activate
ProjNo = Worksheets("Sheet1").Range("D6").Value
Col = Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In Range("A2:A" & Col)
If cell.Value = ProjNo Then
Row = Row & cell.Row
End If
Next cell
Workbooks("Form.xlsm").Sheets("Sheet7").Range("Row, 6").Copy Destination:=Sheets("Sheet1").Range("19, 5") ‘Error
Unload formWait
End Sub
Wie es aussieht, sind die Angabe der
Auch dies ist eine großartige Gelegenheit, umgestalten von code zu meiden mit
Es gab mir einen compile-Fehler auf .Blätter so entfernte ich die Periode aber ich bekomme immer noch den gleichen Fehler.
.Range
falsch. Versuchen .Range(.Sheets("Sheet7").Cells(Row, 6))
keine Doppel-Anführungszeichen-funktioniert das?Auch dies ist eine großartige Gelegenheit, umgestalten von code zu meiden mit
.Active
und .Select
, die gemeinsamen Quellen der run-time-Fehler. Hier ist ALSO das maßgebliche schreiben-up auf, wie beides zu vermeiden: stackoverflow.com/questions/10714251/...Es gab mir einen compile-Fehler auf .Blätter so entfernte ich die Periode aber ich bekomme immer noch den gleichen Fehler.
InformationsquelleAutor AxxieD | 2014-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, was
GWP
ist, aber ich denke, dass Sie verwenden möchtenProjNo
es. Die Range-Eigenschaft nicht akzeptieren ein argument wie, dass. Es sei denn, Sie haben einen benannten Bereich der "Zeile 6", die du nicht, weil es nicht eine juristische Bezeichnung, die Sie zu liefern haben, Bereich mit eine gültige Referenz, wie A6 oder D2:D12, zum Beispiel.Können, können Sie auch nicht verketten von Zeilen und verwenden Sie Sie in einer Reihe Referenz, um zu bekommen eine größere Reichweite. Sie kopieren müsste jede Zeile innerhalb der Schleife union in den Bereichen, wie Sie gehen, oder noch besser, die filter auf den Wert, den Sie möchten, und kopieren Sie die sichtbaren Zeilen.
Versuchen Sie dies:
+1 clevere Nutzung der
.Autofilter
hierSie wurden kopieren
Range("Row, 6")
und F ist der sechste Spalte, so nehme ich Sie wollte. Sie müssen ändern Sie die "6" in der AutoFilter-Zeile, um sicherzustellen, Sie bekommen alle Daten. Ändern Sie dann die Taste F2, um beliebige Spalte, die Sie möchten. Dann ändern Sie die "6" in der Copy-Zeile entsprechend der Spalte, die Sie ändern Sie die F2-Taste. Oder könnten Sie mir sagen, was Daten, die Sie wollen, und ich werde den code Bearbeiten.InformationsquelleAutor Dick Kusleika
Gibt es ein paar verwirrende Elemente in deinem code oben, also wollte ich Sie lang-Formular hier. Los geht ' s:
Es sieht aus wie Ihre design erwartet, dass diese Art
Long
eher als TypString
. Auch wenn diese Variablen gemeint waren, Streicher, würde ich empfehlen, die Anpassung Ihrer Namen-wenn Ihre Kollegen die Entwickler versucht, überprüfen Sie Ihren Entwurf, er oder Sie ist wahrscheinlich, um zu sehen, Namen wie "Col" oder "Zeile" und denken "das sind zahlen". Easy fix:Die nächste Frage kommt hier:
Die Struktur oben ist eine gemeinsame Methode für die Ermittlung der letzten ZEILE, nicht Spalte. (Es wird auch angezeigt, dass Sie eingeschaltet haben, das "A" und die Nummer, die ist ein weiterer leicht zu beheben). Während es vollkommen akzeptabel, syntaktisch, um den Namen der variable für die Letzte Zeile "Col", menschlichen Benutzer werden wahrscheinlich feststellen, diese verwirrende. Die Ermittlung der letzten Zeile (und die Letzte Spalte, die Sie verwenden in der
For Each
loop), wie beschrieben in der fantastischen Details hier, würde besser behandelt werden wie diese:Diese sollten Ihre
For Each
Schleife so Aussehen:Nachdem Sie ermittelt haben, Ihr Blatt als eine variable, die
Range.Copy
Aktion sehr viel einfacher sein sollte:Hat ein Blatt mit dem Namen "Sheet7" definitiv vorhanden ist? Ich habe diesen Fehler gemacht, viele Male zuvor
Es ist definitiv nicht vorhanden.
Könnte Sie aktualisieren die Frage mit der genauen code, den Sie jetzt laufen? Dieser Fehler ist sehr neugierig...
Eigentlich wollte ich zu geben Dick ' s Methode versuchen und, dass man nicht geben, den Fehler zu finden. (Aber es funktioniert immer noch nicht quiiiite wie ich es will...)
InformationsquelleAutor Dan Wagner
Auch eine andere Sache, möchten Sie vielleicht zu prüfen, ist der status der Anwendung.ScreenUpdating.
Mit der Veröffentlichung von Office 2013 und später eine SDI (Single Document Interface) eingeführt wurde. Wenn Die Anwendung.ScreenUpdating False ist und die Arbeitsmappe nicht aktiv ist, wird der implizite Aufruf der Arbeitsmappe.Aktivieren schlägt fehl. Überprüfen Sie den status des ScreenUpdating und setzen Sie ihn auf True, wenn nötig. Sie können diese Einstellung wieder auf False nach der ersten Aktivieren, rufen Sie für diese Arbeitsmappe aus.
Siehe dieser Artikel:
https://support.microsoft.com/en-us/help/3083825/excel-workbook-is-not-activated-when-you-run-a-macro-that-calls-the-wo
InformationsquelleAutor GrumpyWithBill
In meinem Fall der Fehler kam als dem Blatt versteckt war.
also ich überprüfen, wenn ich nicht die Arbeit mit dem ausgeblendeten Blatt. Oder müssen Sie zum einblenden der Platte, bevor Sie versuchen, zu wählen oder zu aktivieren Blatt.
InformationsquelleAutor SUNIL KUMAR