Sub oder Function nicht definiert
Als Autodidakt habe ich nicht gelernt, was es zu wissen gibt über Excel-VBA. Die Hölle, um ehrlich zu sein, ich weiß, einige Grundlagen, aber nicht so viel wie ich sollte wohl, so dass diese Frage wohl eine Allgemeine grundlegende Frage, sollte wohl bekannt sein, jemand, der weiß, VBA, aber in dem Fall ich lernen, was ich brauche, um vorwärts zu bewegen... also brauche ich eine Erklärung.
Wenn Sie brauchen, um zu definieren, eine Sub oder Funktion? Warum brauchen Sie, um zu definieren, eine Sub oder Funktion? Was ist der Zweck der Definition einer Sub oder Funktion?
Ich Frage nur, weil dieses:
Option Explicit
Sub OpenOrderReportExport()
Dim wsJL As Worksheet 'Jobs List
Dim wsPOT As Worksheet 'PO Tracking
Dim wsTNO As Worksheet 'Tel-Nexx OOR
Dim wbBK2 As Workbook 'New Workbook
Dim wsWS1 As Worksheet 'Sheet1
Dim wsWS2 As Worksheet 'Sheet2
Dim wsWS3 As Worksheet 'Sheet3
Set wsJL = Sheets("Jobs List") 'Jobs List
Set wsPOT = Sheets("PO Tracking") 'PO Tracking
Set wsTNO = Sheets("Tel-Nexx OOR") 'Tel-Nexx OOR
Set wbBK2 = Workbook("Book2") 'New Workbook
Set wsWS1 = Sheets("Sheet1") 'Sheet1
Set wsWS2 = Sheets("Sheet2") 'Sheet2
Set wsWS3 = Sheets("Sheet3") 'Sheet3
Application.ScreenUpdating = False ' Prevents screen refreshing.
CurrentFile = ThisWorkbook.FullName
NewFileType = "Excel Files 2007 (*.xlsx)"
NewFile = Application.GetSaveAsFilename(InitialFileName:="Open Order Log - " & Format(Date, "dd-mm-yyyy") & ".txt", fileFilter:=NewFileType)
End Sub
Warum dieser sub definiert werden müssen? Ich sage es wie ein standard-Modul, und arbeitet an der Einrichtung, so dass-sobald eine Taste gedrückt wird, werde ich in der Lage sein, sich zu bewegen, ein paar Blätter in eine neue Arbeitsmappe zu löschen, die leer sind, und gehen von dort aus mit einer save-Funktion, die Sie erzählen, wo Sie zu speichern.
Ich habe einen langen Weg zu gehen, aber ich wollte die Funktion "speichern", und gehen von dort aus, weil mir das wird das schwierigste sein.
Also ohne die Lösung meines ganzen Rätsel, ich würde gerne wissen, warum so etwas wie dies definiert werden muss? Und wie es definiert werden muss... wenn jemand könnte eine Antwort geben, die es sehr geschätzt werden.
- Es klingt wie Sie eine Fehlermeldung, die besagt, dass der Sub oder Funktion nicht definiert ist. Diese Art von Fehler bedeutet, dass der Anruf, den Sie aus einer subroutine oder einer Funktion ist derzeit nicht im Modul definiert - im Grunde ist es nicht vorhanden. Meine Vermutung auf immer, wo Sie die Fehler in der Anwendung.GetSaveAsFilename.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen sind Missverständnisse das problem.
Den folgenden code-Zeile ist falsch. Ist es nicht eine neue Arbeitsmappe erstellen, wie Sie denken, es tut. Die Funktion
Workbook
nicht existieren, wenn Sie versuchen, Sie auszuführen/kompilieren des VBA-editor meckert, dass die Funktion nicht vorhanden ist.Ändern
und es wird eine neue Arbeitsmappe erstellen und speichern Sie einen Verweis in
wbBK2
. Alternativ kann die Referenz auf eine geöffnete Arbeitsmappe durch hinzufügen eines "s" zuWorkbook
wenn Sie nicht versuchen, einen neuen zu machen:Müssen Sie zudem die dimension, die diese Variablen als strings schließlich:
Einer anderen Anmerkung, auch wenn Sie
Werden Sie wahrscheinlich wollen, um dies zu ändern, verweisen die Blätter in der anderen Arbeitsmappe
da es Recht hilfreich sein, Recht behalten, Verweise auf diese Blätter, auch wenn Sie zusätzliche Arbeitsmappen.
Set wbBK2 = Workbook("Book2")
Dein post dreht sich alles um die folgenden Fragen so lassen Sie mich erklären Ihnen eins nach dem anderen.
IHRE FRAGEN
VBA Unterstützt zwei Arten von Prozeduren: Sub-Prozeduren und Function-Prozeduren.
Einen Sub-Prozedur besteht aus Reihe von Anweisungen und ausgeführt werden können, in eine Reihe von Möglichkeiten, zum Beispiel
oder
Einen VBA - Funktion auf der anderen Seite einen einzelnen Wert zurückgibt, oder möglicherweise ein array. Eine Funktion kann aufgerufen werden aus einem anderen VBA-Prozedur oder in einem Arbeitsblatt Formel. Zum Beispiel
Die gleiche Funktion kann auch aufgerufen werden in einem Arbeitsblatt. Zum Beispiel von Zelle A1 hat
Matt Ridge
und wenn Sie diese Formel in Zelle B1Erhalten Sie
Hello Matt Ridge
in Zelle B1. Siehe unten im snapshot.Nun suchen Sie in Ihren code.
Wenn Sie sagen,
Dann VBA erwartet, dass Sie die variable entsprechend als enderland erwähnt. In Ihrem Fall, VBA ist auf der Suche nach
WORKBOOKS()
die eine eingebaute Methode. Allerdings, wenn VBA siehtWORKBOOK()
die es nicht erkennen, es versucht zu finden, dieSUB PROCEDURE
im Modul (in der Hoffnung, dass Sie möglicherweise definiert haben, es irgendwo) und wenn Sie dort nicht gefunden, es erscheint dieser Fehler. 🙂Hoffe, dies beantwortet Ihre Fragen.
Das problem, das Sie haben ist, dass Sie areb mit der OPTION AUSDRÜCKLICHEN, was bedeutet, alle Variablen mst definiert werden.
Ein Weg, dies zu erreichen und machen den code schöner und lesbarer ist die Verwendung von Doppelpunkt als Linie contiuation, wenn Sie zuerst definieren, und legen Sie das Objekt:
Beispiel Unten: