Transkripte
1. Einführung – Aktualisiert: Hey allerseits. Lassen Sie mich also mit einer
rhetorischen Frage beginnen, nämlich
warum sollte ich mir die Zeit nehmen, Excel-Makros oder VBA zu
lernen
, nämlich nur der Name
der
Programmiersprache , in der
Makros geschrieben werden. Für. Sehr schneller Hintergrund zu mir selbst, ich habe über 11 Jahre
daran gearbeitet, benutzerdefinierte Softwaretools zu
erstellen, aber der Ort, an dem
ich 2021 gearbeitet
habe, wurde ich
Vollzeit-freiberuflicher Entwickler aber der Ort, an dem
ich 2021 gearbeitet
habe, wurde ich
Vollzeit-freiberuflicher Entwickler und erstellte Tools zur
Automatisierung und Effizienz für eine Reihe
verschiedener Arten von Unternehmen, was ich jetzt immer noch beruflich
mache. Neben der Exzellenz in VBA habe ich viel Erfahrung und andere
Programmiersprachen wie Python, C-Sharp, Java und sogar einige Erfahrung
in der Webentwicklung. So zum Beispiel JavaScript. Aber bei weitem habe ich die meiste
Zeit in Excel und VBA verbracht. Und das liegt daran, dass es eines
der universellsten Tools in fast jedem
Unternehmen von groß bis klein
verwendet werden. Und die Realität ist, wenn ich
nach freiberuflicher Arbeit suche, gibt
es viele Jobs. Sie haben wahrscheinlich
auf dieses Video geklickt, weil Sie mit Excel zumindest ein wenig
vertraut sind. Da es von
so vielen Unternehmen verwendet wird, bedeutet
das normalerweise,
dass es sowohl für
Entwickler als auch für Benutzer
fast kein Setup erfordert . Solange Sie Excel installiert
haben, können Sie normalerweise loslegen. Die Makroautomatisierungstools und VBA-Entwicklungsumgebung
sind direkt darin integriert. Ein Projekt auf
den Weg zu bringen ist normalerweise so einfach wie das Teilen einer
Datei mit jemandem. Für viele Leute sind die
Grundlagen, wie man
um diese Datei klickt , bereits
mit ihnen vertraut. In Ihrem Job arbeiten Sie und Ihre
Mitarbeiter möglicherweise
sogar jeden Tag in
Excel. also ziemlich nahtlos, eine Automatisierung auf
Ihren Prozessen zu erstellen ist also ziemlich nahtlos, eine Automatisierung auf
Ihren Prozessen zu erstellen, die Sie jetzt
haben. Und Sie können
natürlich immer noch
völlig neue Tools
komplett von Grund auf neu herstellen . Aber wenn die Person
es benutzt, sie bereits die Vertrautheit auf
Basisebene , die es ihnen viel
einfacher macht, sich an das neue Tool zu
gewöhnen und den Umfang des
Trainings
zu reduzieren , das sie benötigen komfortabel mit
dem neuen Prozess. Vba ist auch viel
leistungsfähiger für ein Tool, das die
meisten Leute vielleicht denken. Es automatisiert nicht nur Excel, was wir
meistens wissen, wenn es vier ist, sondern es kann auch fast jeden
Aspekt Ihres Computers steuern und automatisieren. Also viel davon wirst du in dieser Klasse
sehen. Wenn ich Ihre Aufmerksamkeit behalten
konnte, lassen Sie mich die
Klasse ein wenig beschreiben. Ich habe diesen Kurs zuerst speziell für Leute bewertet, die in ihrem Leben
noch nie ein
Makro oder eine einzige Codezeile
geschrieben hatten noch nie ein
Makro oder eine einzige Codezeile
geschrieben . Das ist immer noch hier
, denn dort beginnen
wir mit dem Unterricht. Aber ich habe beschlossen, diese Klasse weiter
zu erweitern. Es gibt also Inhalte, die vom
absoluten Anfänger
bis zum Fortgeschrittenen reichen , bis hin zu
hochentwickelten. Also werde ich versuchen, dies zu einer lebenden Klasse zu
machen,
was bedeutet, dass ich
ständig
Inhalte und Videos hinzufüge ,
um
die Klasse weiter zu verbessern und sie als Kurs zu verbessern, der
dich von absoluter Anfänger bis hin zur professionellen
fortgeschrittenen VBA-Programmierung. Und wenn Sie nur an Programmierung
interessiert sind und vielleicht auf
andere Dinge als Makros und BBA eingehen
möchten. Ich denke, dies ist eine großartige
Einführung, um viele der
Konzepte einzubringen , die
auf andere Programmiersprachen übertragbar
sind . Wenn das der Weg ist, den
Sie fortsetzen möchten, muss
ich zugeben, dass einige
der Aufnahmen hier ersten
sind, die ich
je von mir aufgenommen habe. Einige von ihnen stammen also von vor über
einem Jahr zu diesem Zeitpunkt. Hoffentlich werden Sie sehen
, dass die Ton- und Videoqualität auf dem Laufenden
etwas besser wird. Also verzeih mir für
die Groben. Wenn Sie dazwischen auf
irgendetwas stoßen. Außerdem ist der Kurs so eingerichtet , dass
Sie je nachdem,
was für Sie am besten ist, von
Video zu Video
herumspringen von
Video zu Video
herumspringen können. Die allgemeine Struktur
der Klasse besteht darin, dass die frühen
Videos
spezifische Konzepte demonstrieren , die später zu
den Bausteinen für
die voll funktionsfähigen
Prozesse werden den Bausteinen für . Diese konzentrieren sich also mehr
auf bestimmte Themen. Dann werden
wir Ihnen die späteren Videos folgen lassen,
während ich zum Beispiel
Projekte erstelle, die Sie in Ihrem Unternehmen
nützlich finden könnten , oder
als großartige Demonstration
der Bausteinkonzepte
das wir vorhin gezeigt haben. Zum Beispiel ist das Projekt
und die Veröffentlichung
derzeit eine Anwendung
, die
eine Reihe von Aspekten
des Angebotsprozesses für
fast jedes Unternehmen automatisieren kann eine Reihe von Aspekten
des Angebotsprozesses für ,
das ist wichtig für mich, dass ich jeden einzelnen Schritt des Prozesses ohne jegliche
Art von Infomercialstil
zeige, ein
paar Stunden voraus
ständiger Schnellvorlauf, so
dass
Sie einfach verwirrt darüber sind,
was in dieser Lücke von Zeit. Ich zeige hier
jedes Detail. Und Sie können einfach den
Schnellvorlauf verwenden, wenn Sie möchten, was
mit diesem Videoformat schön und einfach ist. Selbst von hier aus würde ich empfehlen, dass
Sie sich durch
die Videos bewegen , die nur
einen Blick auf die Inhalte hier werfen. Wenn Sie also weiter zu
den Projekten gehen, erhalten
Sie einen Hinweis auf die Art
des Inhalts, den wir behandeln werden. Und dann kannst du von dort aus
entscheiden, wo du anfangen möchtest oder ob du an
verschiedene Stellen springen
und dich zu diesen
fortgeschritteneren Videos
hocharbeiten möchtest verschiedene Stellen springen
und dich zu diesen
fortgeschritteneren Videos
hocharbeiten . Vor allem, wenn
Sie vielleicht
darauf eingehen und bereits
einen kleinen Hintergrund haben und die frühen Videos
etwas zu einfach für Sie sind. Sie können gegen Ende
zu
fortgeschritteneren Projekten vorankommen . Und damit hoffe ich, dass
Ihnen diese Tutorials gefallen. Zögern Sie nicht,
mir Nachrichten, Kommentare
oder Bewertungen zu hinterlassen . Ich weiß Ihre
Zeit sehr zu schätzen, diese Videos anzusehen. Oder wenn du sie nicht siehst, schätze
ich die Zeit du dir genommen hast, um im Intro überhaupt
so weit zu kommen. Also danke und viel Spaß.
2. Developer zeigen: Wie Sie beginnen, zusammen mit diesem Tutorial fallen und ziehen Sie Excel auf Ihrem eigenen Computer. Möglicherweise stellen Sie fest, dass Sie hier keinen Entwickler-Tab haben, wie ich es auf meinem Bildschirm zeige. Das liegt daran, dass die Entwickler-Registerkarte standardmäßig ausgeblendet ist. Um die Registerkarte „Entwickler“ einblenden. Gehen Sie zur Datei, hier unten zu den Optionen in der unteren linken Menüleiste anpassen. Und dann hier auf der rechten Seite, Sie möchten die Registerkarte Entwickler überprüfen, wenn sie deaktiviert ist, und klicken Sie dann auf OK. Und dann sollten Sie jetzt Ihre Entwickler-Tab sehen, die Ihnen alle diese Tools zeigt, die Sie verwenden werden, um Ihre Makros zu erstellen.
3. Makros aufzeichnen: Ich möchte euch zeigen, wie man die Funktion Makro aufnehmen benutzt. Und das ist in Excel integriert und es ist etwas, das ich viel
verwendet habe , als ich anfing, mit Makros zu arbeiten. Wenn Sie nach oben links kommen, sehen
Sie diesen Makro-Button. Sie können darauf klicken. Und dann erscheint dieses Forum und es fragt Sie nach geben Sie einen Namen für das Makro, das Sie aufzeichnen. Wir werden es Beispiel Makro nennen und klicken Sie auf OK. Und Sie sehen, dass diese Schaltfläche oben links ändert, um die Aufnahme zu stoppen, was bedeutet, dass Sie gerade aufnehmen. Und das ist genau das, was los ist. Was auch immer ich in meiner Tabelle hier mache, wird aufgezeichnet, einschließlich Klick auf diese zufälligen Zellen. Sie werden sehen, dass das tatsächlich aufgezeichnet wird und Sie später wiedergegeben werden würden. Ich werde hier etwas ganz Einfaches erschaffen. Also lassen Sie uns sagen, ich mache einfach etwas wie markieren diese Zellen und ich möchte eine hohe Nachricht schreiben. Und dann wurde alles aufgezeichnet, was ich hier gemacht habe. Also, wenn ich zurück zu meinem Entwickler-Tab, es hat immer noch die Schaltfläche Aufnahme stoppen, was bedeutet, dass wir noch aufnehmen, Ich kann auf Stopp klicken. Also, wenn ich hierher komme, hebt ich diese Zellen hervor. Ich werde rückgängig machen, was ich hier getan habe, weil wir die Aufnahme wiedergeben werden. Wenn ich zu meiner Registerkarte „Entwickler“ gehe, klicke ich auf Makros. Das zeigt mir die Liste der Makros, die ich zur Verfügung habe. Und so Beispiel Makro ist derjenige, den wir es aufzeichnen, Ich werde auf Ausführen klicken. Und da gehst du. Sie sehen, dass es nur die Aktionen wiedergegeben hat, die wir aufgenommen haben. Es gibt ein wirklich einfaches Beispiel dafür, wie Sie eine Liste von Aktionen ausführen und sie wiedergeben und mit einem Klick auf eine Schaltfläche ausführen können. Und in diesem Fall nicht wirklich eine Taste, aber ich kann Ihnen zeigen, wie das zu tun. Also kann ich hierher kommen, um Liste einfügen. Hier habe ich eine Reihe von Komponenten für Formulare. Und die, die ich hier verwenden werde, ist die Tastensteuerung. Und ich werde darauf klicken. Und ich kann hier einfach einen Knopf ziehen und ablegen. Wenn Sie mich fragen, welches Makro ich mit dieser Schaltfläche ausführen möchte, erstelle
ich ein schnelles Beispielmakro. Klicken Sie auf OK. Ich kann den Text hier ändern. Und wenn ich das nochmals lösche, klicke auf, sag hallo. Sie können sehen, dass das Makro ausgeführt wird. Und ich werde das einfach noch mal tun. Wir werden ein anderes Makro aufzeichnen, das
dies löscht, so dass ich nicht manuell tun muss, dass dies nur als Makro belassen
wird, für die wir aufzeichnen. Ich habe die Aufnahme aufgehört. Ich gehe zum Einfügen, erstelle eine andere Schaltfläche, ziehe sie, lasse es Makro für ausführen. Und da, ja, jetzt hast du zwei Knöpfe. Eine, die hallo sagt, und eine zweite, die IT löscht.
4. XLSM speichern: Ich habe dieses grundlegende Makro hier gemacht, wo Sie auf den Sagen
Hi-Knopf klicken und es in all diesen Zellen schattiert, so dass es Ihnen eine hohe Nachricht gibt. Und dann, wenn Sie auf „Gruß löschen“ klicken, wird
es nur klar, dass für Sie. So können Sie das hin und her verwenden. Und dann habe ich jetzt meine Datei und ich möchte diese Datei speichern. Wenn ich hier oben links gehe und auf die Schaltfläche Speichern klicke, sehe
ich diese Nachricht hier. Und es sagt mir im Grunde, dass ich diese Datei als XLS-Dateityp speichere. Und so ist das die Standardeinstellung für eine Excel -Datei. Sie können das hier oben in den Header sehen. Es sagt mir im Grunde, dass dies ein makrofreier Arbeitsmappen-Dateityp ist, was bedeutet, dass wenn Sie es so speichern,
das Makro, das ich erstellt habe, nicht gespeichert wird Wenn ich hier auf Ja klicke, ich das
nächste Mal diese Datei öffne, das Makro, das ich erstellt habe, wird weg sein. Also werde ich das nicht tun. Ich werde hier rüber kommen. Ich klicke auf „Nein“. Also wird es mich hierher zum Save as Menü bringen. Also, wenn ich hierher zu diesem Dropdown komme, kann
ich darauf klicken und ein Excel-Makro Aktivierte Arbeitsmappe oder einen XLS-Dateityp auswählen. Ich klicke auf „Speichern“. Ich bekomme diese Fehlermeldung nicht. Und das ist ein Dateityp, der, wenn ich diese Datei wieder aufbringe, oder Makros werden immer noch hier drin sein.
5. Deinen Code ansehen: Im letzten Video gingen wir über die Record Makro Funktion hier oben links,
Sie fragen sich vielleicht, wohin der Code gehen, den wir aufgenommen haben. Wie kann ich das bearbeiten, wenn ich wollte. Und so können wir sehen, dass Makro ist, und gehen Sie hier nach oben zu Makros. Sie können sehen Beispiel Makro ist, was wir aufgezeichnet. Wenn Sie auf Bearbeiten klicken, gelangen Sie zum Code-Editor, damit Sie sehen können, was wir hier aufgezeichnet haben. Ich klickte in die K4-Zelle. Ich habe die Hintergrundfarbe dieser Zelle in Schwarz geändert. Ich fing an, diese Zelle zu kopieren und einzufügen, bis ich diese hohe Botschaft hier drüben gemacht habe. Ein anderer Weg, den ich zum Code hätte gehen können, ist nur hierher zu
Visual Basic zu kommen , das auch diesen Code-Editor öffnet. Und dann kann ich hier durch navigieren, sobald ich hier bin. Und dann ist der dritte Weg, den ich normalerweise zu meinem Makrocode komme, wenn Sie eine Schaltfläche markieren und ein Trick hier ist, wenn ich auf diese Schaltfläche klicke, ich werde nicht nur die Schaltfläche hervorheben. Ich werde das Makro ausführen. Und da ich das Makro nicht ausführen möchte, möchte
ich nur die Schaltfläche markieren. Ich klicke mit der rechten Maustaste darauf und klicke dann aus diesem Kontextmenü heraus. Und dann sind nun die Schaltflächen hervorgehoben, ohne das Makro auszuführen. Sobald diese Schaltfläche hervorgehoben ist, kann
ich hierher kommen, um Code anzuzeigen. Und das wird mich direkt zu dem Code bringen, den der Button ausführen würde. Und hier sind Sie am Beispiel Makro. Und ich zeige Ihnen noch einmal, wenn ich gehe, um den Gruß zu löschen, Go to View Code. Diese Schaltfläche würde Makro für ausführen. Und so gibt es ein paar Möglichkeiten, wie Sie direkt zum Code Ihres Makros gelangen können.
6. VBA Editor Nachrichtenbox: Nun, da wir direkt auf den Code-Editor für unsere Makros schauen, kann
ich Ihnen zeigen, dass die Struktur für jedes Makro in diese Subroutinen geschrieben ist. Wenn ich also ein Apostroph-Zeichen verwende, kann
ich hier einen Kommentar hinterlassen. Makro-Code geht hier. Es hebt grün hervor und zeigt Ihnen, dass es sich um einen Kommentar handelt, und es ist kein Code, der tatsächlich ausgeführt wird, wenn Sie
diesen Code abspielen , der hier in der Sprache namens Visual Basic für Anwendungen geschrieben ist. Und Sie können hier oben sehen, dieses Windows namens Microsoft Visual Basic für Anwendungen, in der Regel Leute bezeichnen es als VBA kurz, VBA. Wenn es also etwas gibt, das Sie nicht wissen, wie zu tun ist, ist
der einfachste Weg, es zu tun, einfach zu Google zu gehen. Und ich mache das die ganze Zeit, sogar für Dinge, die ich 100 Mal gemacht habe. Und Sie beginnen mit der Eingabe und VBA, und dann, was auch immer Sie tun möchten. Und wenn ich das VBA-Meldungsfeld eintippe, können
Sie immer den ersten Link ausprobieren. Und Sie werden sehen, dass Sie leicht die Code-Notation für alles finden können, was Sie tun möchten. Manche Dinge brauchen etwas länger, um die Antwort zu finden. Aber für einfache Aufgaben wie diese, Google Lösungen die ganze Zeit, nur weil ich mich nicht die Notation jedes einzelnen Befehls hier
einpräge. Also hier wollen wir nachschlagen, wie man ein Nachrichtenfeld erstellt. Sie sehen, dass diese Notation genau hier ist. Wir werden nur darauf vertrauen, dass es hier rüber geht, tippen Sie das hier ein. Und wenn ich dieses Makro ausführen wollte, kann
ich dies tun, indem ich hier zu diesem Play-Button komme und darauf klicke. Du gehst, du hast das Nachrichtenfeld. Ich klicke auf OK. Ich werde das hervorheben. Ich mache noch eine Zeile. Ändern Sie diese beiden. Hier ist noch ein Nachrichtenfeld. Und eine andere Sache, die Sie tun können, ist, anstatt hierher zu kommen und Play zu drücken, ich kann diese eine Zeile nach dem anderen laufen und ich kann das mit der FAA-Taste tun. Wenn ich also F8 drücke, siehst du dieses gelbe Pfeil-Pop-up, das mir sagt, dass ich Linie soll, die gerade läuft. Während ich laufe, wird dieses erste Meldungsfeld angezeigt. Ich klicke hier auf OK, es bringt mich zurück und dann kann ich das nächste Nachrichtenfeld ausführen. Und dann der nächste Schritt, das Makro abgeschlossen sein. Etwas anderes, das ich hier übergehen wollte, ist, dass Sie bemerken, dass das Beispielmakro in dieser Notation
geschrieben wird , wo es Unterbeispielmakro,
öffne und schließe Klammern
und dann n sub sagt öffne und schließe Klammern . Und das ist die Notation hier, weil jedes Makro im Wesentlichen eine Unterroutine ist. Und dieser Editor wird das automatisch für Sie in gewisser Weise behandeln. Also, wenn ich ein anderes Makro erstellen wollte und ich Sub-Beispiel-Makro eingeben, wenn ich einfach Enter drücke. Sie können sehen, dass es automatisch erstellt die Notation für Sie Lage sein, Code und andere Makros direkt hier in zu sein.
7. Cell: Wenn wir Makros erstellen, werden
wir wollen, dass es mit unserer Tabelle interagiert. Was Sie also haben könnten, ist eine Grundform. Sagen wir, es sieht in etwa so aus. Wir wollen, dass unser Makrocode in der Lage ist, mit dieser Tabelle zu interagieren. Und wenn ich hierher komme, habe ich diese Nachrichtenbox. Ich kann ändern, was in diesem Meldungsfeld steht. Wenn ich es ausführe, wird es sagen, was ich hier geschrieben habe, ich klicke auf OK. Ich will meinen Namen Steve hier drüben in die Nachrichtenbox stecken. Die Frage ist also, wie soll ich das machen? Ich kann dieses kaufmännische Und-Zeichen verwenden, um zwei Strings miteinander zu kombinieren. Und so habe ich den Text, Mein Name ist auf der linken Seite, und ich möchte den Wert dieser Zelle hier drüben bekommen, und diese Zelle ist dazwischen. Dann kann ich das tun, indem ich die Bereichsfunktion verwende. Und das Bereichsobjekt ist im Grunde eine Zelle oder eine Gruppe von Zellen. Und hier in den Klammern ist der Name des Bereichs. Und du wirst hier sehen, nachdem ich den Bereich getippt
habe, kann ich die Periode treffen. Und dann zeigt mir das dieses Menü mit
all den verschiedenen Eigenschaften, die das Bereichsobjekt hat. Und es gibt eine Tonne von ihnen hier drin. Und der, den ich verwenden möchte, ist Wert und du siehst, dass es hinunterspringt. Und das zeigt mir, dass der Wert eine gültige Eigenschaft ist, die existiert. Wenn ich hier rauswähle, haben
wir unser Nachrichtenfeld aktualisiert. Es wird also den Wert der Zelle B2 annehmen. Wenn ich das durchführe. Da gehst du. Da steht, mein Name ist Steve. Eine andere Sache, die ich Ihnen zeigen sollte, ist, wenn ich auf diese Wiedergabe-Schaltfläche klicke, wird
es das Makro ausführen, in dem mein Cursor hervorgehoben ist. Wenn ich also aus diesem Subroutine klicke und dann auf Play klicke, kann ich sehen, welches Makro ich ausführen möchte. Im Moment haben wir nur eines, aber wenn ich eine Liste von 100 Makros hätte, kann
es nicht herausfinden, welches wir ausführen wollten, weil unser Cursor nicht in einem bestimmten saß.
8. Eine Zelle benennen: Hier drüben auf der rechten Seite haben wir dieses grundlegende Makro, das wir erstellt haben. Es wird nur ein Meldungsfeld anzeigen, das besagt, dass mein Name ist. Und dann verweist es auf die Zelle mit dem Namen B zehn. Und das ist hier drüben. Und klicken Sie auf Abspielen. Und da ist die Nachrichtenbox. Also eine Sache, die ich euch zeigen möchte, und das ist etwas, das ich wünschte, ich wüsste, als ich anfing,
Makros zu erstellen, weil es meinen Code viel besser und viel einfacher zu aktualisieren, ist die Fähigkeit, uns einen bestimmten Namen zu geben anders als seine Standardeinstellung btn. Und das Problem, wenn Sie die Zelle als Referenz auf BY
Zehn verlassen , besteht darin, dass sich
diese Zelle während der Entwicklung dieser Datei überall bewegen kann. Und zum Beispiel, wenn ich hier einige Zellen hinzugefügt und eine neue Zeile hinzufüge, ist
das jetzt BY 13, aber mein Code hier drüben sagt immer noch B zehn. Und wenn ich das mache, wird
es nicht mehr funktionieren. Und wie löse ich das Problem? Wie kann das gelöst werden, indem man dieser Zelle einen Namen gibt. Der schnellste Weg für mich, das zu tun, ist eine Zelle auszuwählen. Es heißt 13 sein. Im Moment kann
ich hier oben links rauf kommen und es einfach ändern. Ich ändere diese Zelle, um Name genannt zu werden. Ich habe Enter gedrückt, es hat sich gerade registriert. Und wenn ich in die Zelle klicke, sehen Sie, anstatt zu sagen, dass 13, es heißt Name. Diese anderen Zellen, die keine Namen haben, sagen immer noch ihre ursprüngliche Adresse. Aber jetzt, wenn ich hier zu meinem Code gehe und ich meinen Bereichsnamen geändert habe, um Name genannt zu werden. Ich weiß, dass ich das jetzt so verwirrend wie möglich mache. Ich kann diesen Code ausführen. Es wird den Zellbezug kennen. Aber wenn sich diese Zelle bewegt und ich ein paar Zeilen schnappte, lösche
ich sie, werde ich das ausführen. Und da gehst du, es funktioniert immer noch. Und das liegt daran, wenn ich zu dieser Zelle zurückkomme, als ich diese Zeilen löschte, wusste
es, dass diese Zelle Name genannt wird und sie sich mit ihrer Referenz bewegt. Und ich kann all diese benannten Zellen sehen. Wenn ich hier rüber bei den Formeln gehe, mache
ich das für dich größer und gehe zu einem Namensmanager. Ich kann alle Bereiche sehen, die ich in dieser Tabelle benannt habe. Und so hier können Sie wieder sehen, verwirrend
wie möglich, Der Name dieser Zelle ist Name. Und hier steht, dass es sich auf Blatt 1 bezieht, Zelle B21. Und im Moment haben wir nur einen. Aber wenn Sie viele verschiedene Zellen haben, die Namen gegeben wurden, würden
Sie sie alle hier aufgelistet sehen.
9. Einen Ordner erstelle: Ich werde euch zeigen, wie man ein Makro benutzt, um einen Ordner zu erstellen. Und ich denke, dies ist ein großartiges Beispiel dafür, wie Sie
Makros als etwas betrachten können , das Ihre Tabellenkalkulation automatisiert. jedoch ein Makro verwenden, können
Sie Dinge tun, die Sie sonst in Excel nicht tun würden. So etwas wie durch Ihren Datei-Explorer gehen und einen Ordner erstellen. Also werde ich hier rüber zu meinem Code-Editor auf der rechten Seite kommen, ich werde eine neue Subroutine starten. Und ich kann hier meinen Makronamen eingeben. Wenn Sie die Eingabetaste drücken, wird automatisch ein Ende Ihrer Subroutine erstellt. Ich kann diesen Ordner erstellen benennen. Und jetzt möchte ich eine Codezeile hinzufügen, um einen Ordner erstellen zu können. Und die Funktion Ordner erstellen ist MKDIR. Und Sie können hier sehen, wenn ich die Klammern öffne,
es zeigt mir zuerst, dass es diese Funktion erkennt, was eine gute Sache ist. Das bedeutet also, dass es tatsächlich existiert. Und es sagt mir, dass das, was es innerhalb seiner Parameter
innerhalb der Klammern nach der Funktion akzeptiert , eine Zeichenfolge ist und diese Zeichenfolge der Pfad ist. Und so ist das im Grunde die Adresse des Ordners, den wir erstellen möchten. Also das erste, was ich tun will, ist, diese Funktion auszuprobieren. Und ich habe hier bereits einen Ordner erstellt. Es ist im C-Laufwerk. Es heißt C Drive Beispiel, und das ist, wo wir Kunst schaffen wollen. Wenn ich hier wieder in den Code-Editor klicke, taucht nur dieser Fehler auf, der mir sagt, dass dies keine gültige Codezeile ist. Natürlich ist es das nicht. Es liegt daran, dass wir das Fenster mit der Codezeile halb geschrieben verlassen haben. Ich klicke auf OK. Ich werde wieder darauf zurückkommen. Es ist eine Schnur, also werden wir sie in Zitate setzen. Wir werden C-Drive-Beispiel schreiben. Das ist, wo wir unseren Ordner und unseren neuen Ordnernamen wollen wir Test nennen, wird dieses Zitat schließen, die Klammern schließen. Und wir werden das ausprobieren. Schlag auf Spiel. Und da du gehst, siehst du einen neuen Ordner, der namens test erstellt wurde. Als nächstes werden wir ein Konzept aus unserem vorherigen Video kombinieren in dem wir einen Ordner erstellen können, der auf den Inhalten basiert, die in unserer Tabellenkalkulation enthalten sind. Also hier drüben in unserem Tabellenkalkulationsblatt, hatte
ich das schon geschrieben. Ich habe diese Zelle. Es nennt sich Ordnernamen. Hier drin. Hier steht Ordner eins. Ich kann diesen Zellenordner eins benennen. Wenn ich hierher zu dieser Zeichenfolge komme, kann
ich ein kaufmännisches Und-Zeichen verwenden, um eine Zeichenfolge miteinander zu kombinieren. Und ich möchte Bereichsordner einen Punktwert hinzufügen. Und jetzt, wenn ich einen Ordnerpfad erstelle, wird
der Pfad das alles zusammen sein. Also C Drive Beispiel, und dann der Wert des Bereichsordners eins
, der gerade jetzt nur Ordner sagt. Und wenn ich hier rüber gehe, klicke
ich in dieses Makro und führe den Code aus. Ich komme zurück zu meinem Beispielordner und sie gehen, wir haben einen anderen Ordner namens Ordner eins. Sie sehen, es gibt hier ein Leerzeichen, das der Inhalt dieser Zelle ist.
10. Debugging für Error: In unserem anderen Video
haben wir dieses schnelle Makro zusammengeworfen, wo, wenn ich das rechts überführe, es einen Ordner erstellen wird, der auf dem basiert, was ich in dieser Zelle hier geschrieben habe, die Folder 1 genannt wird. Ich möchte euch zeigen, was passiert, wenn ein Fehler im Makro vorliegt. Und was ich weiß, wird hier passieren. Wenn ich das erneut ausführe, wird
es einen Fehler geben, da es versuchen wird, einen Ordner im
Pfad C Laufwerk Beispielordner an einem Ende zu erstellen , da wir dieses Makro bereits ausgeführt haben. Ich weiß, dass es dort schon einen Ordner mit diesem Namen gibt. Und so werden wir ein Problem haben, bei dem es nicht einen
anderen Ordner mit dem gleichen Namen erstellen möchte , weil er ihn nicht überschreiben kann. Und so werde ich spielen laufen. Und Sie sehen, dass diese Fehlermeldung aufgetaucht ist. Und es sagt Ihnen, der Fehler, den wir haben, ist Pfaddateizugriffsfehler, Laufzeitfehler 75. Ich weiß zufällig, was das bedeutet, und wir wussten bereits, dass das passieren wird. Und der Achsenfehler liegt daran der Ordner aufgrund eines bereits vorhandenen Ordners
nicht erstellt werden kann. Nun, wenn Sie nicht wussten, was das bedeutete, wenn es eine andere Ära war und Sie nicht sicher waren, was los war, könnten
Sie diesen Laufzeitfehlercode immer nehmen. Ich werde das einfach packen, ich gebe es in Google ein und ich werde
den Ausdruck VBA bis zum Anfang der Anweisung setzen . Und Sie werden normalerweise eine Art von Diskussion oder
Ergebnisse darüber finden , was die Ursache für diesen Fehler sein könnte. Und dann als nächstes, wenn Sie auf den Fehler selbst zurückkommen, haben
Sie zwei Tasten hier wirklich, die Sie verwenden werden. Wenn du Ende triffst, wird es einfach aufhören, wenn es versucht, es zu tun. Aber wenn Sie Debug drücken, wird
es Sie zu der Codezeile bringen, die den Fehler verursacht hat. Und das hier ist schön und einfach, weil es nur eine Codezeile gibt. Und so wussten wir natürlich, dass dies die Ursache für den Fehler war. Wenn Sie jedoch ein Makro mit Hunderten von Codezeilen hätten, würden Sie
dies direkt zu der Zeile führen, die den Fehler verursacht und gelb hervorgehoben hat. Eine andere gute Sache, hier zu wissen, und ich werde dies größer machen, ist, wenn Sie zu diesem Bildschirm kommen, werden
Sie sehen, dass dies bricht, und das bedeutet, dass dies im Run-Modus ist, wenn Sie einen gelben Pfeil hier haben, das bedeutet, dass dies live und es versucht, ein Makro
auszuführen, oder es ist gerade dabei, es auszuführen. Wenn Sie auf Abspielen klicken, wird Ihr Makro von dort aus fortgesetzt, wo sich der gelbe Pfeil befindet. Wenn ich also auf Play klicke, wird
dies weiterhin ausgeführt. Es hat immer noch einen Fehler hier und ich werde Ende treffen. Und so sehen Sie, dass die Pause verschwunden ist, und das bedeutet, dass es jetzt nicht mehr versucht, ein Makro auszuführen. Also kann ich das besser veranschaulichen. Ich werde die Debug-Drucknachricht hier setzen, eins. Und dann, auf der anderen Seite der Aussage, werde
ich diese unquotierte Nachricht auch hier greifen. Und wenn ich auf Ausführen klicke, erhalten wir den Fehler erneut. Ich habe Debug getroffen. Und Sie können sehen, dass wir hier auf dieser Linie sind, wo der Fehler ist. Wenn ich debug gebe, geben Sie eine Nachricht ein. Sie können sehen, dass es hier unten angezeigt wird, wenn es diese
Codezeile in einem so genannten unmittelbaren Fenster ausführt . Und wenn ich also auf Stopp klicke und das dann erneut ausführe, wird
es genau dasselbe tun, wird diese erste Codezeile ausführen, der zweiten Codezeile
stecken bleiben und da ist Ihre Nachricht. Wenn ich dieses Problem , kann ich hierher kommen. Ich werde diesen Ordner nehmen, ich werde ihn löschen. Jetzt. Wenn ich weiter renne, werde
ich weiter von dieser Linie laufen. Wir werden hier keine Nachricht eins sehen. Der Ordner wird erfolgreich erstellt und dann werden wir nur Nachricht zwei sehen. Und da gehst du hin. Und diese Nachrichten nur den Stift nach unten. Sie sahen also eine Nachricht, die hier auftaucht. Wir haben den Fehler nicht erhalten, da es keine Konflikte mehr gab und vorhandene Ordner. Und es gibt wieder einen Ordner.
11. Daten schreiben in Zelle: In einem anderen Video
habe ich euch gezeigt, wie man Text aus eurer Tabellenkalkulation nimmt und ihn in eurem Makro benutzt. Die gegenüberliegende Seite,
die ich Ihnen zeigen möchte, ist, wie Sie
Ihr Makro verwenden und dann etwas zurück in Ihre Tabellenkalkulation schreiben. Also kann ich das tun. Wenn ich einen Bereich nehme und alles nehmen kann, nenne
ich es zehn. Und sagen, Punktwert gleich setzen Text in btn. Und das werde ich in Anführungszeichen setzen. Und ich leite das. Da gehst du. Es ist so einfach, mit Ihrem Makro besteuert in
Ihre Tabellenkalkulation zu schreiben und einige Konzepte wieder zu kombinieren, können
Sie eine Zelle greifen. Ich habe das in einem anderen Video gezeigt. Sie können es anrufen, rufen wir dieses Telefon an. Und wenn ich hierher komme, kann
ich die Reichweite zu Telefon wechseln. Und wenn ich das leite, dann gehst du. Und legen Sie den Wert in Ihre Telefonreferenzzelle.
12. Variablen: Was ich euch vorhin gezeigt habe, ist, wie man Informationen aus der Tabelle referenziert. Also genau hier habe ich dieses Beispielmakro. Wenn ich darauf klicke, zeigt es mir ein Meldungsfeld an und es nimmt den Wert der Zelle B1 von hier aus. Als nächstes möchte ich Ihnen unsere Variablen zeigen, die Sie direkt in Ihrem VBA-Code verwenden können. Denn manchmal möchten Sie keine Informationen aus Ihrer Tabellenkalkulation abrufen. Es gibt Informationen, die Sie nur in Ihrem Code behandeln möchten. Also komm ich hierher, erstelle eine neue Linie. Wir werden das aufräumen. Bezeichnung, um eine Variable zu erstellen, ist dim, variabel eins. Wie wir dies machen werden, ist
ein String-Typ String im Grunde Text. Und jetzt, da ich diese Variable deklariert habe, kann ich sie jetzt verwenden. Und ich kann Variable eins gleich unterschiedlichem Text hier eingeben. Und es ist jetzt überall, wo ich diese Variable verwende, man wird auf die Zeichenfolge verweisen, die wir sie hier deklariert haben. Also komm ich hier rüber zu unserem Nachrichtenkasten. Ich kann diesen Verweis ändern, der sich
jetzt direkt auf unsere Tabellenkalkulation bezieht, die Zelle B1. Ich werde das in Variable eins ändern. Und wenn ich das ausführe, erscheint das andere Meldungsfeld mit dem Wert unserer Variablen.
13. Grundlegende Math: Und unser anderes Video haben wir Ihnen gezeigt, dass Sie eine Variable erstellen können. Ich deklariere es zuerst mit dieser DEM-Variable als String. Und dann können Sie dieser Variablen einen Wert zuweisen, und dann können Sie diese Variable verwenden. In diesem Fall legen wir es in ein Textfeld. Und wenn wir diese Variable ausführen, ist
man hier ein anderer Text. Ein anderer Variablentyp außer einer Zeichenfolge, die Sie sehr oft verwenden werden, sind Zahlen. Sehr oft verwenden Sie ganze Zahlen, bei denen es sich um Zahlen ohne Dezimalstellen handelt. So können wir dies in eine ganze Zahl ändern. Und da wir Variable 1 deklariert haben, ist
hier eine ganze Zahl , wo wir ihm einen Text zuweisen, der nicht funktionieren wird. Und wenn wir das ausführen, sehen
Sie, dass wir einen Fehler haben. Es ist ein Typ-Missverhältnis. Und das liegt daran, dass wir eine Zeichenfolge zuweisen, eine Variable, die ein ganzzahliger Typ ist. Und drücken Sie Debug, es zeigt Ihnen die Zeile, die schief gelaufen ist. Wir werden einfach aufhören, das hier zu laufen. Ich werde Variable einen Wert in eins ändern. Ich werde eine neue Ganzzahl erstellen. Und das nennt man Ergebnis. Und wir können hier ein paar extrem grundlegende Mathe machen. Ergebnis ist gleich Variable 1 plus Variable Eins. Das Ergebnis ist das Ergebnis. Wir machen das hier. Und da gehen wir hin. Wir haben eine Variable erstellt, ihr eine Zahl
zugewiesen, etwas Mathematik gemacht. Und hier ist das Ergebnis.
14. 1.12.2 Ganzzahl vs. Long: Dies sollte ein kurzes Video sein. Und dieses möchte ich Ihnen nur den Unterschied zwischen
den Variablentypen Integer
und dem
zeigen den Variablentypen Integer , was ich jetzt
häufiger verwende, was der Unterschied zwischen
dem Variablentyp Integer
und einer Variablen ist typ. Ich setze das neue hier so lange
ein. Im letzten Video
haben wir uns mit
den ganz grundlegenden Ideen von
Variablen vertraut den ganz grundlegenden Ideen von gemacht und
etwas damit gemacht. Und ich habe eine ganze Zahl benutzt. Aber oft wirst du sehen, dass ich eine ähnliche Idee wie
die ganze Zahl
verwende, aber stattdessen
verwende ich den langen Variablentyp. Und das ist etwas, das
sehr spezifisch für VBA ist. Wenn Sie in andere
Programmiersprachen einsteigen oder bereits mit ihnen
vertraut sind, wissen
Sie, dass ganze Zahlen
extrem häufig sind. Und es wird ständig benutzt. Es ist im Grunde eine ganze Zahl. Aber eine Eigenart bei
Ganzzahlen in VBA ist , dass sie nur
Werte zwischen, hier sind die genauen Zahlen, aber im Grunde
negative 32 Tausend bis positive 32 Tausend. Also werde ich
das hier einfach sehr schnell demonstrieren. Wenn ich diese Zelle hier drüben mache, 32 Tausend,
vermisse ich hier eine 0. Und dann habe ich diesen
sehr einfachen Code , in dem ich
ich als Ganzzahl einstelle und dann I als
Wert in Zelle A1 einstelle. Wir stellen ich ein und
drucken es dann hier aus. Jetzt funktioniert das gut. Aber wenn ich hierher komme, mach
einfach diese 33 Tausend, was sie hier außerhalb
unseres Bereichs treibt. Und ich führe das aus, ich bekomme
diesen Überlauffehler. Und das sagt
uns, dass der Wert von 33 Tausend nicht
in die Variable I einsteigen kann. Also werde ich nicht in die
Informatik einsteigen. Grundsätzlich können Sie, wenn
Sie interessiert
sind , darüber lesen. Es hat damit zu tun,
dass eine Ganzzahl ein 32-Bit-Speichertyp ist. Das ist wahrscheinlich nicht das, worauf Sie gerade eingehen
möchten. Alles, was Sie wissen müssen,
ist, dass ganzzahlige Typen diese Einschränkung innerhalb
dieses Zahlenbereichs
haben , den
sie akzeptieren können. Mittlerweile ist genau
das Gleiche. Nur es kann mit
höheren Werten umgehen. Wenn ich das stattdessen in j ändere, ist
dies die lange
Variable, die wir erstellt haben. Jetzt wurde J wirklich leicht 33
Tausend, und es hat unseren Debug-Druck hier gemacht. Daher können wir
diese größeren Werte verwenden wenn wir den
Long-Variablentyp über Integer verwenden. Wenn Sie also sehen, dass ich dies
wahrscheinlich ziemlich
oft in Zukunft verwende , werden
Sie wissen, dass es
im Grunde dasselbe ist wie eine Ganzzahl. Nur ohne diese Einschränkung.
15. Wenn Statements aussagen: Jetzt gehen wir rüber, wenn Aussagen. Dies ist, wo wir tatsächlich etwas Intelligenz zu unserem Code hinzufügen, wo der Code in der Lage ist, eine Entscheidung für uns zu treffen. Was ich tun möchte, ist, dass unser Code die Nummer überprüft, die hier in dieser Zelle ist, und dann sagen Sie mir, ob diese Zahl größer als zehn ist oder nicht. Und das ist etwas, das Sie mit einer Formel tun können. Aber ich wollte das nur als Beispiel zeigen, das Sie auch durch ein Makro tun können. Und mit dem Makro können Sie dies aufbauen, um viel
komplizierter zu werden , als Sie es normalerweise mit einer Formel können. So zur Decke ist viel höher. Also werde ich zu meinem Makro kommen. Ich werde eine Variable erstellen, um unseren Eingabewert hier zu halten. Ich werde dim Eingabewert als Ganzzahl schreiben. Der Eingabewert entspricht dem Bereich B7 Punktwert. Und jetzt für unsere if-Anweisung, werden
wir schreiben, wenn und dann die Notation für eine if-Anweisung ist, wenn Klammern Bedingung hier geht. Ich komme zurück und repariere das. Dann mag es das nicht, denn das ist natürlich keine echte Bedingung. Und wenn, und so, wenn wir unsere Bedingung hier schaffen, ist der
Eingabewert größer als zehn. Jetzt haben wir eine bedingte Anweisung erstellt, wo wir
nur den Code ausführen, der zwischen dem if und dem Ende ist,
wenn diese Bedingung erfüllt ist. Und wenn wir diese Bedingung erfüllen, wird das Ergebnis in Zelle B8 gleich ja geben. Und ich werde diesen Code durchlaufen. Ich werde die FH-Abkürzung verwenden. Wo du hingehst, führen wir diese erste Zeile aus. Wir deklarieren die Eingabevariablen. Wir überprüfen die if-Anweisung, und wir haben die Bedingung hier nicht erfüllt. Und so haben wir diese Codezeile übersprungen. Versuchen wir jetzt eine andere Nummer hier drin. Wir werden 11 sagen. Und wenn ich das noch einmal ausführe, und genau dort können Sie sehen, da diese Bedingung erfüllt ist, sind wir
jetzt in dieser Aussage und wir werden diese Codezeile ausführen. Aber wir werden hier ein Problem haben. Und wenn ich hierher zurückkomme, aber die Nummer drei und ich das wieder renne, liefen
sie tatsächlich eine zufällige Teilsekunden, also könntest du es vielleicht nicht sagen. Aber wenn wir mitfallen, was wir wissen, passiert ist, dass der Wert drei nicht der Aussage entsprach. Und so ist alles, was es getan hat, diesen Wert hier drin zu lassen. Wir haben kein weiteres Ja hinzugefügt, aber Sie können es nicht sagen. Also werde ich nur eine Nachrichtenbox hier setzen, damit du sehen kannst, dass es tatsächlich gelaufen ist und nichts passiert ist. Und deshalb wollen wir ja nicht. Um hier drin zu bleiben. Das ist vom letzten Mal, als wir das ausgeführt haben, als die Eingabe 11 war. Was wir tun werden, ist, dass wir eine if else Aussage erstellen. Mit dieser else-Anweisung wird
der Code, der hier eingeht, das sein, was passiert wenn Sie die Bedingungen der if-Anweisung hier oben nicht erfüllen. Und wenn wir das nicht treffen, werden
wir dasselbe tun. Entspricht Nein. Und wir werden das noch einmal ausführen, komplett. Und Sie können jetzt sehen, wenn wir die größer als zehn Bedingung nicht erfüllen, es führt diese Codezeile aus, die else-Anweisung. Und wenn wir zurück zu 11 gehen, das nochmals
ausführen, wird es hin und her wechseln.
16. for-Schleife: In diesem Video möchte ich euch Jungs für Loops zeigen. Und das waren die Automatisierung wirklich passiert, wo
Sie eine Menge von Aktionen automatisch durchführen können. Und so möchte ich Ihnen zuerst eine extrem einfache Vier-Schleife zeigen. Wir brauchen nicht einmal Inhalte, die auf unserer Tabellenkalkulation auf der linken Seite vorbei sind. Die For-Loop-Notation ist vier. Und dann brauchen Sie eine Variable, die im Wesentlichen Ihr Zähler ist. Typische Notation ist, einfach den Buchstaben i gleich 123 zu verwenden, sagen wir. Und dann weiter I. Und so werde ich hier eine Meldungsbox erstellen, die den Wert von i anzeigt. Und wenn wir
das ausführen, wenn wir diesen Code zum ersten Mal durchlaufen, werde ich hier bei einem beginnen. Dies wird eine Anzeige. Und dann, wenn Sie zu diesem Ende der for-Anweisung kommen, wird die Variable i um eins inkrementieren. Und dann wird es an die Spitze der Schleife zurückkommen und es wird mit i gleich zwei laufen. Und das wird den ganzen Weg machen, bis ich gleich drei bin. Und dann wird es das letzte Mal sein, dass das läuft. Und es wird wissen, die Schleife zu verlassen, nachdem Sie diese Kriterien hier erreicht haben. Und so lassen Sie mich das laufen. Hier haben Sie Ihre Nachricht Box von i gleich 123. Und dann sind wir fertig. Jetzt möchte ich Ihnen zeigen, wie Sie so etwas verwenden können,
um mit Ihrer Tabellenkalkulation zu interagieren. Also hier habe ich drei Nachrichten. Also werde ich hier eine Überschrift für diese Liste erstellen
, kühne Kontrolle und hier habe ich drei Nachrichten, und ich werde diese Nachrichtenliste aufrufen. Im Moment wird diese Zelle hier die Nachrichtenliste genannt. Also werde ich das als Bezugspunkt verwenden. Für den Moment. Ich werde das auskommentieren. Und ich kann das aussagen, indem ich diese Apostrophe hier drüben setze. Und das macht diese grün. Es macht sie Kommentare, so dass sie nicht laufen werden. Wenn ich noch einmal auf Play klicke, gibt es im Grunde keine Codes und nichts ist passiert. Etwas, das ich Ihnen noch nicht gezeigt habe, ist, dass, wenn ich auf diese Zellennachrichtenliste verweise, die hier wieder acht verkauft wird, ich diese Funktion verwenden kann, die Teil eines Bereichs ist, der Offset genannt wird. Und Sie sehen, es gibt Ihnen einen Zeilenversatz oder Spaltenversatz. Und so kann
ich von der Zelle, auf die Sie hier verweisen, eine Zahl geben, die mein Zeilenoffset ist, was ihm sagt, dass Sie diese Zelle um eins versetzen möchten, was mich hierher zu Nachricht 1 bringt. Nachricht tauchte immer wieder auf, weil ich
diese Zeile verlassen habe , als es keine gültige Codezeile war. Ich komme hierher zurück. Ich möchte meine Spalte überhaupt nicht verschieben, weil wir immer noch in der gleichen Spalte sind. Wenn ich eine tippte, bewegen wir eine Zelle nach rechts. Wir werden das als 0 Wert belassen. Und wenn ich das wieder in eine Nachrichtenbox einwickeln werde, so bekommen wir die CD-Ausgabe. Ich werde das laufen lassen. Und weil wir auf der Nachrichtenliste sind, gehen
wir einen Zeilenversatz nach unten. Hier sehen wir Nachricht1. Kommentieren Sie das jetzt aus und wir können die gleiche Idee in einer Schleife verwenden. Ich komme hier runter. Und das andere, was ich dir sehr schnell zeigen werde, wenn ich diese Apostrophe eintippe. Ein schnellerer Weg ist, wenn ich zur Symbolleiste und zum Bearbeiten gehe, das gibt mir diese schwebende Symbolleiste hier drüben. Ich kann das oben ziehen und diese Schaltfläche direkt hier, wir werden kommentieren oder die auf der rechten Seite davon. Wir werden einen ganzen Codeblock auskommentieren. Aber wie kann ich diesen Offset verwenden, den wir gerade in unserer Schleife abgestuft haben? Also in unserer Nachrichtenbox wissen
wir, dass der Wert von i dreimal mit i gleich 12 laufen wird. Und dann drei, wir werden einen Zellbezug wie oben hier hinzufügen, Nachrichtenliste. Und anstatt einen hier wie oben zu setzen, werden
wir die Variable i verwenden, die sich jedes Mal ändert, wenn die Schleife läuft. Also ändere ich das und mache dies zu I. Und jedes Mal, wenn diese Schleife durchläuft, wird sich
der Wert in dieser Anweisung ändern. Und so werde ich das hier laufen lassen. Erste Schleifennachricht 1, zweite Schleifennachricht 2, dritte Schleifennachricht drei. Und wenn wir diese Idee annehmen und sie auf kompliziertere Makros anwenden, können
Sie beginnen zu sehen, wie diese Schleifen verwendet werden können, um sich wiederholende Aufgaben auszuführen.
17. Für Loops Fortsetze: In einem anderen unserer Videos
habe ich Ihnen gezeigt, wie Sie das Makro verwenden können, um einen Ordner zu erstellen. Ich möchte diese beiden kombinieren, um Ihnen zu zeigen, wie nützlich die for-Schleife sein kann. Und so habe ich gerade dieses Beispiel erstellt, wo, wenn ich
es ausführe , es die Nachrichten in jeder dieser drei Zellen durchlaufen wird. Wie es durch diese for-Schleife dreimal geht. Ich bin, ich komme hier rüber. Ich ändere das in Ordnerliste, Ordner eins, Ordner zu Ordner drei. Dies wird als Nachrichtenliste bezeichnet. Ich möchte diese Referenz hier löschen und ändern, um diese Ordnerliste nur aus Gründen der Genauigkeit aufgerufen zu werden. Ich zeigte Ihnen in einem anderen Video können Sie zu Formeln kommen können Manager in dieser Tabelle, hier sind alle benannten Zellen, die ich erstellt habe. Hier ist die Nachrichtenliste. Ich kann diesen Verweis hier löschen. Ja. Und Sie können sehen, dass dieser Zellenname zurück zu seinem ursprünglichen eine acht adressiert gegangen ist. Und jetzt werde ich diese Zwei-Ordner-Liste nennen. Ich gehe zurück zu meiner Split-Screen-Ansicht. Und jetzt können wir das gleiche Konzept annehmen, bevor wir diese Nachrichtenbox hatten. Ich werde das ändern, um Verzeichnis aus unserem anderen Video zu machen, Sie erinnern sich vielleicht, dass Sie so einen Ordner in unserem System erstellen. Und die Eingabe für die Funktion make directory ist der Pfad, in dem der Ordner erstellt werden soll. Und so habe ich einen Ordner gemacht, der bereits C Drive Beispiel genannt wurde. Das ist der Ordner, in dem unsere neuen Ordner erstellt werden sollen. Und das verwenden Sie das kaufmännische Und-Zeichen, kombinieren Sie unsere Strings zusammen. Wir müssen dies in Ordnerliste ändern. Und wenn wir vorher schleifen, zeigen
wir, dass jedes Mal, wenn diese Schleife dreimal läuft, 123 gehen wird. Und diese Zellen hier drüben. Und jetzt wird es dasselbe tun anstatt ein Meldungsfeld anzuzeigen, wird diese Ordnernamen an den Pfad
anhängen, der in unserer Make-Directory-Funktion verwendet wird. Also lasst uns das mal ausprobieren. Da gehst du. Es sieht so aus, als wäre nichts passiert, aber das liegt wahrscheinlich daran, dass es so schnell lief. Es passiert alles einfach und wir haben keine Fehler getroffen. Wenn wir zu unserem Beispielordner kommen, da haben wir es falten oder 123. Und so werde ich diese löschen. Und so können Sie diesen Lauf in Echtzeit sehen. Wenn ich das ausführe, gibt es drei Ordner, die auf diesen Namen basieren. Und wenn wir wirklich verrückt werden wollten, werde ich hierher kommen. Wenn ich diese untere rechte Ecke schnappe, kann ich das nach unten ziehen. Sie sehen, dass Excel weiß, dass ich versuche, die Zahl dort zu erhöhen, oder zumindest rät es. Ich kann zehn Ordner haben. Ich möchte diese Schleife zehn Mal ausführen. Zeigt den Ordner hier an. Schlag auf Run. Und da sind deine zehn Ordner. Und jetzt gehen wir wirklich auf die Automatisierung.
18. Kursprojekt 01 Beschreibung und Tutorial: Hallo an alle. Wenn Sie es so weit zu diesem Video gemacht haben, bedeutet
das, dass Sie alle Videos abgeschlossen haben, die ich bisher für diese Klasse gepostet habe, was ich die Einführung in
Excel Makros
betrachte und damit begonnen habe, noch nie daran gearbeitet zu haben. Ich kam auf dieses Projekt, das viele der Konzepte, die wir in
den anderen Videos für diese Klasse übergegangen sind, integrieren wird. Und das Projekt, das ich
euch geben möchte , ist, dass ich hier eine Liste von Zahlen habe. Und mit dieser Zahlenliste möchte
ich, dass ihr ein Makro schreibt, das
diese Liste nimmt und diese Zahlen hier auf der rechten Seite umsetzt. Aber nur die Zahlen auf der rechten Seite zu bringen, die einen Wert haben, der größer als zehn ist. Und hier drin haben Sie auch einige andere Dinge, wie zum Beispiel damit zu beginnen, dass es sich um einen Dateityp XLS handelt. Und Sie können über die Anweisungen an der Spitze gehen, um Ihnen
einige Ziele zu geben , die Sie vorbeigehen und einige Hinweise, was zu tun ist. Ich werde Sie auch bitten, einige Schaltflächen zu erstellen, um Ihr Makro auszuführen, um die Aufgabe auszuführen. Und die auch löschen Sie die Liste, so dass Sie die Aufgabe erneut ausführen können. Und dann, wenn die Makros ausgeführt werden, um
ein Meldungsfeld zu öffnen, das Sie wissen, dass das Makro abgeschlossen ist. Das ist also das Projekt für euch. Ich werde diese Datei an die Klasse anhängen, und so viel Glück damit und hinterlassen Sie Kommentare und das Gespräch für die Klasse, wenn Sie irgendwelche Probleme oder Fragen auf dem Weg haben. Und was ich tun wollte, ist, dass ich diesen Auftrag abschließen würde, damit ich es
als Antworten für euch posten kann , wenn ihr folgen müsst oder abgleichen müsst. Und ich dachte mir, dass ich es nur filme, während ich dieses Projekt abschließe. Wenn ihr also nicht betrügen wollt, könnt ihr dieses Video jetzt stoppen und direkt zum Projekt gehen. Also jetzt gehen wir weiter und versuchen, dieses Projekt zu realisieren. Ich komme auf die Registerkarte Entwickler, gehe zu Visual Basic. Es ist noch kein Modul hier drin. Und so in der Klasse hatten wir tatsächlich ein Modul aus der Aufnahme unseres ersten Makros erstellt. Ohne das kann ich mit der rechten Maustaste klicken, zu Einfügen gehen, zu Module gehen. Und hier geht's, wir haben unseren Code-Editor
, den ihr Jungs, ihr habt sie erkannt, die Klassen. Ich werde ein Subroutine erstellen. Ich werde es Sortierliste nennen. Da ist das Unterprogramm. Und so möchte ich auf diese Liste verweisen. Und ich habe keinen Namen für diese Zelle, wie wir in unseren Klassen erwähnt haben, können
wir darauf hinweisen, dass diese Zelle kurz vor Teenager ist, aber ich möchte ihr einen Namen geben, um ihr eine entscheidendere Referenz zu geben. Also werde ich diese Nummernliste anrufen. Nur um zu beweisen, dass das funktioniert, werde
ich hier Wert eingeben. Ich benutze gerne dieses Meldungsfeld, das
nur um meinen Code zu überprüfen. Wenn ich das hier leite, dann gehst du. Wir haben eine Zahlenliste, aber wir wollen diese Zelle nicht verwenden. Wir wollen jeden Wert dieser Zellen hier durchlaufen. Und so werde ich Offset eingeben. Ich tippe jetzt nur eins ein. Und ich werde das nochmal ausführen. Und los geht's. Wir haben Nummer neun, das ist das erste Element in unserer Liste, weil wir eins unten von der Nummernliste Zelle sind. Jetzt weiß ich, dass ich diese Liste hier durchlaufen möchte weil ich jeden Wert überprüfen möchte, um zu sehen, ob ich ihn in die Liste auf der rechten Seite verschieben soll. Also für i gleich und ich möchte sehen, wie oft ich diese Schleife ausführen muss. Wenn ich das hervorheble, gibt es hier einen kleinen Excel rick. Wenn Sie dies unten markieren, erhalten
Sie einige grundlegende Fakten über das, was Sie hervorgehoben haben. Also ist die Zählung zehn, also werde ich das zehn Mal ausführen wollen. Ich bin eins bis zehn. Also richte ich eine Schleife ein, die ich zehn Mal inkrementieren wird. Ich werde dies herausziehen und ich werde als nächstes einen Endpunkt für die Schleife festlegen, dh. Und lassen Sie uns das ausprobieren. Neun. Also sehe ich den Fehler, den ich hier gemacht habe, darin, ein Meldungsfeld anzuzeigen, das neun immer wieder zeigt. Und ich denke, das wird zehnmal laufen ,
weil das ist, wie oft die Schleife laufen wird. Also lasst uns das durchklicken. Und das liegt daran, dass ich gegangen bin. Dieser Offset ist eins. Und wirklich möchte ich, dass dies i. Und so wird sich der Wert von i jedes Mal ändern, wenn diese Schleife die Variable I erhöht. Und wenn ich das wieder ausführe, hier ist 9118 und sie gehen, kann ich hier eingeben drücken. Und Sie sehen, dass wir eine Schleife inkrementiert haben, die durch jede dieser Zellen geht. Als Nächstes wissen wir, dass wir unsere Ergebnisse hierher bringen wollen. Und so wie bei der Nummernliste möchte
ich eine absolute Referenz für diese Zelle erstellen. Ich möchte dieser Zelle einen Namen geben. Und so werde ich es Ergebnisse nennen. Und so wie wir in der Lage waren,
die Offset-Funktion zu verwenden , um diese Zellen zu referenzieren, die nach unten gehen. Wir können das Gleiche mit unserer Ergebnisliste hier machen. Lassen Sie mich hier etwas mehr Platz bekommen, damit wir unseren Code besser sehen können. Und so kann ich diese Zelle direkt hier referenzieren, zum Beispiel, indem ich Bereichsergebnisse referenziere. Dieser Offset in genau wie hier, wo wir die Variable i
verwenden, um die Liste nach unten zu erhöhen, kann
ich wieder verwenden, Punktwert. Und jetzt reden wir über den Wert dieser Zelle hier. Und beim zweiten Mal, wenn die Schleife läuft, werde
ich zwei sein und wir reden hier unten über diese Zelle. Und so wird nur ein Beispiel den Wert der Zelle i. Und was ich erwarte, ist jedes Mal, wenn diese Schleife läuft, werde
ich von 1234 gehen. Und das wird auch die Rose nach unten kompensieren. Du wirst also eins bis zehn auf dieser Liste haben, richtig? Also werden wir das ein bisschen öffnen. Dann lassen Sie uns diesen Code hier testen. Und so werden wir Run treffen. Und da gehst du. Sie sehen, dass, wenn diese Schleife inkrementiert, es den Wert von i platziert, während er durch die Schleife in diese Liste geht,
da wir von der Ergebniszelle versetzt werden, die oben in dieser Liste ist. Nun, wir wollen diese Zahlen nicht hier drin. Was wir tun wollen, ist, diese Zahlen von dieser Liste
auf diese rechte Liste zu verschieben , wenn der Wert größer als zehn ist. Lassen Sie mich hier ein bisschen mehr Platz schaffen. Und als Sprungbrett werde
ich mich nicht darum kümmern, herauszufinden, ob die Zahl größer als zehn ist. Fügen wir einfach diesen Code hinzu und wir werden ihn aktualisieren ,
so dass wir diese Zahlen einfach auf die richtige Liste verschieben. Wir werden uns nicht darum kümmern, ob es größer als zehn ist. Wie ich in meinen Klassen erwähnt
habe, teste ich die Logik-App gerne ein wenig zu
einer Zeit , anstatt nur direkt für das Endprodukt zu gehen. Und so hier wissen wir, dass wir den Wert der Liste auf der rechten Seite setzen, anstatt es als nur ich zu setzen, wissen
wir, dass wir den Wert bekommen. Wir haben dort einen Fehler bekommen, weil dies keine gültige Codezeile ist. Wir wissen, wo ein Nachrichtenfeld geben, wo wir den Wert der Zahlenliste hier auf der linken Seite haben. Hier setzen wir den Wert der Liste auf der rechten Seite. Und wenn ich diese beiden kombiniere, dann gehen wir. Nun, die Liste auf der rechten Seite wird nur mit der Liste auf der linken Seite hier übereinstimmen. Und wir werden uns nicht mehr darum kümmern, das in der Nachrichtenbox zu zeigen. Also werde ich das einfach aussagen. Ich kann es später löschen. Und so lassen Sie uns versuchen, das auszuführen und sehen, was passiert. Okay, damit ihr das Problem sehen könnt, das ich habe gerade während ich diese Fenster links und rechts teile, verschwinden
meine Symbole hier oben. Und das ist nur, weil ich versuche,
alles auf der linken Seite zu sehen und ich alles auf der rechten Seite aufzuräumen. Also, was ich tun werde, ist, dass ich diese Spalten hier drüben löschen werde. Und wir gehen einfach aus dem Gedächtnis, weil wir wissen, was wir
hier versuchen , damit ich euch alles auf dem gleichen Bildschirm zeigen kann. Also hier mache ich dieses Fenster breiter. Ich sehe deinen Play-Button wieder. Lassen Sie uns das laufen. Und da gehen wir, wie wir durch jede Zeile schleifen oder einfach den Wert dieser Zelle in die Zelle auf der rechten Seite platzieren, und es geht diese Liste hin und her. Und jetzt wollen wir die if-Anweisung kombinieren. Also haben wir diesen Code ausgeführt, der Werte von links nach rechts bringt, aber wir wollen das nur unter bestimmten Bedingungen tun. Und so kann ich eine if-Anweisung erstellen. Wo. Und wieder bekomme ich Fehlermeldungen, weil ich hier unvollständige Codezeilen verlasse. Ich kann das greifen, was der Wert des Artikels auf der linken Seite ist. Und sagen Sie, wenn wir das packen, werde
ich es hier kopieren und einfügen. Und wir wollen sagen, wenn der Wert dieser Zahl auf der linken Seite weniger als zehn ist, schließen Sie die Bedingung. Dann werden wir eine Codezeile ausführen, die die Nummer in die Liste auf der rechten Seite
bewegt. Und wir werden das mit einem Endif beenden. Und so wird klar, dass wir versuchen, dies auszuführen. Und da gehst du. Es sieht so aus, als hätten wir hier ein erfolgreiches Makro. Aber eine Sache, die wir tun wollen, um das aufzuräumen, das ist ziemlich lang. Und so schreibe ich diese Aussage zweimal hier. Und Sie müssen das nicht wirklich tun,
sondern um eines der Konzepte zu praktizieren, die wir in unserer Klasse gelernt haben. Wir können eine Variable erstellen, um diesen Wert zu halten. Und dann können wir das an diesen beiden Stellen anstelle der vollständigen Aussage des Bereichs, Offset und Wert verwenden. Und so werden wir eine variable Dimension deklarieren. Wir rufen diese variable Nummer an. Und wir nennen das eine Ganzzahl, weil keines von ihnen Dezimalstellen hat. Wir rufen Nummer gleich an. Und wir gehen zu Bereich, Offset und Wert. Welches ist die Zahl, die in jeder dieser Zellen ist. Und tatsächlich eine Sache, die ich hier tun kann, weil diese Schleife zehn Mal laufen wird. Ich möchte diese Variable nicht zehnmal deklarieren. Ich muss nur einmal deklarieren. Und so kann ich es hier außerhalb der Schleife bewegen. Und jetzt Zahlen nur einmal deklariert, aber jedes Mal, wenn diese Schleife ausgeführt wird, wird
der Wert der Zahl jedem Element in dieser Liste
zugewiesen, während i durch die Liste inkrementiert wird. Und so sind diese Referenzen hier die gleichen wie diese. Anstatt also die vollständige Bereichsreferenz zu schreiben, kann
ich einfach die Variablennummer schreiben. Und das kann ich an diesen beiden Orten hier ändern. Und lassen Sie mich diese Liste löschen. Ich traf „Play“. Und da gehst du. Sie sehen den gleichen Code funktionierte nur wir es mit der Verwendung dieser Variablen vereinfacht, der Variablenname, Nummer. Damit vervollständigt unser Makro im Grunde. Und jetzt werden wir einfach mit den anderen Aufzählungspunkten in diesem Projekt aufräumen. Also möchten wir dies von einem XLS-Dateityp speichern, der der Standard-Excel Dateityp ist. Und wir wollen, dass eine Makro-aktivierte Arbeitsmappe. Und so gehen wir zu Speichern, Speichern unter. Und wir ändern dies in eine Makro-aktivierte Arbeitsmappe. Und da gehst du. Und jetzt, wenn ich auf Speichern klicke, erhalte
ich keine Fehlermeldung, dass mein Makro wegen des Dateityps verloren gehen wird. Nächstes Aufzählungszeichen erzeugt das Makro. Das ist es, was wir bereits abgeschlossen haben. Wir möchten eine Schaltfläche erstellen, die dieses Makro ausführen, damit wir nicht weitermachen müssen. Der Code-Editor und Schlag spielen. Auf andere Weise könnten wir dieses Makro ausführen, ist das Klicken auf Makros in unserer Sortierliste Makro. Aber um es noch einfacher zu machen, als das ist, wollen
wir zu Einfügen gehen, wir werden hier eine Schaltfläche hinzufügen. Wir werden diesen Knopf erschaffen. Das Makro, das wir ausführen werden, ist Sortierlisten. Aber eigentlich möchte ich euch zeigen, ich kann hier OK klicken und das wird machen, dass diese Schaltfläche das Sortierlisten-Makro ausführen. Aber wenn ich das ändern möchte, kann
ich mit der rechten Maustaste auf diese Schaltfläche klicken, um Makro zuweisen, und dann kann ich es jederzeit ändern, wenn zwei zu Sortierlisten gehen, klicken Sie auf OK. Wir können den Text der Schaltfläche ändern, um Listen zu sortieren. Und wir werden das ausprobieren. Ich werde das löschen, markieren Sie die Leet-Sortierliste, und los geht's. Jetzt führen wir das Makro über eine Schaltfläche aus. Und dann ist die letzte Kugel, die wir tun wollen, eine klare Schaltfläche zu schaffen. Und so habe ich hier drüben einen kleinen Tippfehler. Ich werde das ändern. Wir werden eine weitere Schaltfläche hinzufügen, wird hier auf Schaltfläche Einfügen gehen. Und deshalb habe ich dir vorher gezeigt, dass du das Makro später zuweisen kannst. Wir haben noch kein klares Listen-Makro. Also werde ich einfach auf Abbrechen klicken. Es erstellt immer noch die Schaltfläche, weist aber kein Makro zu. Ich kann darauf klicken und es tut nichts. Wird diesen Text ändern, um ihn zu löschen. Und wir brauchen immer noch ein Makro, das diese Liste löschen wird. Und so konnten wir in den Code-Editor gehen und hier ein neues Subroutine eingeben. Aber was machen wir wirklich schnell und einfach ist, wenn wir nur ein Makro aufzeichnen. Also werde ich hierher kommen, ich klicke auf die Schaltfläche Makro aufnehmen. Es wird standardmäßig Makro eins genannt, aber ich kann dies ändern, um die Liste als unseren neuen Makronamen zu löschen. Ich klicke auf OK. Ich kann diese Liste nehmen, markieren Sie sie, drücken Sie Löschen, wodurch eine Liste gelöscht wird. Stoppt die Aufzeichnung. Nun, wenn wir zu dieser Schaltfläche Löschen gehen, Ich Rechtsklick auf diese, gehen Sie zu Makro zuweisen. Hier haben wir unsere neue aufgezeichnete Makro namens Clear List. Ich klicke auf OK und das wird die Schaltfläche dem Makro zuweisen. Und wenn ich das noch einmal durchführe, gibt es unsere sortierte Liste. Es ist klar. Und jetzt ist die Liste gelöscht. Liste sortieren. Löschen Sie die Liste. Na gut, Leute, da hast du es. Es gibt das Tutorial, wie wir unser Projekt abschließen können. Ich hoffe, ihr habt diesen Kurs genossen. Bitte hinterlassen Sie Kommentare und das Gespräch. Lassen Sie mich wissen, welche Fragen Sie haben könnten, während Sie durch die Klasse gehen. Oder irgendwelche Excel - oder Excel-Makrofragen, die Sie zu anderen Themen haben könnten. Und ich würde ihnen gerne antworten. Und es gibt mir neue Ideen für mehr Klassen zu erstellen. Vielen Dank. Danke, dass ihr euch die Zeit nehmt.
19. 1.16 Esc Key to Stop: In diesem Video
möchte ich Ihnen nur
ein paar Dinge zeigen , die Ihnen beim
Programmieren und Fehler und bei der
Fehlerbehebung helfen können
, wie Sie können
, den Code mitten
im Laufen stoppen können. Was ich hier eingerichtet habe,
ist eine sehr einfache Schleife. Es hat unseren Index und
es wird
mich von eins bis 100 Tausend zählen . Und wenn ich das durchführe, werden wir sehen,
dass es eine Weile dauert, bis es läuft. Und Sie könnten eine Situation wie
diese absichtlich
einrichten oder nicht. Aber Sie könnten etwas tun
, bei dem Ihre Makros sehr lange
laufen und Sie haben Ihre Meinung geändert. Wir haben etwas falsch gemacht und wir wollen aufhören
, was wir tun. In der Tat werde ich das auf 1 Million
erhöhen. Es wird also
sehr lange dauern. Ich klicke auf Play hier. Dann können wir sehen,
dass dies sehr lange dauern wird. Und deshalb wollen wir aufhören. Ich drücke einfach die Escape-Taste. Eigentlich. Dies ist ein anständiges Beispiel
, weil es nicht funktioniert hat. Sie sehen, wie diese Art
von Windows nicht mehr reagiert
hat,
Sie können sehen, dass Sie dies wahrscheinlich erkennen, wenn Sie nur Ihren Computer
benutzen, dass gerade alles
eingefroren ist. Im Grunde
versucht es so schwer zu laufen , dass es Ihren Computer
übernommen hat und jetzt können wir nichts mehr ausführen. Was ich dir
zeigen wollte, ist, dass
du
das Makro theoretisch stoppen wirst,
wenn du auf Escape klickst, während
der Code läuft . Aber wir treffen solche Situationen , in denen alles
eingefroren ist und es nicht reagiert. Es
nimmt nicht einmal Befehle an wenn Sie die Tasten
auf Ihrer Tastatur drücken. Es empfängt sie einfach nicht. In diesem Fall stecken wir
irgendwie fest, um ehrlich zu sein. Ich lasse diese
Demonstration im Video,
obwohl es
nicht das ist, was ich geplant habe. Und ich denke in diesem Fall, weil es so einfach ist, versucht es
immer noch, die Arbeit zu erledigen. Jetzt steckt es einfach in diesem sehr langen
Prozess fest, in dem es sehr lange Sachen
macht. Und irgendwann wird es
entweder
das Excel-Programm zum Absturz bringen oder
es wird einfach weiter daran arbeiten und schließlich wird
es tatsächlich auf eine Million
zählen. Und dann werden wir das
wahrscheinlich
hier drüben in unserem unmittelbaren Fenster sehen . In dieser Situation stecken
wir irgendwie fest. Wir könnten es abwarten oder
wir könnten Alt steuern, löschen und die Aufgabe beenden. Und zwingen Sie
Excel im Grunde zum Schließen. Das Problem
in diesen Situationen
ist natürlich, wenn Sie in
letzter Zeit nicht gespeichert haben, verlieren Sie möglicherweise die Änderungen, die
Sie kürzlich vorgenommen haben. Also werde ich tatsächlich
weitermachen und das beenden. Schließen wir Excel hier aus. Sie können sehen, dass Excel die
gesamte CPU verbraucht , weil es immer noch diese verrückte Schleife
ausführt. Dies ist also eine gute
Demonstration
der Situationen, die
passieren können, wenn Sie versehentlich
wirklich lange Prozesse erstellen oder Code schreiben, der
nicht sehr effizient ist, in diese Schleifen
gelangt,
installiert alles raus. Jetzt zeige ich Ihnen, was ich Ihnen
ursprünglich zeigen
wollte, nämlich wenn
wir diese Schleife ausführen, wenn
Sie schnell
genug fangen, bevor es
Ihren Computer übernimmt und
keine Befehle mehr erhält, dass Sie tatsächlich
ein Makro stoppen können , das
gerade läuft. Und das kannst du tun,
indem du die Escape-Taste drückst. Es scheint also, als würde
es meinen Computer
übernehmen, wenn wir das zu lange laufen
lassen . Aber wenn ich auf Play klicke, kann
ich sehr
schnell Escape treffen, wenn ich es merke. Und Sie sehen, dass Excel zu der Zeit
reagiert hat, und es sagt mir, dass
ich den Prozess unterbrochen habe. Und hier kann ich auf End klicken, was einfach alles
aufhalten wird. Oder wenn ich den Fehler getroffen habe, wird er direkt
in der Codezeile anhalten , in der er ausgeführt wurde. Was wir hier gesehen haben, ist, dass es in diesen
Situationen tatsächlich
eine Zeile
gibt , die
zu weit geht , und dann
könnte das System Excel nicht mehr reagieren lassen, und dann funktioniert diese
Verknüpfung nicht. Aber es ist im Grunde
der Escape-Schlüssel. Eine weitere kleine
Situation, von der ich
denke, dass es sich lohnt, gezeigt zu werden, ist, wenn ich hier ein Meldungsfeld
mache und auf Run klicke , habe
ich versucht zu klicken, Okay, wenn ich hier auf Escape klicke, wird der Code nicht verlassen. Stattdessen
verlässt es nur das Meldungsfeld. Und ich stecke irgendwie in
dieser Message-Box-Schleife fest. In Situationen wie diesen halte
ich einfach die Escape-Taste gedrückt und drücke sie einfach und halte sie gedrückt. Und im Grunde sendet es den Escape-Schlüssel jedoch
oft pro Sekunde. Und dann fängt es
die Flucht direkt dazwischen
ein, wenn sich das Fenster schließt und das nächste auftaucht. Zwischen dieser Zeit erhält
es tatsächlich
den Escape-Befehl , den Excel erhalten soll. Während das
Nachrichtenfeld geöffnet war, dachte
es, wenn
wir Escape drücken, versuchte
es nur, das Meldungsfeld zu
schließen. Sie können also auch
Escape halten, wenn Sie in
einem seltsamen Szenario wie diesem
mit einem wiederkehrenden Popup landen . Das ist alles, was ich dir für dieses Video
zeigen wollte.
20. 1.17.1 Einführung in eine Schleife: Eine der vorherigen Lektionen habe ich Ihnen eine Vier-Indexschleife
gezeigt
, auf der wir bereits ein Video
haben. Und das ist die
häufigste Art von Schleife, nämlich Sie haben
eine for-Anweisung, Sie haben einen Indexzähler
, der normalerweise I genannt wird. Und dann gehen Sie von,
in diesem Fall 123, und es wird Schleife und inkrementieren Sie nacheinander nach oben. Wenn ich das mit F8 ausführe,
siehst du, dass wir diese Schleife durchlaufen. Ich bin gleich eins. Wenn
wir das nächste „Ich“ sagen, wird ich das um eins
erhöhen, also wird es 23 sein. Dann ist das das
Ende der Schleife. Weil ich
von eins auf drei gehe. Wir wissen bereits, dass Sie es hier auf zehn
ändern können. Und ich mache einfach weiter
und führe alles auf einmal durch. Und es geht von eins auf zehn. In diesem Video
möchte ich Ihnen zeigen , dass es verschiedene
Arten von Schleifen gibt. Es gibt mehr als nur das,
was ich dir in diesem Video zeigen werde. Aber ehrlich gesagt verwende ich nicht
viele der anderen Variationen. Aber die andere Hauptschleife
ist die Do-While-Schleife, die nicht das Wort dafür enthält. Das ist also einfach so, dass es auf diese Weise
anders ist. Und ich zeige dir, was daran
anders ist. Es gibt noch ein anderes, das ich
verwende, das
ein anderes Video über das
heißt für jede Schleife drehen wird . Aber hier zeige ich dir
die Do-While-Schleife. Und so hat es eine ähnliche Syntax bei der Sie diese Anweisungen haben
, die Ihre Schleife umschließen. Und dann in deiner Einrückung
zwischen diesen Anweisungen, was wir in dieser Schleife
ausführen werden. Aber in diesem Fall siehst du, dass es ein bisschen anders ist, dass
wir mich immer noch erklären. Aber hier stelle ich gleich eins ein. Im Grunde genommen wird was passieren wird, anstatt
zu sagen, dass ich von eins bis zehn bin, werde
ich das eigentlich nur verdrängen. Es ist also keine Ablenkung. Wir haben hier eine Bedingung, und diese Schleife wird ausgeführt,
wenn diese Bedingung zutrifft. Dies ist also eher eine
echte falsche Aussage im Vergleich zu unserer for-Schleife, die keine
echte falsche Aussage hat. Es hat einen Zähler, der
von etwas zu
etwas anderem geht . In diesem Fall
werden wir neu erstellen, was wir in
unserer Vier-Indexschleife gezeigt haben, wo wir eine Bedingung haben,
in der wir
laufen werden Ich ist weniger als drei. Das wäre ähnlich wie „Overhear“. Aber was Sie bemerken werden,
ist in dieser Schleife selbst, sie wird laufen, bis
ich weniger als drei Jahre alt bin. Aber es sagt nicht ganz klar
, als was ich anfange, als Teil dieser Loop-Anweisung. Was ich also tun muss, ist außerhalb unserer
Loop-Anweisung hier drüben, ich sage ihr, dass ich als
eins anfange , bevor ich überhaupt
etwas über die Schleife sage. Es liegt also außerhalb
unserer Code-for-Schleife, wie die Bedingung eingerichtet
wird. Wenn ich jetzt F8 treffe, wirst du
sehen, dass ich gleich eins bin. Wenn ich weniger als drei bin, gehen
wir in unsere Schleife. Wir sind momentan weniger als
drei. Also drucken wir es aus. Und dann muss ich hier
sagen, dass es inkrementiert werden soll. Hier drüben. Wir haben gesehen, dass ich
um eins steigen würde , wenn wir
diese Codezeile treffen. Und stattdessen
wird das hier nicht automatisch
passieren. Wir müssen unsere eigene Codezeile
schreiben , um ich um eins zu erhöhen. Du siehst hier, während wir drei
durchlaufen. Und jetzt, als wir
durchgehen, ist ich gleich drei, tut mir leid, ich bin gleich drei, als wir letzte Mal den
Debug-Druck hier gemacht haben. Und dann fügen wir mir noch eins hinzu machen es an dieser
Stelle im Code. Und dann springt es wieder nach oben, um diesen Zustand zu überprüfen. Sieh mal, dass es nicht stimmt. Dann springe aus unserer Schleife heraus. Dann können
wir mit diesem Setup
dasselbe tun, was wir zuvor gemacht haben,
was bedeutet, dass dies
nur als Demonstration auf zehn geändert wird. Und wenn ich auf Play klicke, los geht's. Eins bis Zehn. wurde gerade durcheinander gebracht, nur weil ich da schon eine Entzündung
hatte. Aber wenn ich auf Play klicke,
gehen wir eins bis zehn, genau wie wir es mit unserer
Vier-Index-Stilschleife hier oben getan haben. Aber man sieht an der
Art und Weise, wie es geschrieben wird, das Setup ein
bisschen anders und was wir tun müssen, ist
ein bisschen anders. Jetzt gibt es spezifische Anwendungsfälle in denen die Do-While-Schleife
wirklich nützlich ist , anstatt die
Vier-Indexschleife hier oben, die ich später zeigen kann. Aber was ich Ihnen jetzt zeigen werde ist ein Grund, warum ich
im Allgemeinen die meiste Zeit eine For-Schleife über die
Do-While-Schleife
verwende. Und der Hauptgrund dafür
ist, dass dies sich
schleifen wird, bis diese
Bedingung falsch ist. Also wird es weiter laufen. Was auch immer das stimmt. Ich habe hier eine Codezeile,
in der ich inkrementiert habe. Aber ich möchte Ihnen zeigen,
ob ich hierher komme und vergessen habe, diese Codezeile
einzugeben, und ich drücke F8. Also bin ich hier gleich eins und ich
gehe durch den Code, ich bin weniger als zehn und
wir drucken hier aus. Wir werden prüfen,
ob ich weniger als zehn bin, was es ist, weil
es immer noch eins ist. Wir drucken hier draußen. Wenn ich hier einfach weiter
durchschleife, siehst du jedes
Mal, wenn ich gleich eins bin, schleifen
wir, solange es weniger als zehn ist. Dieser Zustand
wird also ewig dauern. Ich ändere mich nie. Und die wahre oder falsche Bedingung hier
drüben basiert
auf dem Wert von I. Dies wird
also eine Endlosschleife
sein. Ich kann F8 für immer treffen. Die
Do-While-Schleife hat also dieses Problem , das für diese
Endlosschleife hier drüben anfällig ist. Sie fragen sich also vielleicht,
was passiert, wenn ich auf Play klicke, anstatt die FAA zu treffen. Also lasst uns weitermachen und das machen. Sie sehen, dass dies hier die
Nummer eins blinkt, weil es im Grunde nur eine
endlose Spalte von Einsen zeigt. Und jetzt
friert mein Computer ein. Excel friert ein. Ich kann hier nichts anklicken. Und das ist auf dem besten
Weg zum Absturz. Ich werde mir nicht mal die Mühe machen, das
abzuwarten und zu sehen, was passiert. Aber das wird so lange dauern, wie Sie bereit sind, im Grunde
zu warten. Und schließlich
wird Excel einfach abstürzen und
Ihnen sagen , dass es ein Problem gibt, wie das was passiert, wenn
Windows zum Stillstand kommt. Das könnte also
alleine passieren oder du wartest vielleicht fünf
Minuten so, aber es wird ewig dauern. Der Ausweg ist das klassische
Steuerelement Alt-Löschen. Und dann müssen wir das
Herunterfahren von Excel erzwingen, damit
dies tatsächlich gestoppt wird . Oder warte einfach ewig. Dies ist die Akte, in der
wir gearbeitet haben. Ich habe dieses Zeug später für
verschiedene Demonstrationen eingerichtet , aber das ist ein wichtiger Grund, dass
ich die Do While-Schleife vermeide. Wenn ich es nicht dort verwenden muss , wo
es keinen
besonders guten Grund gibt, es zu verwenden, weil es
wirklich anfällig ist einen Zustand
einzurichten, bei dem Sie versehentlich
eine Endlosschleife haben. Und wenn ich es benutze, muss
ich sicherstellen, dass
Sie eine Bedingung einrichten, sich tatsächlich
ändert,
ob Sie
irgendwann aus der Schleife kommen oder nicht. Jetzt, da
wir ein Inkrement von
mir hier richtig haben und unsere
Loops laufen wie es sollte. Auch hier gibt es eine kleine
Variante, die ich Ihnen zeigen werde, nämlich dass wir diese Aussage gerade hier
haben,
was bedeutet, dass sie
die Bedingung überprüft , bevor
die Schleife beginnt. Wenn ich also so
etwas sage,
was bedeutet, dass wir laufen, wenn ich kleiner oder gleich 0 bin. Und wir wissen,
dass KI hier oben eins sein wird. Wenn ich also F8 treffe, ist ich gleich einer in diesem Zustand
ist falsch, einer ist nicht weniger als 0. Du siehst also, dass es aus der Schleife springt und es ist einfach nichts
passiert. Eine weitere Variante davon
ist, dass ich diese While-Aussage nehmen kann. Ich schneide es aus und
füge es hier unten ein. Und obwohl diese Aussage keinem
Zeitpunkt im Code erfüllt
ist, zu keinem
Zeitpunkt im Code erfüllt
ist, wird
sie unsere Schleife ausführen,
weil sie diese Bedingung erst
überprüfen wird, wenn
wir hier auf den Grund gehen . Wenn ich also F8 treffe, ist ich gleich eins. Und dann werden
wir diese
Aufgabe ausführen und eine ausdrucken. Obwohl ich nicht weniger
als 0 bin, bis wir hier sind. Und dann wird es die App überspringen. Und im Grunde genommen, ob Sie diese Bedingung oben
oder unten
setzen oder nicht , wird dem Code mitgeteilt, wann der Zustand überprüft werden
soll. Und der Hauptgrund
, es auf diese Weise einzurichten ist, dass dieser
Code mindestens einmal ausgeführt wird, unabhängig von der Bedingung,
auch wenn es offensichtlich ist , wie zum Beispiel das einfache
Setup hier hat, dass die Bedingung
niemals erfüllt sein wird. Dieser Code wird also immer mindestens einmal
ausgeführt bevor er stoppt, und
er wird nicht wirklich schleifen. Das ist also die
allererste Einführung in diesen verschiedenen Loop-Stil , der hier aus offensichtlichen
Gründen als Do-While Loop bezeichnet wird. Und als nächstes folgt ein kleines Folgevideo, in dem ich Ihnen die Anwendungsfälle
zeige, warum Sie diesen spezifischen Stil
verwenden möchten.
21. 1.17.2 Der Einsatz in Schleife in Schleife: Im letzten Video habe ich
Ihnen das Grundkonzept
einer Do-While-Schleife anstelle
von R for Indexschleife gezeigt , auf der wir ein
früheres Video hatten. Hier möchte ich Ihnen ein
Anwendungsbeispiel
zeigen , das zeigt,
warum Sie für bestimmte Prozesse eine
Do-While-Schleife verwenden möchten. In diesem Fall habe ich hier
ein paar Beispieldaten auf unserem
Blatt. Und was ich einrichte, ist eine grundlegende Subroutine
, die zählt wie viele Zeilen sich hier befinden, und uns die Anzahl
der Zeilen in unseren Daten
mitteilt. Also habe ich
hier
bereits eine Subroutine eingerichtet , die
für Indexschleife verwendet, was mich von eins auf zehn bringt. Dann nimmt es unseren Bereich A3, also überhören und dann mit unserem Index
überprüfen, muss
ich jede Zelle runtergehen und prüfen, ob es
Inhalte gibt . Und es wird sinken. Und wenn es dann eine Zelle findet,
die keinen Inhalt hat, wird
es sagen, dass die
letzte Zeile eine darüber liegt. In diesem Fall wird
es also 1234 gehen. Sehen Sie, dass es
hier nichts gibt und hören Sie auf und sagen Sie, meine letzte Zeilenzahl
muss vier minus eins sein. Und die Antwort ist drei. Das machen
wir also hier. Ich treffe F8, um das zuerst langsam
durchzugehen. Siehst du, ich bin gleich eins. Ich setze diese
Variable namens
Testtext als unseren Offsetwert ein. Also haben wir eine Drei und
da ich dann gleich eins bin, um anzufangen, sind
wir gerade in dieser Zelle. Und dann sagt es
uns, dass der Text hier
162020 ist , da es ein Datum ist. Und dann wird überprüft,
ob
sie diese Zelle
hier waren oder nicht , ist leer, was nicht der Fall ist. Jetzt wird es also weiter im Schritt
nach unten laufen. Und dann geht es auf
den nächsten, der 123 ist. Es ist also nicht leer. Es gibt
diese if-Anweisung nicht ein. Der dritte, das Gleiche. Und was wir von
hier aus wissen ist, dass wir auf Ich bin gleich denn unser Text hier zeigt
nichts. Und so geben wir
unsere if-Aussage ein. Die letzte Reihe ist ich minus eins. Also drei, wir verwenden
diesen Ausgang für Anweisung, was bedeutet, dass
wir
unserer Schleife entkommen werden, obwohl wir
nicht von eins zu zehn gekommen sind. Weil wir
diese Codezeile getroffen haben. Wir werden
aus unserer for-Schleife springen. Und es heißt, dass es
hier drei Reihen gibt. Wenn ich jetzt
aufhöre und wieder Play drücke, passiert
es einfach sehr schnell. Es gibt drei Reihen. Wenn ich so etwas gemacht habe, als würde ich hier einen weiteren Wert
hinzufügen, kann
ich wieder spielen. Und du siehst, dass
es vier Reihen gibt. Das ist also das System hier. Wenn ich jetzt zu diesem
anderen Blatt gehe, das ich habe, gibt es hier viel mehr Informationszeilen
. Es ist nicht so offensichtlich,
wie wir zuvor gesehen haben, dass es drei Reihen gab, die wir einfach selbst zählen konnten. Dies ist viel wahrscheinlicher,
denn wenn es drei Zeilen gibt, benötigen
wir keine Subroutine,
um automatisch zu zählen. Ich weiß, dass wir
ganz nach unten scrollen und es durch Excel
zählen
könnten, aber oft können wir eine Funktion
wie diese direkt in
unsere Automatisierung einbetten . Dies könnte also ein
Stück Code hier Automatisierungsseiten , die
die Zeilen dynamisch herausfinden müssen. Also hier drüben kannst du
dir vorstellen, dass das nicht mehr
funktionieren wird , weil unsere
for-Schleife eins zu zehn geht. Und wenn ich hier spielen drücke,
siehst du, dass es 0 Zeilen
gibt. Und das liegt daran, dass wir von eins auf zehn
gehen. Also 123456, bis zu zehn. Und wir haben nie ein Szenario getroffen
, in dem der Text leer ist. Wenn
diese Schleife fertig ist, haben
wir nie das Szenario erreicht dem der Text in der Zelle
leer ist. Und so wird die letzte Zeile einfach nie als
etwas anderes als 0 gesetzt, was ihr ursprünglicher
Standardwert ist. Sie können diese Situation haben. Und das große daran
ist, dass wir nicht wissen, wie viele Reihen
das ausfällt. Und so haben wir diese Schleife
, die uns zwingt, uns
mitzuteilen , wie
oft wir eine Schleife machen können. Es gibt einen Vorteil der
for-Schleife, da wir
diese unendlichen Schleifen, die wir im letzten Video
erstellt haben, nicht haben , da diese Schleife immer
beendet wird. Man
muss ihm im Grunde immer sagen
, wo es anfängt
und wo es endet. Jetzt könnten wir also
etwas wie
tausend machen und
versuchen es zu betreiben. Also wählen wir einfach eine große Zahl , um zu überprüfen, wie viele Zeilen
und wir bekommen immer noch 0. Und das liegt daran, dass es
mehr als eintausend Zeilen in dieser Tabelle gibt, in dem das gleiche
Problem, das bei zehn passiert ist, bei tausend passiert. Was wir also tun könnten, ist, dies einfach
zu einer riesigen Zahl zu machen. Wir nennen es 99 Tausend. Es läuft. Und wir sind
bei 1290 Reihen hier. Und wir kommen hier runter. 1293 ist unsere Excel-Reihe. Das ist also die richtige Antwort. Aber wir hatten dieses Problem
, bei dem wir nicht wussten die Endgrenze dieser für
Indexschleife gehen muss. Und wir wollen nicht immer
nur eine Zahl erfinden, obwohl dies ein völlig
guter Weg ist. Sie sehen tatsächlich an einigen Stellen in Videos, die ich
bereits aufgenommen habe, die möglicherweise weiter in dieser Klasse sein könnten, dass ich
diese Methode hier verwende. Weil es gut funktioniert, wenn
Sie wissen, dass Sie hier nie mehr als 99
Tausend Zeilen treffen
werden, ist
dies ein guter Weg, dies zu tun. Und dann
vermeide ich dieses Problem immer noch. Ich habe dir
im letzten Video gezeigt versehentlich
eine Endlosschleife gemacht hast. Der Grund,
eine Do-While-Schleife zu verwenden, die ich hier bereits
eingerichtet habe,
liegt darin, dass ich mir keine Reihe davon ausdenken muss ,
wie weit das gehen wird. Diese Schleife wird auf unbestimmte Zeit
passieren, und ich
muss keine Endkappe setzen wann ich mit
der Suche aufhören soll. Wenn Sie also nicht wissen, wann
die Schleife gestoppt werden soll, wird
die Do-While-Schleife einfach
weiter prüfen. Und so habe ich diesen Algorithmus eingerichtet. Nun, die FAA durch, die genau
das Gleiche mit einer Do-While-Schleife macht. Und ich mache das,
während mein Testtext, der
die Informationen in
unserer Zelle überprüft , nicht leer ist. Und so wird es weiter
schleifen, solange es nicht leer ist. Und sobald es
ein Leerzeichen findet, wird es aufhören. Eine Kleinigkeit, die ich hier machen
musste, ist anfangen. Der Testtext hat einen Anfang. Und so
würden wir diese
Bedingung hier unten tatsächlich erfüllen. Eine andere Möglichkeit, dies
zu tun, besteht darin , dies nach unten zu verschieben, genau wie ich es
im vorherigen Video gezeigt habe. Natürlich gibt es eine Reihe
verschiedener Möglichkeiten, diese Algorithmen
einzurichten. Das wird weiter schleifen. Es macht im Grunde genau
das Gleiche, was jede Zelle runtergeht. Hier drin. Wir müssen eine
Codezeile haben , die
mich selbst erhöht. Aber es wird diese
weiter überprüfen. Und wenn ich den
Play-Button hier drüben drücke, läuft
er bis 1290, was wiederum
die richtige Antwort ist. Dies ist also der
häufigste Anwendungsfall, zumindest für mich selbst, dass wir eine Do-While-Schleife verwenden
möchten. Wenn wir nicht wissen wie oft wir überhaupt eine Schleife machen
wollen. Und wir können vermeiden, dass wir
diese Situation haben
müssen , in der wir uns eine große Zahl
einfallen lassen müssen. Und wir
müssen nur einen aus dem
Nichts ziehen und es
wieder gutmachen, dass wir davon ausgehen, dass
wir anhalten müssen, und dann müssen
wir aus der
for-Schleife springen , wenn wir eine Bedingung erfüllen. Denn wenn wir keinen Ausgang haben ,
für den er aus der Schleife springt, wird
dieses Ding auf
99 Tausend gehen, egal was passiert. Weil wir keinen Code
haben, der die Schleife verkürzen
wird. Wenn ich also hier reinkomme und klicke, wirst
du sehen, dass es hier keine jungen Texte
mehr gibt. Und das liegt daran, dass es immer noch weiter im Debug läuft und leere Zellen bis zu 99 Tausend ausgibt. Und tatsächlich wird
das lange dauern. Und so hat dies
seine eigene Anfälligkeit, Looping
zu durcheinander zu bringen. Und in gewisser Weise wird
die Do-While-Schleife hier zur
saubereren Lösung. Und tatsächlich sehen Sie genau hier, aus Gewohnheit, ich habe exit do geschrieben, was die gleiche Notation
wie der Ausgang ist , denn nur
dies ist eine Do-Aussage. Das
springt also auch aus der Schleife. Aber jetzt, wo ich erkläre,
was
ich gerade getan habe, brauche ich den Exit do while Loop nicht, denn wenn wir das nächste Mal treffen, werden wir bereits auf testen diese Bedingung in
Sprung aus der Schleife. Wenn ich zum Beispiel hier
F9 drücke und auf Play klicke, geht
es
alle von uns selbst durch. Wenn ich unsere letzte
Zeile gefunden habe, die 1290 ist, und dann habe ich F8 gedrückt, werden Sie sehen dass wir hier oben haben,
um den Text zu testen. In diesem Zustand ist falsch
und wir springen aus der Schleife. In diesem Szenario musste
ich also keine Codezeile eingeben, um automatisch
aus
der Schleife zu springen , da diese
Bedingung bereits erfüllt war. In der Zwischenzeit hier oben, damit ich
diese Schleife früh verlassen kann, weil wir diese Obergrenze haben der die Schleife bereits
denkt,
dass sie gehen muss. Wir müssen
diesen Ausgang haben, um in einen if-Zustand
zu verwickeln. Damit
wir nur in einem
bestimmten Zustand die for-Schleife
früh verlassen. Das war's vorerst. Das ist die grundlegende Demonstration
der Do-While-Schleife und die grundlegendsten Fälle,
warum Sie sie möglicherweise verwenden müssen.
22. 1.17.3 für jedes Intro mit Loop-Schleife: In dieser Lektion
möchte ich
die vier einzelnen Style-Schleife durchgehen . Du siehst also, dass wir
hier eine Schleife haben, die für jeden sagt. In den vorherigen Lektionen haben
wir die
normalen FOR-Schleifen durchlaufen, was der Standardwert ist,
bei dem Sie
eine Variable deklarieren , die eine
Ganzzahl ist. Oder mit. In diesem Fall
verwenden wir normalerweise I als Index, aber wir verwenden andere Buchstaben
oder Variablen. Und wenn Sie jede
Iteration der Schleife durchlaufen
, erhöht sich unsere Variable mit dem
ersten Wert bis zum letzten Wert. Wenn wir
diesen Code hier durchgehen, bin ich einer, und dann die nächste
Schleife, es ist 234, bis zu 100 hier. Und in diesem sehr
schnellen Beispiel verwende
ich unsere
Indexvariable, um
den Wert der Zelle
in Zeile I zu erhalten , und Spalte eins, die Sie hier sehen können, werden diese Werte sein. Wenn ich also gleich eins bin, haben
wir den Zellenwert
eins, dann 234. Und das liegt daran, dass
unsere Zeilennummer die Variable
ist, die sich
durch jede Iteration von ändert . Dies ist etwas, das
wir in
den letzten Lektionen bereits durchgegangen sind . Ich treffe einfach F5
und führe
das ganz durch und wir
durchlaufen all diese Variablen. Ich löse das jetzt aus. Es gibt diese andere Art von
Schleife, die ich sehr oft verwende. Es wird für jede Schleife genannt, es wird nicht so häufig verwendet, also erkläre ich es und zeige
Ihnen den Anwendungsfall dafür hier. Und hier habe ich schon
eine Schrift, wo du ein Objekt hast
, das ein Bereich ist. Grundsätzlich die für jede Schleife, anstatt
eine Indexvariable , die von einer niedrigeren
Zahl zu einer höheren Zahl zählt. Es
nimmt hier etwas auf der rechten
Seite der Aussage auf,
bei der es sich um eine Reihe von Objekten handelt. Und dann nimmt jeder
ein einzelnes Objekt, um
eine reale Analogie zu erhalten. Es könnte so sein, als
ob Sie eine Ziegelmauer haben, könnten
Sie für
jeden Bruch der Ziegelwand etwas sagen . Und dann hast du den nächsten
Stein ist unsere Notation hier. Und es wird
im Grunde
jede Einheit in einer Gruppe von Einheiten durchlaufen . Hoffentlich ergibt das einen Sinn. Ich glaube, das ist im Handumdrehen. Was ich hier habe ist, dass ich
eine Reihe von Zellen habe. Zelle A1 bis
100 werden also alle unsere Zellen sein , die hier Werte
haben, die wir bereits
in unserer vorherigen Schleife gesehen haben. Und wir haben hier eine
Objektvariable für einen Bereich erstellt
, der eine Zelle
oder Gruppe von Zellen ist. Dieser Ausdruck genau hier, für jeden Bereich, in diesem Bereich, sagt
ein Eins bis 100
grundsätzlich für jede Zelle im Bereich der
Zellen A1 bis 100. Und dann nehmen wir diesen Bereich und wir werden debuggen, den Wert
ausdrucken. Wenn ich also hier F8 treffe, Wert eins, und wenn wir das nächste Mal in diesen Bereich
gehen, sind
wir im Grunde in Zelle zwei hier
drüben, weil
wir einfach jedes Ding durchgehen werden. In dieser Gruppe von Dingen. Du siehst Wert2, Wert3, Wert vier usw., wie
ich hier durchgesehen habe. Führen Sie das nun
ganz durch und Sie können sehen, dass wir bis zu
100 gehen , weil wir
jede Einheit in dieser
Gruppe von Einheiten durchlaufen haben, die A1 bis 100 ist. Ich kann sogar hier hinzufügen,
vielleicht fügen Sie etwas Klarheit unser Sortiment all diese
verschiedenen Eigenschaften hat. Ich kann so etwas wie Debug sagen, unsere Adresse
ausdrucken. Wenn ich das lösche
und erneut F8 treffe, ist
hier unser Wert eins, und Sie können sehen, dass die
Bereichsadresse A1, A2, A3 ist. Weil wir jede Zelle
in dieser Zellgruppe
durchlaufen . Der Unterschied hier,
wie Sie sehen können, dass es keinen Index gibt. Und ich sage dieser Schleife nicht , wann sie beginnen muss und
wann sie aufhören muss. Wie hier müssen wir von eins
bis
100 sagen und wir müssen wissen, dass sie unsere Untergrenze
genannt wird. Obergrenze. Aber hier findet die Schleife
nur heraus,
wie viele Einheiten in unserer
Einheitengruppe hier drüben sind. Und wenn ich
so etwas wie A1 bis B10 gemacht habe, zum Beispiel
100, kann ich das machen. Und lass mich damit aufhören, damit
wir es wieder anfangen können. Findet das hier unten heraus. Wir haben Wert eins
und unsere Kleider A1. Jetzt haben wir einen Rohling
in unserem Kleid ist b1. Also lasst uns hierher kommen. A2, B2, B3, B3 Und du siehst, dass dieses Ding die
Entscheidung von selbst trifft. A1 bis 100 ist
das bis zu 100 runter? Und während es durchläuft, jede Zelle in dieser
Zellgruppe
von geht
jede Zelle in dieser
Zellgruppe
von hier nach hier, nach hier und so weiter. Und es findet heraus welche Zellen in
dieser Zellgruppe sind. Das ist dieser Bereich. Wir können das machen. Das ist also die Grundidee
einer foreach-Schleife, die nur
eine schnelle Einführung macht. Du nimmst deine Gruppe
von Dingen und es wird alles durchgehen. Und dann können Sie diese Variable
in Ihrer Schleife
verwenden , ist normalerweise der Grund, warum
Sie dies tun möchten. Und Sie müssen sich keine Sorgen
um diese numerischen Indexzahlen machen
, die wir hier verwenden. Es findet diese Einheit für
Sie mit der Schleife heraus. Ein weiterer Anwendungsfall hier, den ich
vorbereitet habe , ist genau das Gleiche. Ich mache eine indexbasierte Schleife, die der gebräuchlichere Stil ist. Und ein weiterer Anwendungsfall
für die, für jede Schleife. Also hier, wenn ich herkomme,
siehst du, dass ich diese
Laken habe, 12345 hier drüben. Ich benutze meinen Index. Und wenn ich hier F8 treffe, habe ich hier einen Tippfehler gemacht. Das ist als Nächstes, ich sehe unser Nächstes immer
das ist, worauf unsere Schleife basiert. Da wir also hier unten eine
for-Schleife machen ,
muss ich als Nächstes sagen, wenn du
für jeden Bereich hierher kommst, wenn ich meine Schleife beende, sage
ich, geh zum nächsten
Bereich. Hier drüben. Hier drüben läuft dies von I gleich eins der Anzahl der Arbeitsblätter
in dieser Arbeitsmappe, den Arbeitsblättern und dann
der Anzahl der Arbeitsblätter, die wir hier sehen, eins bis fünf
ist. Wenn ich das ausführe, entspricht ich 1234 und Sie sehen, dass es diese Blätter für
fünf
auswählt und diese hier
unten aktiviert werden. Und dann das gleiche
Konzept mit den Zellen und dem Zellbereich
, das wir zuvor gemacht haben. Stattdessen kann ich diese
andere Notation machen, in der ich hier ein Arbeitsblattobjekt
habe. Und dann sagen wir für jedes Arbeitsblatt in unserer
Arbeitsblattgruppe. Das bedeutet also hier drüben alle Arbeitsblätter
in unserer Arbeitsmappe. Dann kann ich dieses
Arbeitsblattobjekt hier verwenden. Und durch jede Iteration
wird jedes Blatt hier durchlaufen. Und wenn ich dann „Aktivieren“ sage, wird
das Arbeitsblatt aktiviert. Wenn ich also hier schreibe, aktiviere Blatt eins, das jetzt
bereits 2345 aktiviert ist. Das war's also. Das ist nur eine grundlegende Einführung
in die, für jede Schleife. Die Magie daran ist, dass es eine Gruppe von Dingen
braucht und herausfindet, wie viele der
einzelnen Einheiten da drin sind. Und es kommt
damit für Sie heraus, ähnlich wie unser Beispiel hier oben,
alles, was wir tun müssen, ist
unser Objekt hier auf der
rechten Seite des foreach zu ändern . Und die Schleife selbst
würde herausfinden wie viele Untereinheiten in dieser
Gruppe von Einheiten hier drüben sind. Hoffentlich ergab das einen
Sinn. Wir werden mehr zu
unserer Erklärung von
for-each Schleifen hinzufügen , während wir gehen. Aber das ist eine grundlegende
Einführung dessen, was es ist.
23. 1.17.4 Variant: In dieser Lektion möchte ich Ihnen
den Variablentyp in
VBA vorstellen ,
der als Variante bezeichnet wird. Und um das zu tun, werde ich
ein paar Demonstrationen machen , mit dem was mit
verschiedenen Variablentypen passieren kann. Sie haben bereits gesehen, dass wir Ganzzahlen und Strings
verwenden, was für
Variablentypen und jede
Programmiersprache wirklich üblich ist. Also habe ich hier ein paar
davon erstellt,
zwei ganze Zahlen, und dann diese
String-Variable hier drüben. Dann haben wir diese Varianten
, die vorerst beiseite gelegt werden. Sie können hier unten sehen
, dass ich
unsere Ganzzahl i1 setzen werde , die dem
Wert dessen entspricht, was sich im Bereich A1 befindet, was hier eins ist. Sie sehen also, dass unsere Ganzzahl Eins zu Bereich A1
wird. Und das funktioniert gut. Siehst du, ich schwebe hier drüben
und es heißt, I1 ist gleich eins, genau wie wir es von
dieser Zelle links erwarten würden . Jetzt nehme ich
unsere Textvariable, die unsere Zeichenkette ist. Und ich werde sagen, ist auch
gleich Zelle A1. Wenn ich also mit der Maus über Texte fahre, kannst
du sehen, dass es auch korrekt
funktioniert hat. Es zeigt Ihnen
, dass Text gleich eins ist. Aber hier gibt es einen Unterschied,
wo Sie über Text sehen, es gibt diese
Anführungszeichen, weil es eine Zeichenfolge ist. Das liegt daran, dass eine Zeichenfolge alle Zeichen,
Buchstaben, Zahlen und
Sonderzeichen akzeptieren
kann . Und so gibt es ein
Anführungszeichen, das das anzeigt. In der Zwischenzeit, wenn ich zu i1
zurückkomme, gibt es keine Anführungszeichen die
darauf hinweisen, dass dies
nur ein numerischer Wert ist. Was Sinn macht, weil ich will, ist eine Ganzzahl,
keine Zeichenkette. Jetzt haben wir I2, was hier oben eine Ganzzahl ist. Und wir setzen
das auf den Wert von Zelle A2 hier drüben. Und wir erwarten, dass das nicht funktioniert. Als ich also F8 drücke, sehen Sie, dass
wir eine Typabweichung haben. Das liegt daran, dass i2 eine Ganzzahl sein muss
. Aber hier ist die
Zelle der Buchstabe a, also ist der Wert hier und der
Variablentyp nicht kompatibel. Und so bekommen wir diese
Art Nichtübereinstimmung. Das kommt also ständig zur Sprache. Dann müssten wir uns etwas
überlegen. Entweder war das ein echter Anwendungsfall. Entweder ist der falsche Wert hier in Zelle A2 und wir
wollen diesen Wert nicht dort haben, oder wir haben
diese Variable nicht korrekt erstellt und wir sollten sie in
eine Zeichenkette oder etwas anderes umwandeln. Das ist also diese Art Nichtübereinstimmung. Dies alles ist eingerichtet, um diese Varianten zu
demonstrieren. Also habe ich hier zwei Variablen erstellt
, die Variantentypen sind. Also v1 und v2. Ich überspringe einfach diese
Typ-Nichtübereinstimmungslinie, die wir
hier haben , und springe zu v1 über. Und es sind beide Variantentypen. Du siehst also, ich werde hier
etwas mit V1 und V2 machen. Und ich werde diese
V1 so setzen, dass sie der Zelle A1 entspricht, was hier drüben der Wert
eins ist. Ich führe das aus. Und wenn Sie den Mauszeiger über V1 bewegen, sehen
Sie, dass daraus eins wurde. Und es hat keine
Anführungszeichen. Das sagt dir also, dass
es kein String ist. Das ist also dem Schweben
hier auf i1 sehr
ähnlich ,
das ist eine Ganzzahl. Jetzt auf V2
bekommen wir den Buchstaben A hier. Wenn ich also F8 drücke,
siehst du, wie das funktioniert. Und das ist der Buchstabe
a mit Anführungszeichen. Es scheint also, als wäre
das ein String, genau wie unsere
TXT-Variable hier drüben. Das ist also irgendwie interessant. Sie sehen, dass dies keine
Anführungszeichen oder V1 hat. Und dann hat das
Anführungszeichen für V2. Und beide Variablen
sind ein Variantentyp. Und jetzt werde ich debuggen und diese Nachricht hier
ausdrucken. Und dieser typbenannte Befehl
ist in
VBA integriert und
gibt Ihnen den Typnamen der Variablen
in Klammern an. Als ich das getroffen habe, werde
ich gerade
feststellen, dass ich diesen Debug-Ausdruck
verlassen hatte . Wenn du das gesehen hast, war das ein Spoiler für das,
was ich dir zeigen werde. Wenn ich das ausführe, siehst
du, dass V1 hier unten
ein Double vom Variablentyp ist. Und dann hier unten der
Variablentyp v2 ein String. Das ist interessant,
weil wir sie
hier oben deklariert haben , beide als Varianz. Was Varianten sind, ist
eine offene Variable, die bei
der ersten Verwendung zum Variablentyp
wird . Wenn
Sie dies deklarieren, heißt
es im Grunde , dass Sie nicht wissen welcher Variablentyp V1 oder V2 ist. Und wenn Sie es dann zum ersten Mal hier oder hier
verwenden, wird
es versuchen herauszufinden, welchen
Variablentyp es haben soll. Es wird seine beste
Vermutung in der Seite für Sie geben. Dies ist ein Workaround,
damit wir unseren
Variablentyp nicht kennen
müssen , bevor wir ihn verwenden. Das ist eine Variante. Es ist unbefristet. Und dann, wenn Sie die Variable zum ersten Mal
verwenden, wird
sie ihr Bestes geben, um diesen Variablentyp zu
deklarieren. Und Sie sehen, nachdem wir diese beiden Zeilen
ausgeführt haben, wurde
daraus jeweils eine doppelte
Endsaite. Wenn ich also hierher komme
und es noch einmal versuche, kommentieren
wir diese
Zeile, die
eine Typabweichung erzeugt .
Lass uns das nochmal versuchen. Ich gehe durch,
ich werde das klären. Und Sie sehen, dass der Typ hier
leer ist , weil
kein Typ wieder leer ist. Sobald Sie
diese Variablen V1 und V2 verwenden, wird es
in diesem Fall zu
einem Double und einem String. Und das liegt daran, dass, wenn es diesen hier drüben
sieht, vermutet
es, dass es eine Zahl ist. Interessanterweise
sehen Sie, dass es eher
ein Double als eine Ganzzahl ist. Und so geht es nur
darum, seine beste Vermutung anzustellen. Und das ist einer
der Gründe, warum wir nicht immer Varianz
für alles verwenden, obwohl es nett erscheint und unseren Typfehlanpassungsfehler
vermeidet, wird
es
seine beste Vermutung machen, was ist nicht immer
das, was du willst. Wenn es hier eines sieht, geht
es davon aus, dass
es sich um ein Double handelt,
was bedeutet, dass es
möglicherweise
Dezimalstellen haben kann , obwohl es hier keine
Dezimalstellen gibt. Und dann findet es richtig
heraus, dass
es für den Buchstaben a eine Zeichenfolge sein muss, da es sich nicht um einen dieser
anderen
Zahlenvariablentypen handeln kann . Nun, wenn ich so etwas wie diese
neu deklarieren würde, versuchen
wir es noch einmal. Also mach das noch einmal und wir folgen ihm
durch seinen Code. Tauschen wir diese aus. Also machen wir B und
dann zwei hier drüben. Und dann tauschen wir
diese beiden aus, A4 und A5. Sie sehen also, wir
wechseln die Dinge zum ersten Mal, dass v1 eine Zahl ist, und dann
wird V1 das nächste Mal ein Buchstabe werden. Lassen Sie uns sehen, was es
mit seiner besten Vermutung
der Variablentypen macht . Komm zurück und wir
haben unser leeres, leeres. Wir haben sie als eine,
als eine und eine hier drüben gesetzt . Es wird also double und string. Und dann setzen wir
sie jetzt als B und zwei. Und dann doppelt einreihen. Schau, sie haben gewechselt. Und das zeigt Ihnen,
dass eine Variante, sobald wir sie deklariert haben, adaptiv bleibt, obwohl wir sie hier setzen und die Variante automatisch
ihren Variablentyp erraten hat. Wir können das dann ändern. Es wird keine Typabweichung erzeugen , wie
es der Fall ist, wenn wir oben einen strengen Variablentyp für unsere Standardvariablen
festlegen hier oben einen strengen Variablentyp für unsere Standardvariablen
festlegen. Eine weitere Sache, die ich
testen möchte, ist, dass ich
hierher kommen und sehen möchte , wie es
sich anpasst, um hier zu übertreffen. Also genau hier
siehst du, das ist eine Zahl. Wenn ich a tippe, ist es
drüben links. Ich habe einen, er ist
drüben rechts. Das liegt daran, dass unsere
Zellen auch
versuchen herauszufinden, um welche
Art von Wert es sich handelt. Zahlen werden automatisch standardmäßig rechts
neben der Zelle ausgerichtet. Wenn wir nun
hierher kommen und dies
in einen Textzellentyp ändern , sehen
Sie, dass unsere Nummer eins automatisch nach links ausgerichtet wird, genau wie der Buchstabe a, weil Text wird
automatisch nach links ausgerichtet. Gehen wir jetzt zurück und klären das noch einmal.
Wir führen das durch. Wir haben unser Leergut. Und jetzt kommt v1 hierher und Sie können sehen, dass
es keine Anführungszeichen gibt. Wir können also schon vermuten, dass unser V1-Typ immer noch ein Double ist. Das zeigt Ihnen also
, dass es sich nicht unbedingt
an die Tatsache anpasst, dass die Tabelle hier drüben das als Zeichenfolge oder
Text
kennt und es hier oben
links nach dem Zellentyp ausrichtet. Vba arbeitet irgendwie
getrennt davon. Es sieht also den hier drüben, es vermutet immer noch, dass eine Eins für sich genommen ein
Double und keine Saite ist. Was Sinn macht, warum
es das denkt. Wenn du jetzt so etwas wie das in eines
verwandeln würdest, würden
wir z.B. erwarten, dass das
a, das ein Teil davon ist. Siehst du, wir bekommen diesen
Fehler tatsächlich, weil diese Ganzzahl keinen akzeptieren kann. Lass uns einfach hier rüber springen. Und tut mir leid, ich mache einen furchtbaren Job
mit diesen Nachrichten hier. V1 ist eine Zeichenfolge, weil
eins keine reelle Zahl ist. Das ist es also. So funktionieren Varianten. Wir verwenden sie nicht übermäßig wegen
dieses Problems hier, wo
es nicht sehr starr ist. Und das kann Ihren Code
etwas unberechenbarer machen , was einige Probleme verursachen kann. Genauso wie Sie erwarten könnten, dass die Zahl eins
eine ganze Zahl oder ein Long ist. Und es
vermutet automatisch, dass es ein Doppel ist. Dadurch werden die Dinge etwas
weniger explizit kontrolliert. Es ist also nicht unbedingt
etwas, das wir überbeanspruchen wollen, aber es hat seine Anwendungsfälle auf unbestimmte Ihnen
das Leben erheblich erleichtern. Und wir werden in Zukunft einige dieser
Beispiele zeigen.
24. 1.17.5 Für jede Schleife mit Variante: In den letzten paar Lektionen habe ich absichtlich die für
jede Schleife und auch den variablen
Variablentyp durchgegangen . liegt daran, dass ich diese schnelle Demo hier
machen wollte, die diese
beiden Konzepte miteinander kombiniert. Genau hier habe ich
die gleiche Demo, die ich in der für
jede Loop-Lektion
gemacht habe , nämlich dass wir hier eine
für jede Schleife
haben und eine Blattvariable haben
, die ein Arbeitsblatt ist. Beachten Sie, dass es hier kein S gibt, es ist ein einziges Arbeitsblatt. Und wir werden
für jedes Arbeitsblatt
in allen Arbeitsblättern
in dieser Arbeitsmappe
sagen , dass Arbeitsblätter hier das S für Plural enthalten sind. Und genau wie unsere Lektionen können
wir
hier durchgehen und Sie können sehen, dass wir jede Registerkarte
aktivieren, während wir
durchgehen, weil dieses
SH-Objekt inkrementiert.
Laufen Sie weiter. Dies hier erhöht sich, während wir Schleife ziehen und so weiter in der nächsten Schleife,
es geht zum nächsten Blatt, dem nächsten Arbeitsblatt, in
das nächste Arbeitsblatt. Was wir hier tun können, ist die Dinge
absichtlich durcheinander zu bringen. Also werde ich diese
Variable ändern, um einen Bereich zu sein. Genau wie das Beispiel vor dem Arrangement eine Zelle
oder eine Gruppe von Zellen ist. Und was wir hier erwarten ,
ist, dass VBA verwirrt
wird da der Plural der Arbeitsblätter
aus vielen
einzelnen Arbeitsblättern besteht . Es besteht nicht aus
vielen einzelnen Bereichen, zumindest nicht direkt. Und so wissen wir, dass diese Plural-Arbeitsblätter
eine Reihe verschiedener
einzelner Arbeitsblätter enthalten. Es hat keine
Reihe von Bereichen drin. Und so haben wir ein Typ-Missverhältnis,
das wir genau hier haben. Jetzt höre ich
das komplett auf. Und
wenn wir dann
in unsere Arbeitsblattgruppe zurückkehren, haben
wir natürlich in unsere Arbeitsblattgruppe zurückkehren, einzelne Arbeitsblätter. Wenn wir also unser einziges
Arbeitsblatt hier haben, es
in unserem ersten Beispiel so funktioniert. Wir arbeiten wieder richtig. Natürlich, wie wir angefangen haben. Jetzt mit unserem
variablen Variablentyp. Wir haben diese Varianz durchgegangen, wir nennen Dimension
V als Variante. Hier ist ein nicht deklarierter
Variablentyp ,
der
bei seiner ersten Verwendung zum Variablentyp wird . Nicht wirklich die erste
Verwendung bei irgendeiner Verwendung, da wir gesehen haben, dass es sich
auch nach einmaliger Verwendung anpasst. Also wenn ich unsere
Variantenvariable hier nehme, v, Lass uns das machen. Und Sie sehen, dass wir
hier fehlerfrei durchgekommen sind und es funktioniert genau wie damals, als wir unsere Arbeitsblätter variabel
hatten. Wenn ich hierher gekommen bin und es mit dem Debug-Druck vier
gemacht habe, machen
wir hier unseren Typnamen
, den wir in unserer letzten Lektion verwenden. Und wir werden uns ansehen,
welche Variable Typ V ist. Während wir diese Schleife durchlaufen, können
Sie sehen, dass wir das Blatt
aktivieren. Und wieder habe ich
diese Nachrichten hier oben hinterlassen. Sie können sehen, dass unsere
VIE-Variable zu
einem Arbeitsblattobjekt geworden ist,
da
sie das letzte Mal für jede Schleife verwendet wurde. Und so vermutet VBA wieder
seine beste Vermutung, um herauszufinden, welche Art von
Variable das v sein sollte. Und in diesem Fall
sehen wir, dass es
sogar herausfinden kann , dass
es sich um eine Objektvariable handelt, nicht nur eine Ganzzahl oder eine Zeichenfolge oder ein Double oder
ähnliches. Es benutzt es. Und wenn man merkt, dass
es
im Kontext dessen, als es verwendet wird, eine
Arbeitsblattobjektvariable werden muss. Und so siehst du,
dass das weiter funktioniert. Dies ist also nützlich, da Sie in einigen Fällen eine für jede Schleife
schreiben und möglicherweise
die Objektvariable
hier kennen , die wir verwenden, was eine Gruppe von Dingen ist. Aber Sie kennen die
Singular-Objektvariable nicht , aus der diese besteht. In diesem Beispiel, das ich habe, ist
es wirklich einfach. Wir haben Arbeitsblätter
mit S als Plural. Und natürlich ist das eine Reihe einzigartiger Arbeitsblätter
ohne das S hier drüben. Dieser wird also nicht wirklich benötigt, aber Sie werden auf
andere Objektvariablen stoßen ,
die ebenfalls im Plural sind eine Gruppe von Dingen sind
, die nicht so offensichtlich sind. Und in diesen Fällen können wir
eine Variante verwenden, wie wir es hier tun. Oder wenn wir expliziter
sein wollen, können
Sie sogar
eine Demo wie ich schreiben und
herausfinden, dass der
Objekttyp ein Arbeitsblatt ist. Und dann komm wieder hierher und schreibe
deinen Code um, um expliziter und spezifischer in deinem Anruf zu sein, und erstelle
deine Arbeitsblattvariable. Jetzt wissen wir, dass das
Objekt, nach dem wir in unserer foreach-Schleife
suchen ,
ein einziges Arbeitsblatt ist oder
was auch immer es ist. Das war's. Ich wollte nur diese
beiden Konzepte zusammenstellen weil ich sie
beide als verwandt sehe. Dies sind also zwei Konzepte , die beide etwas
für Sie
herausfinden , das wir
normalerweise eher
daran gewöhnt sind , uns selbst
herausfinden zu müssen.
25. 1.17 Objektvariablen – Set – Einführung: In diesem Video
möchte ich
die Idee von Objektvariablen vorstellen . Aber wir haben vorher gearbeitet,
sind typische Variablen. Also werde ich ein Beispiel
erstellen,
eines, das wir zuvor gesehen haben, nämlich nur eine Zeichenfolge,
die ich Dimensionstext
als String
sagen werde, Text ist die ich Dimensionstext
als String
sagen werde gleich Steve. Wir machen sogar etwas und
wir legen das in eine. Wert ist gleich dx, dy. Lass uns das laufen lassen. Ich drücke F8, gehe
durch Dx
t gleich t. Und dann schicke
ich es hier an
unser Arbeitsblatt in Zelle A1. Dies ist also eine normale
Variable, die wir deklarieren. Dann kann es in
diesem Fall
einige Informationen enthalten , da wir
es als String-Typvariable bezeichnen. Dann enthält es ein paar
Textinformationen. Und dann können wir Sachen
mit dieser Variablen machen. Etwas, das wir
noch nicht behandelt haben, sind Objektvariablen. Objektvariablen sind ein
bisschen anders und es kann ein sehr fortgeschrittenes Thema sein, und wir können lange darüber und alle Details
sprechen. Aber ich werde mich gerade auf
einem sehr hohen Niveau halten , in dem wir es verwenden werden
, wenn Sie Automatisierung
beginnen, VBA. Wenn wir das entfernen, lösche
ich das einfach hier raus. Und dann erstellen wir eine neue
Variable, die als Bereich bezeichnet wird. Und wir sagen als Reichweite. Das sieht sehr danach aus, wie wir unsere String-Variable
deklariert haben . Und das ist eine Reihe, und
wir haben mit Bereichen gearbeitet. Bereiche sind eine einzelne Zelle
oder eine Gruppe von Zellen. In unserer Tabellenkalkulation. Wir sagen, dass der Bereich gleich dem Bereich A1 ist. Sagen wir mal. Und dann
führe ich das durch. Ich habe F8 getroffen. Wir haben Text, und dann haben
wir unser Sortiment. Wir sehen, dass die Objektvariable oder
die Blockvariable nicht gesetzt ist. Und das werden wir die
ganze Zeit sehen, wenn wir unsere
Erklärungen so durcheinander bringen. Und das liegt daran, dass
wir nicht einfach sagen , dass diese orangey Variable unser Bereich A1 ist, da es sich eine Objektvariable und keine
Standarddatenvariable handelt. Wenn Sie eine Objektvariable haben, müssen
Sie dieses Wort am
Anfang verwenden. Und das ist der einzige
Unterschied, den
wir haben, wenn wir dies gerade erklären, für unser
bisheriges Beispiel klicke ich darauf. Wir sehen, dass wir diese Zeile passieren und wir erhalten keinen
Fehler, indem wir nur das Wort
verwenden, das hier
am Anfang gesetzt wurde, und wir sind fertig. Was heißt das also? Und warum unterscheiden sich diese beiden Arten von Variablen voneinander? Wir haben also gesehen, dass wir hier etwas
mit unserer Textvariablen machen
können . Wir können den Druck debuggen
und an
unser Unmitteldate-Fenster senden , damit wir sehen
können, wie das aussieht. Jetzt haben wir also unsere Textvariable und wir
können damit Sachen machen. Diese sehr einfachen
Aufgaben wie
das Senden an unser
unmittelbares Fenster. Was können wir mit
dieser Bereichsobjektvariablen machen? Sie können sehen, wenn ich diesen
Objektvariablenbereich eintippe und
das Periodenzeichen dort platziere, werden alle diese
Optionen angezeigt. Es gibt verschiedene Dinge, die wir damit machen
können und verschiedene Eigenschaften, die dafür existieren. Also kann ich hier etwas
sehr Einfaches machen, wie Backup, damit wir unsere Optionen so sehen
können, wie
ich es auswähle. Also legen wir unseren Bereich auf A1 fest, und dann können wir es auswählen, was wir nicht
sehen werden, weil wir bereits in einem sind. Aber wenn ich hier raus
klicke und
diesen Cursor wieder nach oben bewege und
führe diese Zeile erneut aus. Hier wählen wir den Bereich aus. Diese Bereichsobjektvariable
hat all diese Eigenschaften und Methoden, die wir
gegen dieses Objekt ausführen können. Wenn wir in der Zwischenzeit
zu unserer Textvariablen zurückkehren, setzen
wir hier eine Periode ein. Wir sehen, dass wir kein
Dropdown-Menü für all die
verschiedenen Optionen erhalten , die wir haben. Aufgrund dieser normalen
Datenvariablen besteht
ihre Hauptfunktion
darin, einige Informationen zu speichern , damit
Sie sie später wieder verwenden können. In der Zwischenzeit sind diese
Objektvariablen ein Verweis auf ein Objekt, das
alle diese Definitionen bereits
in den Hintergrund integriert hat . Und dann können Sie all diese
Definitionen von Eigenschaften und Prozessen erreichen, indem
Sie diese zusätzlichen Befehle ausführen. Und das war's für dieses Video. Ich wollte nur eine
äußerst grundlegende Einführung in
diese Objektvariablen sein diese Objektvariablen , wenn wir das Wort set
verwenden müssen. Und dann werden wir
weiter
darauf aufbauen, während wir voranschreiten.
26. 1.18.2 Object – Declare + Dateien im Ordner lesen: In diesem Video möchte ich zwei
verschiedene Dinge
durchgehen . Zuerst wollte ich eine Demonstration
machen, dass wir nicht nur Dateien und Ordner
erstellen können, die ich Ihnen
in früheren Lektionen gezeigt habe. Aber ich möchte
Ihnen hier ein Beispiel für eine Funktion geben , in
der wir einen Ordner
aufnehmen und
alle Dateinamen lesen können einen Ordner
aufnehmen und
alle Dateinamen lesen , die
sich in diesem Ordner befinden. Als ich versuchte,
mich daran zu erinnern, wie dieser Code funktioniert, habe ich ihn einfach in Google eingegeben, im Grunde
etwas wie VBA eingegeben Dateinamen
aus einem Ordnerpfad
gelesen. Und ich habe Code, der so
aussah. Und wenn ich das hier ausführe, füttere
ich ihm einen Ordnerpfad
, den ich hier habe. Und wenn ich dann auf Run klicke, sucht
es alle Dateinamen nach
, die sich in diesem Ordner befinden. Wenn ich also hierher komme, kannst
du sehen, dass es die Dateien
aus diesem Ordner
zieht und
sie hier in Excel platziert. Sie könnten das aus einer Reihe
verschiedener
Gründe nützlich finden . Und das ist erst
der Anfang, die Dateinamen zu bekommen. Eine andere übliche Sache, die
Sie möglicherweise
tun müssen , ist, jede Datei zu öffnen, Automatisierung
durchzuführen, die etwas mit
allen Dateien in diesem Ordner
oder einigen Dateien
in diesem Ordner
erledigt die etwas mit
allen Dateien in diesem Ordner . Das zeige ich hier also. Du kannst das nachschlagen. Und ich werde
hier nicht zu tief
in diese Funktion eingehen , die das getan hat. Sie können dies auch pausieren
und sich den Code als Referenz ansehen und sehen,
wie jede Zeile funktioniert. Als ich das tat,
erinnerte es mich tatsächlich an etwas, das
ich für die
Objektvariablen
erklären wollte , die im vorherigen Video enthalten waren. Als ich diesen
Code von einer Website gefunden habe, ist StackOverflow vielleicht
eine andere gemeinsame Website. Was sie hier haben, und das werden
Sie sehr oft sehen,
ist, dass wir diese Variable erstellen. Es ist eine Objektvariable und wahrsten Sinne des Wortes als Objekt hier. Und das sagt
Ihnen nur, dass es sich um ein Objekt handelt, aber nicht speziell um welche
Art von Objekt es sich handelt. Im vergangenen Video haben wir Objekte wie
eine Arbeitsmappe oder ein
Arbeitsblatt oder einen Bereich gezeigt . Und wir werden
weiterhin haben, dass dieses Objekt
diese breitere Kategorie ist , die
sagt, dass es ein Objekt ist, dann können Sie genauer werden. Und dann setzen
wir dieses Objekt in der nächsten Zeile setzen
wir dieses Objekt in das spezifische Objekt ein
, das es sein muss. In diesem Fall arbeiten
wir also mit einem Dateisystemobjekt, da
wir hier aus unserem
Datei-Explorer lesen werden. Und Sie sehen, dass wir unser FSL-Objekt in das
Create Object Scripting-Dateisystemobjekt setzen. Dies lässt uns hier Dinge tun. wir das nächste Mal o
fs o für unser Dateisystemobjekt sehen , machen
wir Dot Get Folder. Das habe ich
Ihnen gezeigt, wenn
Sie Objektvariablen verwenden Sie alle diese Parameter
und Funktionen und
Methoden eingebaut haben . Und jetzt
benutzen wir das hier. Im vorherigen Video habe ich diese andere Notation durchgegangen. Ich habe das nicht getan, wo wir die Variable
als unscheinbares Objekt
festlegen und dann
diese Create Object Line
stattdessen im vorherigen Video verwenden .
Wir haben so etwas gemacht, als würde
ich im Grunde genommen unsere
FSL-Objekt. Ich werde diese
Variable nur in
dieser Notation anders machen , aber wir werden dasselbe
tun. Und anstatt Objekt zu machen, können
Sie sehen, dass das
Dateisystemobjekt hier
skriptiert wird, Skriptnamen des Typs
fünf. Nichts taucht hier auf. liegt daran, dass
wir genau wie
unser vorheriges Video unser
Dateisystemobjekt
in unserer Referenzbibliothek vermissen . Also wollte ich Tools
und Referenzen machen. Und wenn ich hier reinkomme
und hier zur
Microsoft Scripting
Runtime scrolle , und ich füge dies hinzu, klicken Sie auf das Kontrollkästchen und klicken Sie auf. Okay. Jetzt wie zuvor kann
ich Scripting machen und
das ist jetzt aufgetaucht, obwohl es vorher nicht da
war. Und ich drücke die Tabulatortaste, und
wenn ich die Periode
erreiche, habe ich das Dateisystemobjekt. Jetzt mache
ich an dieser Stelle bereits dasselbe wie
diese beiden Zeilen. In dieser Zeile erstelle ich das
allgemeine Objekt und nenne
es dann ein Dateisystemobjekt
aus der Skriptbibliothek. Hier. Ich mache genau das Gleiche. Ich habe jetzt eine
Objektvariable, die ein
Script-Punkt-Dateisystemobjekt
ist. Der Vorteil, dies auf diese Weise zu
tun, was ich
in der vorherigen Lektion gezeigt habe,
besteht darin, dass dies weiß was dieses Objekt ist und wir diese Referenzbibliothek
hinzugefügt haben. Jetzt weiß unser Code-Editor verschiedene Dinge
, die er
mit dieser Objektvariablen machen kann . Denn jetzt hat es
die ganze Bibliothek darüber, was das
Dateisystemobjekt tun kann. Ich kann Dinge
wie Ordner holen hier sagen und dann siehst du, dass er seine Liste
anzeigt und automatisch ausfüllt. Ich brauche eine Klammer
und es sagt mir, dass ich hier einen
Ordnerpfad erhalten muss . Und wir erstellen diese Linie im Grunde
neu. Also lass mich das hier runterziehen. Eigentlich
fange ich einfach hier an. Erhalte Ordner gleich o FSL bekommen. Und dann haben wir
unseren Ordnerpfad. Diese beiden Zeilen, jetzt, diese Zeile und diese Linie
machen dasselbe. Und der große Unterschied besteht
darin, dass ich zuerst die Skriptbibliothek
hinzufügen musste die Skriptbibliothek
hinzufügen wenn wir zu Tools
und Referenzen gehen. Es braucht also ein bisschen mehr
Arbeit, um loszulegen, dass ich das hier in unserem Editor machen
muss. Aber sobald ich das mache, der Vorteil darin, dass ich, wenn ich
Punkt FSL für hier und Trefferperiode tippe , alle diese Funktionen bereits
eingebaut
habe. Wenn ich nun das Original
verwende, verwende diese Notation
für unser FSL-Objekt, das so erstellt wurde. Wenn ich jetzt die Periode erreiche,
siehst du, dass sie
keine der Funktionen kennt. Methoden sind Parameter, die Teil dieses Objekts
sind. Und das liegt daran, dass wenn
wir diese
Objektvariable
deklarieren, keine Ahnung hat, welche Art von
Objektvariable dies ist. Dann findet diese Einstellung für das
Skriptdateisystemobjekt erst statt, wenn
der Code ausgeführt wird. In diesem Fall, unserem Editor, weiß er nicht, welcher
Objekttyp
es sich
tatsächlich handelt , bis es ausgeführt wird, und dann wird es zum
Skriptdateisystemobjekt. In dieser Notation haben wir
unsere Referenzbibliothek hinzugefügt und jetzt weiß unser Code-Editor selbst, was
dieses Objekt tun kann. Und dann bekommen wir diese
Option eingebaut. Es ist am Ende genau
das Gleiche. Nur ich mache es gerne so weil es einfacher ist, unseren Code zu schreiben und
diesen Editor zu machen, und auf
diese Weise müssen Sie
nicht zu Tools,
Referenzen und die
Bibliothek hinzufügen, damit es funktioniert. Das ist also für
das kleine
Setup am Anfang einfacher . Ich möchte sicherstellen, dass ich
das abdecken werde. Denn wenn Sie
sich Code online
ansehen, werden Benutzer oft diese Methode verwenden. Und jetzt wissen Sie, dass der
Unterschied darin besteht, dass
sie dasselbe bedeuten, wenn Sie die beiden Notationen sehen . Aber Sie werden das
oft sehen, wenn Sie Code aus dem Internet
erhalten, Leute ihn veröffentlichen, weil es einfach zu kopieren und einzufügen ist und
Sie den Leuten nicht
erklären
müssen , dass sie diese Bibliothek hinzufügen müssen. Und sobald Sie
diesen Deklarationsteil hinter
sich haben, funktioniert der Code selbst genau gleich.
27. 1.18 Workbook: Nachdem wir nun eine
Einführung in Objektvariablen gemacht haben, wollte
ich eine Lektion drehen, um einige der
häufigsten Objekte
zu durchgehen ,
Variablen, mit denen wir in Excel arbeiten werden. Und du wirst sie sofort
erkennen. Die gebräuchlichsten
werden wahrscheinlich Arbeitsmappen ,
Arbeitsblätter, Bereiche. Ich erinnere mich dass Wut
im Wesentlichen Zellen sind. Natürlich
erkennen Sie das ich sie laut ausspreche
und sie eintippe, die Arbeitsmappen sind, sind
unsere Excel-Dateien oder Arbeitsblätter oder unsere Registerkarten hier
unten und unsere Bereiche. Jeder, der mit
Excel gearbeitet hat, hat also Erfahrung
gemacht, mit
diesen zu arbeiten , nur wir haben sie noch nicht
wirklich als
Objektvariablen betrachtet. Beginnen wir damit,
eine Objektvariable zu deklarieren, und wir sagen WB für
Arbeitsmappe als Workload. Was ich hier habe, ist
die Datei, in der wir arbeiten, wird main genannt. XLS-Dateiname, in dem wir
arbeiten, heißt main. Wenn ich also
so etwas sage, mach dir eigentlich keine Sorgen um diese
Zeile, die ich bisher hinzugefügt habe. Ich würde Debug dafür sagen. Und ich sage diese Arbeitsmappe. Und wenn ich „Control Space“ drücke, können
Sie sehen, dass es mir
diese Optionen gibt, um
das Wort, diesen Arbeitsmappennamen, automatisch zu vervollständigen . Und das drucke ich aus. Und wenn ich also F8 drücke,
haben wir hier nur eine Codezeile. Und der Name dieser Arbeitsmappe
, in der wir hier arbeiten, und der Code ist
Hauptpunkt XLS m. Jetzt werden wir
hierher zurückkehren und
wir haben dieses Arbeitsmappenobjekt,
das ich hier deklariert habe, wie wir es in unserem letzten gesehen haben Lektion. Wenn ich das eintippe,
sagen wir, WB-Objekt ist diese Arbeitsmappe. Und wenn Sie dies durchlaufen, haben wir direkt dort einen Fehler
getroffen,
da es sich um eine
Objektvariable handelt und wir dort platzieren
müssen, wo sie am Anfang festgelegt
ist, um
diesen Querverweis zwischen WB zu erstellen , um
diesen Querverweis zwischen WB diese Arbeitsmappe zu
verweisen. Jetzt wo ich das habe, kommen
wir durch diese Linie. Und wenn ich mir den WB-Objektnamen
anschaue, ist es
hier, es ist main.xml SM. Es ist also dasselbe,
wenn ich WB eingegeben habe, ist im Grunde eine Verknüpfung zum
Schreiben dieser Arbeitsmappe. Und das liegt daran,
dass ich diese beiden Dinge hier
zusammengebunden habe. Führen Sie das noch einmal aus und
wir sehen, dass es gemacht wurde. Etwas anderes, was ich gemacht habe,
ist in diesem Ordner vorbei, ich habe hier zwei
weitere Dateien erstellt. Ich habe
es gerade eine andere Datei
und eine andere Datei in Excel-Dateien genannt . Eine Sache, die Sie hier notieren
könnten, ist
, dass es sich bei diesen beiden nur um
normale Excel-Dateien handelt. Sie sind keine
Excel-ASM-Dateien, um Makros zuzulassen. Das könnten sie sein, wenn wir wollten. Aber was wir
durchgehen, wird häufig für Sie
verwendet, um
eine Excel-Datei zu verwenden
, in der all
Ihr Code ist, der all das ausgefallene Zeug
macht. Und dann öffnen
Sie möglicherweise andere Excel-Dateien, die
bereits vorhanden sind und mit
ihnen interagieren oder Informationen
von den anderen Dateien abrufen. Vielleicht
gehört die andere Datei jemand anderem oder einer anderen Abteilung und Sie
versuchen , Daten von dort abzurufen. Und so öffnest du einfach
diese Datei und
ziehst dann Sachen in
deine Hauptdatei. Also hier drüben kann ich
einige andere Variablen deklarieren. Sagen wir, ich habe WB
erwähnt, da
ich es tatsächlich die
Arbeitsmappe WB nennen werde. Wb. Was? Wir möchten dies als unsere
andere Datei festlegen, eine hier drüben. In der Tat nenne ich
das allerdings die andere. Nur damit wir nicht mit dem Namen
verwechselt werden. Ich verwechsle das hier drüben. Ich
nenne das eigentlich WB Main. Nennen Sie dies WIR bedeuten gleich
dieser Arbeitsmappe und dann WB, andere gleich. Und wie
verbinden wir diese beiden dann hier? Wir verwenden diese Arbeitsmappe hier, die eine integrierte
Funktion in VBA ist. Hier. Stattdessen gebe ich Arbeitsmappen geöffnet ein. Und dann brauche ich den Pfad
dieser Datei hier drüben, und das lege ich auf. Ich zeig es dir. Ich bin mir nicht sicher, ob wir tatsächlich den vollen Weg einschlagen
müssen. Stattdessen nehmen wir
diesen Dateinamen
einfach hier drüben. Und es kann möglicherweise feststellen, dass
sich dieser Excel-Dateiname im
selben Ordner wie
unsere aktuelle Arbeitsmappe befindet . Also lasst uns sehen, wie das läuft
und durchläuft das. Wir werden das einfach hier beiseite legen. Und sehen Sie, wir
mussten nicht
unseren vollständigen Pfad hierher legen , indem wir
nur den Dateinamen
als Erstes eingeben, was er überprüfen
würde, ist der aktuelle
Ordner, in dem sich unsere Hauptdateien befinden. Da sich diese alle
im selben Ordner befinden, könnten
wir einfach den Dateinamen eingeben und Sie sehen, dass er diesen geöffnet hat. Nun, wenn wir hierher kommen
und drucken w main,
Punktname sagen , haben wir unser
Hauptteil und wir haben das UV, andere, den Namen bekommen. Und wir werden uns
beide ansehen. Interessant hier ist, dass
diese Datei bereits geöffnet ist. Mal sehen, ob das funktioniert. Ich habe einen Tippfehler hier drüben. Wir haben diesen Befehl
, der die Arbeitsmappe öffnet. Die Arbeitsmappen sind bereits geöffnet. Sie können also sehen, dass es hier eigentlich kein
Problem hat. In
einigen anderen Fällen besteht die Möglichkeit , dass ein Fehler ausgelöst wird,
da Sie die Arbeitsmappe nicht öffnen und diesen Befehl
ausführen
können ,
da er bereits geöffnet ist. Aber VBA hat das schon
gehandhabt, es realisiert bereits offen. Und es wird immer noch
diese beiden Objektvariablen als
die richtigen Dateien festlegen und
WB andere mit dieser
anderen Datei, einer Excel-Datei, verbinden . Und schauen wir uns das hier an. Hier ist unser Hauptteil, und dann ist
hier unsere andere Akte, während
wir hier durchkommen. Jetzt fügen wir einfach noch eins hinzu. Also haben wir mehr Arbeit mit
anderen Arbeitsmappen zu erledigen , um andere q
equals Workflow-Sachen festzulegen. Offen. Eine andere Akte, eine. Also muss S x zwei hier drüben sein. Und lasst uns das laufen und
es Zeile für Zeile erneut ausführen. W Main ist dieser eine andere. Sie sehen, dass es hier gerade geblinzelt hat,
weil es
unser WB anderes
Objekt verbindet , WB andere zwei. Jetzt wird es geöffnet. Sie können Ihre
Dateinamen hier oben sehen. Also haben wir gerade drei
Dateien geöffnet. Und lassen Sie uns unsere Namen
ausdrucken, um Ihnen zu zeigen, dass
es sich jetzt um aktive Objekte
handelt, die von vorne begonnen haben. Und wir können drucken. Unser unmittelbares
Fenster wird dort
etwas überladen,
also lasst es uns klären. Und wir haben alle drei
dieser Akten geöffnet. Gerade jetzt. Alles, was wir getan haben, ist ihre Namen
auszudrucken. Aber obwohl dieses Makro noch aktiv
ist, sehen
Sie, dass wir noch nicht beendet sind. Also kann ich diesen Pfeil herumziehen. Du führst weiterhin Code aus. Ich kann Dinge wie „aktivieren“ machen. Unsere Mai-Arbeitsmappe hier. Eine andere, die aktiviert ist,
die aktiviert wird. Und so habe ich jetzt
diese drei Variablen hier, die
alle drei Excel-Dateien darstellen. Ich aktiviere unsere
Hauptdatei hier. Und dann anderes FiO2. Jetzt haben wir diese Objekte, die drei verschiedene Dateien
darstellen. Und Sie können sich
vorstellen, wie wir mit allen
drei dieser Dateien
interagieren können . Und auf Arbeitsmappenebene, im Wesentlichen einer Excel-Datei, können
Sie alle
möglichen Dinge tun. Aber was ich
Ihnen sehr schnell zeigen werde, ist nur ein Beispiel für die Art von Dingen, die
Sie mit einer
normalen Excel-Datei tun können , aber jetzt haben Sie die
Kontrolle über den Code. Jetzt wo ich hier unten bin, haben
wir Objekte
für all das. Wir können sie aktivieren. Und wenn Sie nur eines davon
eingeben, da es sich um alle drei
Arbeitsmappenobjekte
handelt, haben sie
dieselben Eigenschaften, was im Grunde bedeutet, dass sie dieselben Eigenschaften
und dieselben Prozesse
haben die an sie gebunden sind. Routinen und Methoden, die für diese
Objekttypen
existieren, bei denen es sich
in diesem Fall um eine Arbeitsmappe handelt. Wenn ich hier tippe, siehst du, dass
all das Zeug auftaucht. Und ich kann speichern, was im Grunde bedeutet,
wenn ich diesen Befehl ausführe, entspricht dies dem Speichern
dieser Datei. Du kannst „Speichern unter“ machen und ich kann sie schließen. Also gehe ich zum Beispiel
fort und schließe das. Stellen Sie sich also vor, wir machen etwas
mit diesen Dateien, wir interagieren mit Daten. Ich weiß, dass diese gerade alle
leer sind, aber wenn Sie
Daten in allen drei
haben, könnten Sie anfangen, Daten von
einem zu erhalten und sie in die andere zu verschieben. Und wenn wir dann mit ein paar Sachen
fertig sind, können wir
jetzt
die andere Datei schließen und dann die andere Datei
schließen. Sie sehen also, wir haben
viel Kontrolle nachdem wir diese
Arbeitsmappenobjekte erstellt haben, wo wir diese Objekte
fast so verwenden können , wie wir sie in
der Hand haben , und
verschiedene Befehle mit ihnen ausführen können. Eine andere Sache, die wir
tun können, ist, anstatt eine Datei zu
öffnen, die
bereits existiert, wir können das alles einfach
kommentieren. Fangen wir hier von vorne an. Wir können Workbook sagen,
neue Arbeitsmappe. Und anstatt
eine vorhandene Arbeitsmappe zu öffnen, die wir zuvor mit dem
Dateinamen gemacht
haben, können wir sagen, dass „WD nu“
gleich Belegschaft ist. Fügen Sie hinzu. Mach das einfach. Arbeitsmappen, diese Anzeige erstellt eine neue Arbeitsmappe, im Wesentlichen eine Excel-Datei, und setzt sie dann als
unser neues WB-Objekt ein. Sie sehen also, dass wir
eine neue Arbeitsmappe haben, die gerade geöffnet wurde, als wir diese Codezeile
ausgeführt haben. Und es hat hier nicht nur eine neue Datei
erstellt, wir können WB, neuer Name, sagen. Und wie Sie erwarten,
wird dies das erste Buch sein, das der Name dieser Datei ist, so als ob Sie
eine neue Arbeitsmappe gestartet hätten. Also
hier ist Buch eins. Jetzt können wir anfangen,
Informationen hier einzugeben. Und wir werden einfach die Scheide
anfassen, was wir
in unserer nächsten Lektion machen werden. Man kann Laken sagen. Ein Punktbereich, A2,
Wert ist gleich Hallo. Hier ist unsere neue Arbeitsmappe. Wir werden
das verwenden und wir können damit beginnen,
diese neue Arbeitsmappe aufzurufen,
neu zu erstellen oder
eine, die wir geöffnet haben, zu verwenden und
damit zu interagieren. Und wenn wir
damit fertig sind, können
wir sogar sagen, dass WB diese Rettung
wusste. Und wir haben
diese Datei gerade hier gespeichert. Es befindet sich wahrscheinlich in
unserem Standardordner ,
wo auch immer das Buch 1 genannt
werden könnte. Und so können wir es
noch mehr Immobilien weitergeben. Speichern Wie Sie sehen können, wenn wir ein Speichern unter durchführen, erhalten
wir andere Eigenschaften
wie unseren Dateinamen. Dieses Beispiel. Sagen wir einfach, wir können diese Zeile für Zeile
ausführen. Wir erstellen
hier tatsächlich eine
brandneue Arbeitsmappe , weil wir diese wieder
ausführen. Wir platzieren Hello in Zelle A2
und speichern dies dann, da
dies eine Beispieldatei ist.
28. 1.19 Worksheet: Ähnlich wie wir gerade
für die Arbeitsmappenstunde gemacht
haben, können wir auch
mit Arbeitsblättern arbeiten. Sie haben also Ihre
größere Excel-Datei , die im Wesentlichen
Ihr Container ist. Und dann
hast du da drin mehrere Blätter. Also habe ich hier einfach
manuell eine neue hinzugefügt und du
hast Sheet1 und G2. Wir können ein neues Blattobjekt festlegen, das ich SH als Arbeitsblatt
aufrufe. Sehr ähnlich
den Arbeitsmappen und zeigt
weiterhin, wie
unsere Objektvariablen, wo ich
das hier gesetzte Wort verwenden muss. Und ich kann sagen, dass das Set
Sheet gleich WB ist, was wiederum diese
Arbeitsmappenblätter sind. Es gibt zwei verschiedene
Callouts hier. Ich kann auch „Hitze“ sagen. Und dann habe ich jetzt
dieses Arbeitsblatt und ich kann es aktivieren nennen. Und so habe ich jetzt SH
als Blatt zwei festgelegt und dann kann
ich es aktivieren. Wenn ich dieses
xi2 ausführe und dann, wenn ich es
aktiviere, haben wir G2 aktiviert. Hier. Ich habe verschiedene Optionen , die ich in diesen
Klammern anrufen kann, wenn ich es als Blatt bezeichnen
kann, um den
Namen zu kaufen, oder ich kann einen Index verwenden. Wenn Sie also hier sehen, heißt
es Index Wann immer Sie dies sehen,
bedeutet dies normalerweise, dass Sie eine Zahl verwenden
können, um
das Indexblatt hier aufzurufen , ist
tatsächlich Blatt zwei hier drüben, weil es nur eine
Zahl ist
indexieren, dass dies eins ist und dann ist dies zwei
in sequentieller Reihenfolge. Wenn ich also hier drüben bin, lass uns sagen, ich führe das noch einmal aus, wir aktivieren Blatt zwei. Und in diesem Fall spielt
es keine Rolle, spielt
es keine Rolle, ob ich den Namen hier ändere weil ich
den Namen des Blattes nicht schreibe, ich schreibe die Indexnummer. Also komme ich jetzt her. Und neues Blatt dazu ist
immer noch diese andere Registerkarte wenn ich es aktiviere, weil es das zweite Blatt
in der Arbeitsmappe
ist. Wenn ich das zum Beispiel hier
umschalte, ist dieser Sheet1-Name
jetzt unser zweiter Index. Und wenn ich
SH als das Blatt deklariere, wirst
du sehen, dass ich hier ein drittes
erstellen werde. Wir gehen zurück zu Sheet1 weil einer tatsächlich
Index Nummer zwei ist. Und sobald
wir dies getan haben, haben
wir dieses Objekt erstellt
, das diese zusammen kauft. Und dann
habe ich genau wie in der Arbeitsmappe verschiedene Dinge, die ich mit diesem Blatt machen
kann. Jetzt
habe ich mit diesem Blatt meine Reichweite genau
wie wir es zuvor gesehen haben. Ich kann Hallo sagen. Ich kann auch
all diese anderen Dinge haben , die Sie manuell mit dem Arbeitsblatt
machen würden , wenn
Sie durch Excel klicken. So kann ich zum Beispiel sagen, dass
sichtbar gleich versteckt ist. Und dann, um das rückgängig zu machen, werde
ich sagen, dass
sichtbar gleich sichtbar ist. Jetzt habe ich dieses Blattobjekt und ich kann verschiedene
Dinge damit machen. Genau wie wir es für
unsere Arbeitsmappenobjekte getan haben. Wir können viele verschiedene
Verweise auf verschiedene Blätter erstellen , und so werden wir sie im Code
referenzieren. So können wir Dinge aus Blatt
zwei holen und in
Sheet1 und umgekehrt verschieben und dieses Web
von Prozessen erstellen, während wir sowohl mit
mehreren Arbeitsmappen
als auch mit mehreren Blättern
interagieren . Also zeige ich dir hier, SH ist xi2. Wir haben einige Texte zu Zelle A2 hinzugefügt. Wir können Blatt zwei ausblenden und das dann sichtbar
machen, ist
gleich sichtbar. Und wir werden es nochmal zeigen. Dies könnte die erste Exposition sein ich mich aus
den vergangenen Lektionen nicht erinnern kann. Ich zeige dir hier
was anderes. Wenn Sie mit den
höchsten Blättern manuell vertraut sind, würden
Sie hierher kommen und
Sie können dieses Blatt ausblenden. Und dann Blatt zu, oder
tatsächlich glaube ich, es war Sheet1 ist hier versteckt. Wenn du dich hier einblenden gehst, Sheet1, kannst du es einblenden. Eine Sache, als ich gerade dieses Beispiel getippt habe, die mir klar wurde,
ist, dass ich dieses
Blatt auch gleich sichtbar machen kann. Und dann siehst du, dass
es
drei Optionen, die ich hier habe, automatisch ausfüllt , versteckt und sichtbar, die
wir bereits benutzt und getestet haben. Du hast gesehen, dass es das ist
, was hier sichtbar war. Es gibt tatsächlich eine dritte
Option, die sehr versteckt ist. Also mal sehen, was das bedeutet. Wenn wir sehr
versteckt gehen und das ausführen, sehen
Sie, dass es
dasselbe getan hat wie das Verstecken des Laken. Aber wenn ich jetzt herkomme
, um mich einzuladen, gibt es keinen Einblenden-Button. Und wenn es andere
versteckte Arbeitsblätter gäbe und ich das hier gezeigt habe
, verstecke ich auch
Blatt drei. Ich kann hierher kommen
und mich einblenden. Und jetzt haben
wir in unserer Liste zwei Blätter, versteckt, Blatt eins, Blatt drei. Aber ich kann Blatt
eins nicht auf dieser Liste sehen. Und so merkt ein Benutzer, der auf
diese Schnittstelle
klickt , der
keinen Zugriff auf den VBA-Code
hat, nicht einmal, dass es hier ein Blatt
gibt, und das ist es, was
sehr versteckt ist. Der einzige Weg, wie ich es
noch einmal anzeigen kann , ist,
diese Codezeile in
VBA auszuführen , und ich komme hier nicht über unsere Benutzeroberfläche
im normalen Excel dazu. Wenn ich diese Linie führe, bringen
wir
Blatt eins zurück. Es war immer da, aber für uns
einfach unsichtbar. Und der wirklich interessante
Teil hier
ist, denke ich, dass
man durch VBA
hier im Hintergrund nicht nur
automatisieren kann, was eine Person manuell
durch die Excel-Oberfläche klickt. Sie erhalten jedoch Zugriff auf zusätzliche Eigenschaften und Funktionen , die einem normalen Benutzer möglicherweise nicht einmal
zur Verfügung stehen. Wenn Sie also
in diesen Code eintauchen, haben
wir eine lange Liste von
Eigenschaften und dies ist nur ein Beispiel für
Funktionen, die Sie nicht einmal
manuell ausführen
können, es sei denn Sie wussten, wie Sie
in die hier und schreibe den Code in
VBA für deine Funktionen.
29. 1.20 Einführung in Referenzbibliotheken Word Object: In den vorherigen Videos
habe ich gezeigt, dass Excel-Makros und
VBA-Code, den wir geschrieben haben, nicht nur die
Excel-Anwendung selbst
steuern
können VBA-Code, den wir geschrieben haben . Es kann aber auch Dinge
wie Ordner erstellen. waren also Demonstrationen
, die, obwohl wir in
Microsoft Excel codieren
, der Code
hier in unserer VBA Dinge außerhalb von Excel
tun
und unseren Computer steuern kann . Um
dies weiter zu ergänzen, möchte
ich
ein weiteres Beispiel dafür zeigen möchte
ich
ein weiteres Beispiel dafür zeigen, dass eine
andere Anwendung gesteuert wird, und eine Anwendung, die
oft für Microsoft Word
sinnvoll ist. Und Microsoft Word verfügt über einen eigenen VBA-Editor und Makros, mit denen Sie
direkt in Microsoft Word arbeiten können. Aber ich möchte
ein Beispiel zeigen, wie wir von Excel aus arbeiten
können, wo wir oft so etwas tun, wie hier einen Button
erstellen. Und wir können Excel selbst dazu bringen, Microsoft Word zu
kontrollieren. Und wenn Sie dann in einer Tabelle
arbeiten, können
Sie diese Programme ziemlich nahtlos
interagieren lassen. Also habe ich mit dieser Test-Subroutine
begonnen. Das einzige, was hier ist Test. Und ich möchte dir ein
ganz einfaches Beispiel zeigen. Ich komme
hier zur Subroutine und erstelle
eine neue Objektvariable. Wir nennen das w, das Dokument
oder Microsoft Word-Dokument. Wir werden das als dann festlegen, wenn ich hier ein Wort
tippe, kommt
nichts auf. Das liegt daran, dass
unser VBA-Code
hier drüben nicht über diesen Befehl , um mit Microsoft Word zu arbeiten. Und ich zeige Ihnen,
wie wir
hier
einige neue Optionen auftauchen lassen können einige neue Optionen auftauchen , wenn wir in unserem VBA
arbeiten. Wir können das tun, indem wir zu Tools kommen
. Wir gehen zu Referenzen. Und dann ist darin eine riesige
Liste von Referenzbibliotheken enthalten. Im Grunde sind sie fast so, Erweiterungen für VBA
unterstützen. Du siehst also alle
möglichen Sachen hier. Und das Beispiel,
zu dem wir gehen werden , ist, wenn Sie
ganz nach unten scrollen, ist
es eine alphabetische Reihenfolge. Wir können hier in der Microsoft
Word-Objektbibliothek landen. Dies sind also zusätzliche Tools,
die es uns ermöglichen, neue Funktionen
in unserer VBA zu
haben , die nicht
sofort verfügbar sind. Wenn wir also darauf klicken, ist es
ziemlich nah an der Box. Sie müssen
nur dieses Kontrollkästchen anklicken. Und wenn ich auf Okay klicke,
siehst du, dass wir hier
weiter tippen können. Und wenn ich jetzt ein Wort tippe,
als es existiert, was vorher nicht hier war, sagen
wir Arbeitsperiode. Und dann sage
ich in diesem Fall ein Dokument. Also jetzt unsere Objektvariable, Word Doc oder ein
Word-Dokumentobjekt. Und dann
wird dies jetzt mit
allen möglichen Eigenschaften und
Methoden kommen allen möglichen Eigenschaften und , die wir aufrufen und als Teil des
Dokumentobjekts
verwenden könnten . Genau wie das, was wir in
unserer kurzen Lektion über
Objektvariablen durchgegangen sind. Und jetzt, da ich
dieses Word-Dokument habe und lass es uns als etwas festlegen, sagen wir, set ist gleich
Word-Dokumente bei. Im Grunde haben wir also unsere
Microsoft Word-Anwendung. Dann haben wir unsere Dokumente, und wir
fügen ein Dokument
in unser Dokument ein , das im
Wesentlichen eine Datei ist. Wir werden also
unser Word-Dokument als eine neue
Datei festlegen , die erstellt wird. Also mache ich weiter und
führe das durch. Ich treffe F8. Wir sind hier drüben auf dieser Linie. Ich habe F8 getroffen und es ist dort für eine Sekunde erstarrt
und nichts ist passiert. Ich zeige dir etwas anderes, das hier interessant ist. Ich werde
es zuerst erklären und dann zeigen wir,
dass das passiert, dass dies
ein Word-Dokument geöffnet hat ,
aber es ist unsichtbar. Was wir also
sehen, ist, dass wenn Sie mit einer anderen
Anwendung über Code arbeiten, es anders ist, als auf
die Benutzeroberfläche zu
klicken wie wir es gewohnt sind, mit unseren Computern zu
arbeiten. Stattdessen öffne ich einfach
ein Word-Dokument, das
aber
im Hintergrund versteckt ist. Und du kannst es nicht wirklich sehen , weil ich mein Startmenü nicht
gezeigt habe, aber hier ist mein Startmenü. Es gibt keine Microsoft
Word-Anwendung hier drüben. Und wir können beweisen, dass, denn
wenn ich hierher komme und Word diese Anwendung
eintippe, diese Sichtbarkeit gleich wahr ist, wird
dies
die Microsoft
Word-Anwendung wahr werden. Und während ich das durchführe, werden Sie
sehen, dass Microsoft Word auftaucht. Und hier ist ein Dokument, das offen im Hintergrund
saß . Nur um es dir
nochmal zu zeigen, führe ich das durch. Manchmal gibt es eine Fehlerbox. Ich habe es einfach wieder laufen lassen und
du hast gesehen, dass es verschwunden ist. Ich werde nicht auf diese Details
eingehen bis wir es in
den zukünftigen Lektionen brauchen. Sie sehen, wir haben
ein Word-Dokument geöffnet. Ich führe das schon wieder durch. Es gibt also eigentlich
zwei Dokumente. Lassen Sie uns nun unsere
Word-Anwendung wahr machen. Und du siehst, dass hier zwei
Dokumente geöffnet sind. Was passiert ist, ist, dass
wir das Dokument geöffnet haben, ein anderes Dokument haben
und beide
im Hintergrund vorhanden sind und wir
können Dinge damit machen. Wir könnten ihnen Text hinzufügen und anfangen, ihn
wie ein Word-Dokument zu formatieren. Und sie sind alle
unsichtbar, bis ich dem Programm
sage, dass es
die Anwendung wahr machen soll. Und wenn ich jetzt so
etwas wie ein Wort mache, diese Anwendung, ist eine
Schüssel hier drüben wahr. Dies wird das Dock
machen, das Wort Anwendung wahr machen. Lasst uns etwas sehr Grundlegendes machen. Was ist das Dokument, um
es einfach zu speichern. Und du siehst, dass wir das
Speichern unter befehl haben. Ich denke, die beiden liegen nur
daran, dass es eine zweite Version ist. Dies ist also Ihr generischer Befehl
„Speichern unter“. Sie können sehen, dass der
Parameter, den er aufnehmen
möchte , der Dateiname ist. Also müssen wir
dort
einen Dateinamen erstellen , um ihn
als Parameter zu übergeben. Sagen wir dem Dateiname
als String, Dateiname ist gleich. Und ich hatte
diesen Ordner hier in die Warteschlange gestellt, was nur ein generischer
Ort ist, an dem ich einige Tutorial-Dateien erstellt habe . Und wir werden sagen, dass dot doc
x unser Dateiname ist. Und wir machen dasselbe wie bei unserer
Dateinamenvariablen hier drüben. Und ich treffe F5 für den Lauf. Es öffnet
hier ein Dokument, testet das Dokument. Und dann ist hier unser Test
dieses Dokuments hier drüben, das eine Demonstration
zeigt, wie wir
Microsoft Word aus Excel automatisieren können. Und so
verbinde ich diesen Button unserer
Test-Subroutine hier drüben. Schließen wir das alles aus. Ich bereinige hier nur ein
bisschen,
lösche dieses von uns
erstellte Dokument. Ich komme her,
ich klicke auf diesen Button. Siehst du, dies ist die Ära
, die zuvor aufgetaucht ist. Wir werden nicht auf
die Details eingehen, aber es hat mit
der Verwaltung der Microsoft Word-Anwendung zu tun der Verwaltung der Microsoft Word-Anwendung , die im Hintergrund geöffnet ist. Aber das werden wir ignorieren. Und oft würde
das einfach verschwinden, wenn du es noch einmal versuchst. Es gibt Möglichkeiten,
offiziell damit umzugehen, aber wir werden uns hier einfach nicht für
diesen Detaillierungsgrad entscheiden. Dies ist nur ein Proof of Concept. Also klicke ich auf diese Schaltfläche,
Microsoft Word öffnet sich, es wird als Testpunkt-Dokument gespeichert. Und hier ist es wieder in
unserem Ordner, alles passiert aus Excel. Und wenn wir
wieder zu unseren Werkzeugen kommen, werden
wir das
ganze Zeug nicht durchgehen. Es gibt endlose Mengen
an Informationen, die
hier mit
der Automatisierung von Microsoft Word übergehen können
, auf der wir
zukünftige Videos erstellen werden. Sie haben auch all diese
anderen Anwendungen , mit denen Sie in VBA arbeiten können, eine große Mehrheit, die
ich nicht verwenden musste. Aber du siehst nur, dass
sie hier verfügbar sind. Und noch eins, und ich bin mir
sicher, dass wir als
Microsoft Outlook verwenden werden, damit wir mit der Automatisierung von E-Mails
beginnen können. Hier sehen Sie auch eine Bibliothek von
Microsoft Outlook. Das war's für diesen, wir werden diese Konzepte
in zukünftigen Videos verwenden.
30. 1.20 Vorträge von einer anderen Vorstufe: Bisher haben wir Makros mit einer Subroutine erstellt. Wenn wir dieses
Wort seb hier verwenden, steht
das für Subroutine. Und meistens haben wir unseren Code
in unsere Subroutine
gelegt und dann ausgeführt,
egal ob wir ihn an einen Button anhängen oder ihn einfach
direkt von hier aus ausführen. Was ich hier zusammengeworfen habe, ist hier
ein einfaches Makro, das
von I gleich eins bis fünf zählt und eine
Wartezeit von 1 Sekunde dazwischen
legt. Wenn ich das ausführe, klicke ich
nicht hier ausführen. Sie können sehen, dass es
von eins bis
fünf zählt und es in unsere Tabelle legt, und es ist nur ein Zähler
von eins bis fünf. Was ich
in diesem Video zeigen möchte, ist, wie wir Aufrufe von
Subroutinen verwenden können , um Code wiederzuverwenden ohne den
Code tatsächlich
erneut einzugeben. Wenn ich in diesem Fall
etwas machen wollte, zähle eins bis fünf
und mache dasselbe, aber ich möchte es zweimal machen. Was ich gerne machen würde, ist
hierher zu kommen und einfach
ein Kopieren und Einfügen zu machen. Jetzt wird das zweimal durchlaufen, und ich werde nur ein Nachrichtenfeld
anlegen. Also sehen wir hier einmal einen Stopp. Und ich lege sogar
noch einen hier runter. Sagen wir, ich renne zweimal. Wenn ich das hier durchführe, können wir sehen, dass wir unseren Zähler
von eins bis fünf haben. Wir haben unser Pop-up. Und dann fangen wir an, genau
denselben Code erneut auszuführen, wir kopieren und einfügen, und
wir sind zweimal fertig. Das Problem hier
ist,
obwohl dies gut funktioniert, dass wir an zwei Stellen denselben
exakten Code haben. Und das ist momentan keine sehr
große Sache. Aber was wäre, wenn wir
zweimal etwas machen
wollten und es Hunderte
von Codezeilen
wären, hätten wir Hunderte von Codezeilen
an zwei verschiedenen Stellen kopiert
und eingefügt Codezeilen
an zwei verschiedenen Stellen kopiert
und eingefügt , die wir jetzt pflegen müssen. Unser Code ist auch viel länger und wenn
wir ihn aktualisieren wollen, müssen
wir daran denken, dies an mehr als einem Ort zu tun
. Und einige Prozeduren. Sie
müssen nicht nur zweimal laufen, Sie müssen auch viele
verschiedene Male
in Ihrer Anwendung ausführen . Was wir hier also tun können, ist eine weitere Subroutine zu
erstellen. Wir nennen diese Subroutine
Sub Count bis fünf. Anstatt dies zu kopieren
und einzufügen, kopiere
ich es und füge
es in unsere Subroutine ein. Also
kopiere ich es und füge es ein. Dann lösche ich das. Und was wir
noch nicht durchgegangen sind , ist, dass diese Subroutinen nicht nur
direkt aus unserer
Tabelle mit sagen,
einem Button-Klick oder
ähnlichem ausgeführt werden können direkt aus unserer
Tabelle mit sagen, . Aber es kann
von einer anderen Subroutine aufgerufen werden. Jetzt, da wir
die Subroutine namens
count to five erstellt haben , kann
ich darauf klicken. Eigentlich habe ich vergessen,
diese Dimensionierung
von I hierher zu verschieben . Also müssen wir unser
Auge in einer Subroutine aufzeigen. Und jetzt werde ich das einfach kommentieren, damit wir
sehen können, was hier vor sich geht. Ich bin irgendwie in
meiner Makro-Subroutine. Und wenn ich F8 drücke und es ausführe, wird
diese Zählung bis fünf wissen, dass dies ein Hinweis auf
diese andere Subroutine ist. Wenn ich also F8 treffe und durchgehe,
siehst du, dass es hier zu unserer
anderen Subroutine springt. Und jetzt fängt
es an, unsere Zählung
bis fünf Subroutine
durchzuführen. Also gehe ich weiter und klicke auf Play und lass das
weiter zählen. Was Sie hier sehen können, ist, dass
das Zählen der Fünf ist. Ich kann sogar sagen, sagen
wir Message Box,
um hier anzufangen. Und wenn ich dann in
meiner Makro-Subroutine bin, klicke
ich auf Play. Es erscheint mein Nachrichtenfeld und dann läuft
unsere Zählung auf fünf. Du kannst sehen, dass es hier
passiert. Wir nennen diese Subroutine aus einer anderen Subroutine. Und dann kannst du damit
einfach verrückt werden und anfangen, diese
überall zu benutzen. Also könnte ich tatsächlich
eine weitere Subroutine erstellen , die das Gedankenmakro
nennt. Und damit Sie
diese Dinge irgendwie zusammenschachteln können, was für
ein weiteres Video sparen wird, möchte
ich Ihnen nur
diese Idee vorstellen , wie Sie Subroutinen nennen
können. Wenn wir jetzt zu unserem Original
zurückkehren wollen, kann
ich das nehmen und
ich muss nicht all diesen Code
kopieren,
was hier nicht viel ist. Aber auch hier würde dies
funktionieren, wenn dies eine viel größere Subroutine
mit viel Code hier wäre,
anstatt das mehr als
einmal in Ihren Code kopieren
und einfügen zu müssen und Ihren
Code
viel zu machen länger und
schwieriger zu warten. Ich kann das einfach zweimal anrufen. Wenn ich also hierher komme
und mein Makro
starte, muss
ich gleich fünf zählen, die
wir hier laufen. Wir sind einmal fertig mit dem Laufen. Und dann wird die
Zählung wieder auf fünf laufen.
31. 1.21 Call mit einem Parameter: Im letzten Video habe ich dir
gezeigt, wie du eine Subroutine aus einem anderen
heraus
aufrufen kannst . Wir haben also diesen
Basiszähler hier drüben , wo wir anfangen müssen. Jetzt steigen wir hier auf
unsere Zahl auf fünf. Einmal fertig gelaufen,
und dann
lassen wir unsere Zählung wieder auf fünf. Ein kleines Detail, das ich
hinzufügen wollte, ist, dass Sie auch Parameter in
die Subroutine
übergeben können , damit ich diesen Code wiederverwenden kann. Aber ich kann auch Variablen
innerhalb dieses Codes ändern ,
damit ich ihn wiederverwenden kann, aber auch die
Art und Weise anpassen kann, wie ich ihn verwende. Und ich denke, das wird
sinnvoller sein , wenn ich dir dieses Beispiel zeige. Wir haben das also
zählen bis fünf, und wir zählen immer die
fünf jedes Mal, wenn wir dies ausführen. Stattdessen möchte ich vielleicht auf eine andere Zahl
zählen. Und wie mache ich das? Wenn ich die Fünf
zählen wollte und dann wollte ich bis zehn zählen. Der unkomplizierte, aber weniger effiziente Weg
besteht darin,
so etwas zu machen und bis zehn zu zählen. Jetzt mache ich diese Schleife von I gleich eins bis zehn. Und dann muss ich das ändern. Nehmen wir an, wenn wir das ausführen, haben
wir
hier ein Problem, zählen bis zehn. Und das liegt daran, dass
ich das Wort
hier benutzt habe . Anstelle von Zahl. Wir laufen weiter. Wir
müssen gleich anfangen. Wir zählen die Fünf und dann zählen wir
die Zehn. Aber wir stellen einfach
das gleiche Problem nach, das wir
im letzten Video lösen wollten,
bei dem wiederholten Code handelt. Wie können wir es also schaffen
, dass wir dieses Konzept wiederverwenden? Wir verwenden den Code hier drin wieder. Aber wir haben auch
die Möglichkeit,
eine Anpassung an die
Zahl vorzunehmen , zu der wir zählen. Also mache ich das rückgängig. Wir werden das
beiseite legen, also
lassen wir es einfach wieder auf fünf zählen. Was es also
bis zu fünf zählt , ist diese
Zahl genau hier. Darauf wird unsere for-Schleife
laufen. Ich mache eine neue Variable. Ich nenne es „Stopp“. Und wir nennen das auch,
weil wir dies zu einer Zahl machen
werden, um zu ändern, welcher Wert hier geht,
basierend auf dem, was wir wollen. Also sagen wir Stopp bei
, anstatt
jedes Mal auf fünf zu zählen , wenn wir
von eins bis fünf schleifen, werden
wir sagen, booten von
eins bis zum Stop-Wert. Und wir haben insgesamt
welchen Wert. Wir nennen diese Zählung auf fünf, aber wir
wollen nicht wirklich, dass es dort aufhört. Wir wollen nehmen, anhalten,
was auch immer der Benutzer möchte, oder zumindest was wir
wollen , wenn wir dieses Makro
aufrufen, bis zur Nummer
zählen. Und wir nennen es einfach so
und halten es unscheinbar. Und wie sagen wir dann von dieser Routine
, wo wir aufhören sollen? Also werden wir diese von
Graf auf fünf
ändern , um die Zahl zu
zählen. Wir müssen Stop setzen. Was ich nicht tun möchte,
ist sagen zu müssen, dass Stopp bei T gleich fünf ist oder hier oben
bei gleich zehn anhalten wird
, weil das irgendeinen Sinn ergeben wird. Jetzt haben wir die Entscheidung immer noch nicht
getroffen. Wir müssten
den Code hier in
dieser Subroutine ändern , die wir anrufen, wenn wir die Nummer
ändern wollen. Stattdessen, was wir tun werden ist hier oben in den Klammern,
Sie haben vielleicht in
der Vergangenheit bemerkt, dass wir immer Klammern haben, wenn wir unsere grundlegenden
Subroutinen bisher
herstellen, unsere grundlegenden
Subroutinen bisher
herstellen,
auch wenn
wir bisher unsere grundlegenden Subroutinen herstellen wir haben sie
immer leer gelassen. Stattdessen. Wir können sagen, stopp so lange hier. Eigentlich habe ich hier einen
Fehler gemacht, weil wir sagen, stop at equals long, wir deklarieren die
Variable hier oben. Wir müssen die Variable hier nicht deklarieren
. Also musste ich
das nicht früher eintippen. Ich entferne einfach das, was
wir hier erklärt haben. Und was das bedeutet ist, dass wir,
wenn
wir die Nummer
zählen anrufen, tatsächlich Klammern hierher
stellen müssen. Sie sehen, wenn ich die
offenen Klammern eintippe, sagt
es mir, dass ich hier eine Variable
namens stop at
haben muss . liegt daran, dass es
weiß,
dass dies auf diese Subroutine verweist. Und dann sagt hier
, dass wir
eine Variable namens stop
at verwenden werden und es ist ein Rasen. Also kann ich hier eine Nummer einlegen. Ich sage fünf hier drin. Und jetzt, als wir
zu dieser Codezeile kommen, haben wir in unserem vorherigen Video gesehen
, dass es hier aufspringt. Aber dann
wird es auch diese
fünf und die Klammern nehmen und die Variable,
die ein
Eingabeparameter ist, auf fünf setzen . Dies sind also die
Eingabeparameter, die in die Subroutine
gehen
und bei anhalten, die dem entsprechen, was wir in diese
Klammern setzen , wenn
wir den Anruf ausführen. Lass mich das Gleiche machen. Und wir führen diese Demo durch. Und in diesem Fall
wollen wir, dass es zehn läuft. Jetzt kann ich das
um zehn Uhr ändern und ich werde dies mit FAA, diesem Makro, tun. Du siehst, wir haben unser Nachrichtenfeld. Jetzt springen wir hier hoch. Wir führen die Fünf durch
diese Klammern. Du siehst Stopp bei
gleich fünf, weil dies hier oben entspricht. Wenn wir nun unsere Schleife
durchlaufen, können
Sie diesen Wert hervorheben
und sehen, dass es fünf sind. Also lassen wir das
laufen. Ich habe gerade F5 getroffen. Es zählt bis fünf
und dann hat es aufgehört. Und jetzt
macht es das Gleiche. Wir sollten erwarten, dass
die Zählung auf zehn ist, denn wenn wir es
diesmal hier unten nennen, geben
wir
die Zehn tatsächlich durch die Klammern, wenn wir sie das zweite Mal
ausführen. Also werden wir das nur noch
einmal ausführen, damit wir
sehen können , dass wir das erste
Mal fünf verwenden, und dann das zweite
Mal zehn verwenden, weil wir den Wert
des Parameters
dadurch
übergeben Klammern, wenn wir die Subroutine anrufen. Nur um es Ihnen zu zeigen, denn ich
habe das hier oben, wo es erwartet, dass ein Wert zusammen mit unserem
Anruf an eine Subroutine
gesendet wird. Wenn ich die Fünf hier entferne, löst
es sofort einen Fehler aus, selbst wenn ich den Code noch nicht
ausführe, weiß
es, dass diese Zählung, die Nummern-Subroutine erwartet, dass
wir einen Parameter übergeben. Wir nennen es. Also sofort und weiß
, dass ich
hier etwas vermisse und du siehst, dass
es mir einen Fehler gibt, dann verschwindet dieser Fehler, wenn
ich hier etwas weitergebe. Und wenn ich bestehe, sagen wir, dass
ein Komma unser Separator ist. Wenn ich es also zwei Dinge gebe, weiß
es auch, dass es das
nicht erwartet. Eine letzte Sache, die ich
Ihnen hier zeigen kann, ist, wenn wir
die Subroutine haben , die einen
Parameter hat,
der eine Eingabe ist , genauso wie wir
einen Fehler hatten, wenn wir versuchen sie
aufzurufen, ohne
einen Parameter zu übergeben diese Klammern. Da diese Subroutine
wissen muss, wie hoch der Wert von
Stop bei sein soll. Wenn ich auch hierher komme, lass mich das sehr schnell reparieren. Wenn ich zu dieser
Subroutine komme und dann auf Play klicke, kannst
du sehen, dass sie
nicht läuft und es
erscheint in diesem Fenster, damit ich wählen kann, welches Makro
ich ausführen möchte. Und hier drin
zeigt es nicht die Zahl zählen. Es zeigt nur mein Makro weil ich dieses Makro nur
ausführen kann wenn ich ihm sage, wie hoch der Wert des
Eingabeparameters ist. Und da dieser
einen Eingabeparameter hat, weiß er, dass ich
ihn nicht ausführen kann , ohne dort
etwas zu passieren. Es weiß also, dass ich die Nummer nicht ausführen
kann ,
ohne sie ausdrücklich von
einer anderen Subroutine aus aufzurufen
oder sie aus dem
Code eines anderen Makros weil ich diese
Klammernotation benötige um den Wert des
Eingabeparameters zu übergeben. Sie sehen also, dass ich
die Zahl
nicht mehr ausführen kann , indem ich einfach auf Play
klicke oder
etwas anderes mache , als sie von
einem anderen Makro aus
aufzurufen , damit ich den
Eingabeparameter hier übergeben kann.
32. 1.22 Call mit mehreren Parametern: Da wir
Subroutinen mit einem Parameter aufgerufen haben, versuchen
wir, mehr
als einen Parameter zu erstellen. Also haben wir diesen Stopp beim Eingabeparameter hier drüben auf unserer Zählung die
Anzahl der Funktionen. Fügen wir einen zweiten Parameter hinzu. Falls wir nicht bei Nummer eins beginnen
wollen, können
wir auch den Bereich
der Startnummer wählen. Fügen wir einen neuen
Parameter hinzu und wir nennen ihn so lange starten. Und wir trennen
sie mit einem Komma. Jetzt gibt es zwei Parameter
, die wir hier verwenden können. Und statt dem , bei dem wir immer vorher
angefangen haben, ändern
wir das, um bei uns anzufangen. Wenn wir jetzt die
Zählnummer anrufen, können
wir eine Startnummer
und eine Stoppnummer haben. Also lasst uns hier runter gehen
und das aktualisieren. Nehmen wir an, wir wollen
dasselbe
tun und eins bis fünf machen. Und wir bekommen hier einen Fehler. Lasst uns hier sichern. Sie werden sehen, wenn ich die Klammern
öffne, weiß
es, dass hier Parameter
eingegeben werden muss. Es ist also fett gezeigt, dass wir einen Start und einen Stopp bei
brauchen. Warum wirft es hier
einen Fehler aus? Das ist eine Eigenart bei VBA und ich kann hier nicht
alle Details auf dem Niveau
der Informatik erklären . Aber was wir hier haben, ist wenn Sie mehr
als einen Parameter haben, brauchen
wir diese Klammern nicht. Die Notation hat also zwei Möglichkeiten. Entweder können wir
die Klammern davon ablassen ,
um zwei Parameter zu bestehen, und dies wird das tun, was
wir erwarten. Oder was ich lieber
mache, ist, dass Sie
diesen Keyword-Aufruf
am Anfang verwenden können diesen Keyword-Aufruf
am , wenn wir diese andere Subroutine
nennen. Und wenn Sie den
Keyword-Aufruf am Anfang verwenden, können wir unsere Klammern
jetzt so verwenden, wie Sie es von zuvor
erwarten würden. Es gibt also einen kleinen Unterschied, wenn Sie
einen Eingabeparameter
im Vergleich zu zwei Parametern haben , wenn Sie
eine Subroutine aufrufen. Ich bevorzuge es,
Call zu verwenden , weil ich das sowieso gerne
verwende Es lässt uns wissen, dass wir eine Subroutine
verwenden, die
wir selbst erstellt haben. Und es macht irgendwie rausgesprungen , dass Sie hier einen
Querverweis machen. Und dann denke ich, dass die Klammern es ein wenig einfacher
machen zu lesen, was wir tun anstatt
die Klammern nicht zu benutzen, aber beide funktionieren und
wir werden dasselbe tun. Probieren wir das jetzt aus. Lasst uns das ändern und
dann machen wir eine Pause, und dann machen wir
etwas wie 11. Und wir werden beim zweiten Mal
auf 15 gehen, wenn wir laufen. Ich fange damit an, FH zu machen. Also sind wir
Zeile für Zeile durchgegangen. Beginnen Sie gleich. Wir springen rüber, um zu zählen. Und Sie werden sehen, dass Start
bei den vom
ersten
Eingabeparameter nimmt , und dann nimmt
er den zweiten Parameter hier
und füllt den Stopp bei. Und das wäre eigentlich genau derselbe Prozess und wir hatten einen dritten, vierten,
fünften Parameter. Sie können also
mit der Anzahl der Parameter fortfahren , die die Subroutine als Eingaben annehmen
wird. Und wenn wir
weiter hier laufen, werde
ich einfach weiter
drücken und F5 drücken und weiter laufen. Wir sehen, dass wir eins bis
fünf zählen und einmal laufen. Also in dieser Codezeile
hier haben wir geklickt, Okay, wir fahren 11 bis 15 fort und
wir sind zweimal fertig. Die Hauptsache
hier ist also , dass Sie
mehr als einen Parameter ausführen können, aber die Notation ändert sich ein
wenig, wenn Sie
sie aufrufen, wenn Sie dieses
Call-Schlüsselwort hier treffen, oder was hier demonstriert wird müssen keine Klammern einklammern , wenn Sie mehr
als einen Parameter übergeben. Jetzt sehen Sie, dass
es nicht einmal
das Call-Schlüsselwort will , wenn ich die Klammern
nicht verwende. Und dann werden wir laufen, dass das gleich beginnt. Wir haben eins bis fünf hier. Und dann springen wir hier auf
11 bis 15. Wie wir bisher in unseren
Beispielen gesehen haben. Und was ich bereits
erwähnt habe, ist, dass ,
wenn wir diese
Parameter durchlaufen es in Ordnung geht,
wenn wir diese
Parameter durchlaufen, wenn wir die
Subroutine aufrufen. Also dieser hier
ist dieser Parameter. Und dann
ist das zweite hier drüben. Und wenn wir ein
Drittel hätten, sag das einfach. So lang. Wenn ich hier einen Kommentar abgebe, wird
dies ein Drittel sein. Sie können also sehen, dass es in der
jeweiligen Reihenfolge verläuft , dass
die Parameter aufgeführt sind. Ich werde das hier löschen, aber es
muss nicht so sein. Also eine andere Möglichkeit, dies zu tun ,
wenn wir sie nicht in der richtigen Reihenfolge
anrufen wollten. Und es ist normalerweise
keine große Sache, wenn Sie nur zwei Parameter haben, aber wenn Sie am Ende viele
mögliche Parameter
haben , die Sie an eine Subroutine
weitergeben können, möchten Sie sie möglicherweise nicht aufrufen bestellen. Und stattdessen siehst du, dass wir links
angefangen haben und rechts
anhalten. Wir hätten diese andere
Notation, in der wir Stop colon gleich
eingeben. Eigentlich habe ich vergessen, bei Doppelpunkt gleich zu
stoppen. Und Sie sehen, sobald ich diesen Doppelpunkt gleich
tippe, ist der zweite Parameter fett, denn da wir mit dem Namen
des Parameters
übereinstimmen , den er enthält, nennen
wir dies oder die
Klarheit außerhalb der Reihenfolge. Wir können hier fünf gleich sagen. Und dann, wie ich das Komma mache, keiner von ihnen
fett, weil ich hier
irgendwie außer Betrieb gegangen bin. weiß es also nicht,
bis ich getippt habe. Und dann weiß es jetzt
namentlich, dass ich
den richtigen Namen verwende , beginne bei diesem Parameter hier oben sein wird . Also können wir das
in jeder Reihenfolge tun. Und wenn es
mehr als zwei Parameter gibt, können
wir natürlich einen der
vielen hier oben aufrufen und
sie für unreilig erklären. Und das wird später auf andere
Weise nützlich sein, wie wir es wahrscheinlich
in zukünftigen Videos sehen werden. Jetzt habe ich das und das wird
genau das Gleiche tun. Nur ich konnte
sie aus der Reihenfolge herausrufen. Also zählen wir hier von
eins bis fünf. Und dann springen wir
wie gewohnt hierher und haben 11 bis 15. Genau wie das, was wir zuvor
demonstriert haben. Ich kann das Keyword call hier verwenden. Und sobald ich das mache, ist
es dasselbe, aber jetzt muss ich Klammern
benutzen. Und das ist öfter,
was ich tun würde, ist die Klammern
und das Call-Schlüsselwort zu
verwenden. Dies ist eine Notation, die Sie
möglicherweise sehen, wenn Sie etwas tun wie ein Makro aufzeichnen und
dann Dinge in Excel tun. Und dann schau dir den Code an, aus dem Makro aufgenommen
wurde, was wir in früheren Lektionen gemacht haben. Oft werden Sie
sehen, dass die Aufnahme diese Notation
mit dem Doppelpunkt und
den Gleichheitszeichen verwendet mit dem Doppelpunkt und
den , um die Parameter zu
deklarieren. Etwas Wichtiges
hier ist nur, dass dieses Doppelpunkt Gordon-Symbol hier ist. Wenn ich das also entferne, wird
das nicht wirklich funktionieren, was ein einfacher Fehler
sein könnte tippen, wenn
Sie nur tippen, das denkt, dass
dies funktionieren würde. Aber du siehst, dass es hier
einen Fehler auslöst. Insbesondere in dieser Funktion bei der Sie eine
Subroutine oder Funktion aufrufen, die wir in
Zukunft durchgehen und
Parameter übergeben werden, verwendet
Doppelpunktgleichzeichennotation.
33. 1.23 Untere mit optionalem Parameter: Nun, da wir die Grundlagen
der Weitergabe von Parametern an
einen Subroutine-Aufruf
durchgegangen sind. Ich möchte die Idee
eines optionalen Parameters zeigen. Was wir bisher erstellt haben, haben
wir diese beiden Parameter,
die wir übergeben,
die Startsekunden und
die Endsekunden, in die Startsekunden und
die denen
wir diesen Timer ausführen werden. Etwas, was wir mit Parametern
machen können ist auch, sie optional zu machen. Alles was ich tue, ist
dieses Schlüsselwort optional vor
meinem Parameter hier oben einzugeben . Und jetzt muss
ich diese nicht beides nennen. Stattdessen, wenn ich diesen
Anruf anrufe um zu nummerieren Subroutine
und öffne ich die Klammern. Sie sehen, wir haben einen
Start bei Parametern, was genau so ist, wie
wir es zuvor gesehen haben. Aber jetzt
ist unser Stopp bei Perimeter in den eckigen Klammern. Und diese eckigen Klammern
sagen uns, dass das optional ist. Also sagen wir, wie gewohnt
bei eins zu beginnen, und dann geben wir unseren
zweiten Parameter hier nicht ein. Und das haben wir
im vorherigen Video gezeigt. Aber wenn ich so
etwas gemacht habe und nur einen gemacht habe, gehe
ich, um das auszuführen, sehen Sie, wir haben diese Nachricht, die
auftaucht und es besagt, dass das
Argument nicht optional ist. Es wirft diesen
Fehler aus, weil er erwartet, dass zwei Parameter
gemäß unserer Deklaration
dieser Subroutine hier oben übergeben werden, aber wir geben nur einen weiter. Wenn ich stattdessen Optional für diesen
zweiten Parameter tippe, wird dies erneut ausgeführt.
Und ich mache F8. Wenn wir hier durchgehen, erhalten
wir unsere Botschaft, und jetzt springen wir hier hoch und fangen so an,
wie wir es erwarten würden. Und dann haben wir diesen
optionalen Parameter. Und wir haben unserem Anruf nicht mitgeteilt wie der zweite
Stopp bei Variable sein soll. Und so ist es im Moment 0,
wir markieren es, was dasselbe ist
, was es wäre, wenn wir eine Variable
deklarieren und
keinen Wert setzen würden, genau wie wir unseren
Tod haben, solange ich 0 bin, weil wir hat
es nur erklärt und nichts getan. Es befindet sich nur im
Standardzustand, der 0 ist. Stoppen Sie jetzt bei 0, weil es uns
nicht gezwungen hat,
es als Parameter zu übergeben. Es war optional. Und so ist es
nur bei seinem Standardwert. Wenn ich jetzt F8 drücke, siehst du, dass die Schleife
von I bis 0
läuft, was eigentlich
keinen Sinn ergibt weil es nur
weiß, dass es vorwärts gehen soll. Die Schleife
läuft also überhaupt nicht, da 0 nicht höher als eine
ist und versucht, um eins
nach oben zu erhöhen. Jetzt sind wir wieder hier drüben.
Ich höre einfach damit auf. So können wir
einen optionalen Parameter in
unserem Subroutine-Design haben . Etwas, das ich dir hier zeigen werde. Wenn ich diese beiden
Optionen mache, kann ich das tun. Wenn ich nun hierher gehe und zwei Klammern
öffne, starte bei und stopp bei sind beide optionale Parameter und
ich muss sie nicht aufrufen. Und genau wie Sie erwarten würden, die
Klammern
in diesem Fall tatsächlich
, verschwinden die
Klammern
in diesem Fall tatsächlich
, weil ich da nichts drin
habe. Aber beide
würden den Wert 0 haben. Nun, was Sie zeigen können, ist,
wenn wir hier das Gegenteil getan haben, und ich entferne optional
von unserer zweiten, dies wirft einen Fehler aus. Es heißt, erwartet, der zweite Parameter
sollte optional sein. Und das liegt daran, dass
es durch
die Idee verwirrt ist, dass unser erster
Umfang optional ist, aber unser zweiter liegt nicht
daran, dass wir hier
Parameter in einer
Sequenz aufrufen , in der sie aufgeführt sind. Wenn ich so etwas mache, ist
es
jetzt sehr verwirrt, weil dieser normalerweise
unseren ersten Parameter bedeuten würde, aber das ist optional. Und so weiß es nicht, dass dies
möglicherweise bedeuten würde, dass Stopp bei. Sie können also einfach sehen, dass es hier
ein logisches Problem gibt. Und die Programmierung weiß , dass dies unregelmäßig ist und eine Verwechssituation
verursacht. Und es setzt dieses Flag dort, wo Ihre obligatorischen Parameter
immer auf der linken Seite befinden und dann Ihre optionalen Parameter auf der rechten Seite sein müssen
. Jetzt, da wir dieses Konzept
gezeigt haben, zeigen
wir, wie wir
es für so etwas verwenden könnten. Und es gibt natürlich viele verschiedene
Verwendungsmöglichkeiten dafür, aber wir werden ihm zeigen, wie es für unseren Timer hier
funktionieren könnte. Vielleicht wollen wir also nicht, dass unser
Stopp bei optional ist. Stattdessen haben wir
diesen Timer, von einer Zahl zur anderen
wechselt. Und wir können so
lange anhalten und dann beginnen bei ist
der optionale Parameter. Also muss ich die
Sequenzen wechseln, die auf
der rechten Seite beginnen , damit sie Gründen, die ich gerade gezeigt habe, optional sein
kann. Jetzt könnten wir etwas haben, wie wir nur unseren Timer passieren. Wie sagen wir, wir lassen es
um fünf Sekunden hier drüben. Aber wir könnten von
drei bis fünf Sekunden sagen. Eigentlich tut mir leid, ich habe die
umgeschaltet. Ich vermische hier Dinge , wo wir mit
dem ersten Wert aufhören. Das würde also bei fünf Sekunden
anhalten, beginnt bei drei. Ich werde
diese vorerst nur kommentieren. Also werden wir
diese vorerst kommentieren. Und wenn ich das mache, drücke
ich F5 und wir sehen, dass
345 so machen wir das. Wir können es so etwas machen
wie seit Anfang als optional. Wenn ich das nicht habe, wird das tatsächlich laufen
und wir werden bei 0
beginnen, als unser
Startwert. Wir können das
nur ausführen, um das zu zeigen. Fangen Sie also bei 0 an. Und so werden wir hier oben
0 sehen, 0 bis fünf. Während wir das laufen lassen. Wir könnten so etwas machen. Da wir wissen, dass diese
Variable bei 0 beginnt,
wenn wir keinen Parameter übergeben , dann könnten wir
dazu bringen, etwas
wie Start bei gleich 0 zu sagen . Dann sagen wir, beginne
bei I gleich eins. Und das
bedeutet im Grunde, wenn wir hier keinen Parameter
übergeben, wie wir nicht
drei bis 5345 sagen. Und wir müssen nicht sagen, bei
welcher Nummer wir anfangen sollen. Und Sie können einfach
einen Parameter übergeben und er wird feststellen, dass nichts übergeben
wurde, also ist es 0. Es fängt bei einem an. Du siehst, dass es hier drüben
um eins angefangen hat. Dadurch wird ein
benutzerdefiniertes Serverteam erstellt , in
dem Sie die
Möglichkeit haben, etwas weiterzugeben, aber Sie sind nicht gezwungen, eine Entscheidung
zu treffen. Und es gibt eine
Standardbehandlung einer Situation, wenn wir uns dafür entscheiden, keinen
bestimmten Wert für einen Parameter zu übergeben.
34. 1.24 Funktionen – Einführung: Jetzt, da wir ein paar
Videos über Subroutinen haben, wie man sie von
anderen Subroutinen aus aufruft und wie man Parameter verwendet. Ich möchte die
Idee einer Funktion vorstellen. Anstelle von Sub hier können wir also noch die Keyword-Funktion
verwenden. Und wir würden
es sehr ähnlich deklarieren, und wir nennen es vorerst einfach
meine Funktion. Mach Klammern hier. Mit meiner Funktion. Ich kann das auch von
einer anderen Subroutine
oder einer anderen Funktion aus aufrufen . Im Grunde genommen kann
ich im
Code eines Containers diesen anderen
Containertyp nennen, der als Funktion
anstelle einer Subroutine bezeichnet wird. Wenn ich das mache, lege ich hier ein Nachrichtenfeld ein. Ich lege einfach ein
zufälliges Nachrichtenfeld , um zu sehen, was hier passiert. Und wir führen mein Makro aus. Wir kriegen unser Pop-up. Jetzt steigen wir in meine Funktion ein. Sie sehen hier sieht es so aus, als ob es
genau so läuft wie das, was
wir mit
Subroutinen durchgegangen sind ,
wenn wir es aufrufen, springen
wir zu diesem Codecontainer
und er beginnt zu laufen. Der Hauptunterschied zwischen
Funktionen besteht darin, dass Sie dies so
deklarieren können ,
wie Sie
eine Variable deklarieren und wie wir dies in der Vergangenheit
gezeigt haben. Sie können Ihre
Funktion auch als Datentyp deklarieren. Und so können wir als String sagen. Und das bedeutet, dass dies auch
wie eine Variable verwendet werden
kann. Wenn ich jetzt sage, dass meine
Funktion Steve entspricht, schauen
wir uns an, was
hier über den Start passiert. Hallo. Und dann ist meine Funktion Steve
gleich. Und wir haben damit
nichts gemacht,
aber wenn Sie dies jetzt
hervorheben, sehen
Sie, dass der Wert
meiner Funktion Steve ist. In diesem Beispiel haben wir noch nichts mit
dieser Funktion
gemacht. Lassen Sie uns das also in
etwas ganz Grundlegendes verwandeln. Dies ist wie ein klassisches
Beispiel für eine Funktion. Wir sagen, fügen Sie zwei Zahlen hinzu und wir lassen dieses Ding Parameter
und die Parameter übernehmen. Ich werde keine separaten Lektionen
darüber drehen , wie man Parameter
für diese Funktionen verwendet, da
es auf seiner grundlegenden Ebene genauso funktioniert wie bei den Subroutinen. Wir können Wert eins sagen solange ich auch
Wert zwei sagen werde. Dies nimmt also zwei Parameter an, Wert eins und Wert zwei, wird das Ergebnis
auch eine Zahl sein. Also werden wir das auch lange machen. Und dann sagen wir hier, dass meine
Funktion den Namen ändert, zwei Zahlen
addiert und dies
entspricht Wert1, Wert2. Plötzlich habe ich
hier Platz, was ich nicht sollte. Wenn wir jetzt meine Funktion aufrufen sie
nicht wirklich aufrufen, benutze
ich
dies, als würde ich eine Variable verwenden. Es ist nicht mehr meine Funktion. Nennen wir es nun zwei Zahlen
hinzufügen und machen wir einen Debug-Print. Jetzt gibt es hier ein Problem, bei dem Licht aus unserer Subroutine
mit Parameterlektionen wir es
in unsere beiden Zahlen senden müssen. Lassen Sie uns also unseren
Wert eins gleich zwei einsenden, und dann
wird unser zweiter Wert nur drei machen. Wir erwarten also das
Ergebnis von fünf hier. Und ich habe vergessen,
diese Klammern zu schließen. Und dann führen wir das durch. Jetzt springen wir hier hoch, wir haben 23 als unsere Parameter, die in diese Funktion
eingefügt werden. Und dann fügen wir
es hier zusammen. Und dann
füge unser Funktionsname zwei Zahlen gleich fünf hinzu. Sie sehen, dass wir es nicht
deklarieren mussten, wie wir unsere
Variablen hier oben
deklarieren, da diese Erstellung
der Funktion da diese Erstellung
der Funktion hier
im Wesentlichen zwei Zahlen als Datentyp deklariert. Jetzt lief
das, das Ergebnis
davon ist fünf. Und als wir
diese Debug-Druckzeile ausgeführt haben, kamen
fünf hier raus. Nun ist der wichtige Teil, dass wir den
Namen festlegen und zwei Zahlen hinzufügen müssen, damit
diese Ausgabe fünf ist. Was auch immer
wir als Funktionsnamen haben , ist das, was wir als Wert festlegen
müssen. Wenn wir also
so etwas gemacht haben und sagen: Solange das Ergebnis gleich
Wert eins ist, Wert zwei. Und ich werde das vorerst nur
kommentieren. Sie können sich vorstellen, dass das
Ergebnis fünf entspricht, aber wir haben nichts getan, um zu sagen, dass
das Ergebnis, das aus
dieser Funktion kommt , die wir
zwei Zahlen hinzufügen genannt haben , das Ergebnis sein wird
. Wenn wir hier rüberspringen, sehen
Sie, dass wir 0
für unseren Output haben. Und ich führe das durch. Ich treffe gerade F5 hier. Wir werden dieses Ding leiten. Wir sehen, dass 0 herauskommt und das
liegt daran, dass wir zwei Zahlen
hinzufügen aufrufen. Und es gibt nichts,
was dazu führt, dass das Ergebnis hier in
den Wert von
Add zwei Zahlen übergeht. Wenn wir es auf diese
Weise machen wollten und nicht direkt unsere ganze
Arbeit in dieser Funktion erledigen wollten. Wir können sagen, dass Add zwei
Zahlen gleich Ergebnis ist. Jetzt haben wir also
fünf und dann
wird fünf zum Ausgang
dieser Funktion. Und dann sind hier die Fünf
, die wieder auftauchen.
35. 1.23 mit Statement: In diesem Video
werde ich eine kurze Codierungsnotation durchgehen . Das ist ziemlich einfach,
aber wir müssen es nur durchgehen, weil wir es
definitiv in Zukunft
benutzen werden. Und ich möchte sicherstellen, dass du es
erkennst, wenn du es siehst. Also werden wir die Demonstration der
Breitenaussage durchgehen , die
ich geben werde,
wenn ich sage, dass der
Wert des Bereichs A15 gleich vorbei ist , haben
wir
so etwas ständig gemacht. Also habe ich F8 gedrückt und führe das aus und wir haben das Wort
Test in den Bereich A1 gebracht. Dann möchten Sie vielleicht noch ein paar Sachen mit dem
Bereich A1
machen , wird Range A1 sagen, diese Schriftart, die alles gleich stimmt. Und dann wollten wir
etwas anderes damit machen. Schrift, kursiv entspricht true. Und dann möchten wir sagen
, dass dieses Interieur, diese Farbe gleich Rot ist. Wenn ich jetzt
herkomme und F8 drücke
und das ausführen, haben wir
Aufgaben, die bereits da waren. Fett wird wahr,
kursiv wird wahr. Der Hintergrund
wird anscheinend schwarz. liegt daran, dass ich WD read verwende,
wenn ich wirklich in Excel bin, also sollte ich Excel Red verwenden. Probieren wir das mal aus.
Schon wieder. Ich habe hier F5 getroffen, und los geht's. Das ist also nicht wichtig. Warum ich dir
hier zeigen wollte, ist, dass wir hier
viermal Range
A1 geschrieben haben . Und wenn wir möglicherweise zehn weitere seltsame Dinge
ändern wollten , , ist
dies nicht der größte Deal, aber die Zeilen könnten länger werden und dieser Starttag
und auch länger werden. Nehmen wir an, wir haben Blatt
zwei und stattdessen wollen wir Blätter zu diesem Bereich
sagen. Jetzt wird das noch länger. Nehmen wir an, wir wollten diese Arbeitsmappe
ausdrücklich aufrufen. Und jetzt wird das alles
gleich funktionieren außer wenn wir mehrere
Arbeitsmappen geöffnet haben, werden explizit angegeben, in welcher Arbeitsmappe wir uns befinden und in
welchem Blatt wir uns befinden, G2, nicht mit
Sheet1 zu verwechseln und unser Sortiment A1. Wenn ich jetzt auf „Play“ klicke, wirst
du sehen, dass es wusste, dass es zu Blatt zwei kommt
. Und das Gleiche
wurde dem Blatt hinzugefügt. Das Ärgerliche
hier ist, dass wir das
alles immer wieder
austippen . Und wenn wir mehr Leitungen haben, müssen
wir es noch mehr tun und es sind nur redundante Informationen. Und wenn wir uns
zum Beispiel auf B2
umstellen wollten , müssen wir
es an vier verschiedenen Orten tun. Hier ist die Notation mit
Statement. Wenn ich also width und
dann all diese
Informationen hier drüben eintippe , kopiere
ich vorerst. Und dann sag n width. Was ist dann dazwischen
diese beiden Aussagen? Der Beginn unserer Breite und
dann das Ende unserer Breite. Sehr ähnlich wie eine if-Aussage , die wir
oft benutzt haben. Ich tippe das aus, damit
alles besser lesbar ist. Und dann entferne ich
das hier drüben. Diese Breitenanweisung besagt, dass wir dies
als Anfang der Zeile verwenden werden. Und wann immer Sie
hier einen Zeitraum
sehen , wird es sagen, dass dies auf alles
richten soll, was wir für unsere
Breitenaussage hier haben. Das bedeutet im Grunde, dass dies genau hier gleichwertig
ist. Ich werde es
weiterkopieren nur damit wir
es als Referenz haben. Und lösche
all das hier drüben. Diese beiden Dinge bedeuten also genau den gleichen Code. Es gibt keinen Unterschied zwischen diesem Code, außer dass
dieser viel kürzer ist. Und wenn ich
das ändern möchte, um hier B2 zu sagen, führe Blatt zwei hier aus. Ich kann
diesen Code durchgehen und
musste das nicht viermal ändern. Stattdessen
arbeiten wir mit Zelle B2. Und Sie sehen, als wir
durchgegangen sind, verhält
es sich so, als wären nur vollständige
Codezeilen, in denen dieser Zeitraum links an diesen
angehängt wird. Ich höre hier auf. Das ist es wirklich. Dies ist eine grundlegende Breitenanweisung. Ich benutze es die ganze Zeit. Erspart Ihnen viel Tippen, erspart Ihnen in Zukunft viele
Aktualisierungen. Und Sie werden auch feststellen
, dass manchmal, wenn Sie Makros
aufzeichnen und
verschiedene Aktionen Ihrer Excel-Datei ausführen und dann
den Code anzeigen , der
von Ihrer Aufzeichnung generiert wurde , das Gericht über ein Makro verfügt verwende diese Notation auch
extrem oft. Eine weitere Sache, die ich
hier vergessen habe zu beweisen ist, wenn Sie
keine Periode verwenden, kann
ich immer noch
hierher kommen und sagen, dass Range unterhalb dieses Wertes etwas
entspricht. Sie sehen hier, dass wir B2 verwenden, aber weil ich hier keinen Zeitraum
habe, hängt Excel
dies nicht an das an, worum es bei meiner
Width-Anweisung geht. Nur wenn Sie
die Codezeile mit
einer Periode beginnen, die Sie aus einem
anderen Grund als
dieser Breitenanweisung
fast nie tun , wird diese Periodenzeile verwendet und an unsere Breite angehängt
aussage. Wenn ich also hierher komme, kopiere
ich Paste,
nur um das
hier zu löschen und diese Zeile auszuführen. Mal sehen, wir machen
das Gleiche mit B2. Und wenn wir dann an
diese Linie kommen, funktioniert es immer noch. Es wirft keinen Fehler aus,
weil es denkt, dass es etwas Dummes
macht,
wie das zu tun. Es ist speziell auf der Suche nach diesen Zeilen, die
mit einer Periode beginnen, und alles andere verhält sich einfach wie es wäre, wenn es
außerhalb der with Aussage wäre.
36. 1.24.1 Fehlermeldung – Einführung – Über Fehler: Okay, jetzt möchte ich Ihnen
eine grundlegende Einführung in
die Fehlerbehandlung zeigen . In unseren bisherigen Videos haben Sie bisher Fehler in unserem Code
gesehen. Und diese werden
Laufzeitfehler genannt, was im Grunde genommen der Fall ist, wenn etwas im
Code schief geht, keinen Sinn ergibt. Und so sagt es Ihnen, dass ein Problem aufgetreten ist
und nicht mehr läuft. Und ich gebe ein
sehr einfaches Beispiel. Wir sagen Dimension,
meine Zahl als lang, und das ist ein Zahlenwert. Wenn ich sage, dass meine Zahl
zehn aus meiner Nummer entspricht. Lass uns das laufen lassen. Ich treffe F5 und du siehst
hier unten zehn. Wenn ich jetzt herkomme und meine Nummer in
Steve
ändere, treffe ich F8. Also gehen wir das durch. Wir haben gesehen, wie so
etwas passiert ist. Es ist ein Fehler beim Typ, der nicht übereinstimmt. Und das liegt daran, dass diese Variable die Zeichenfolge nicht akzeptieren
kann, aber ich versuche, hier eine Zeichenfolge zu
entsprechen. Wir haben auf Debug gestoßen und wir sind hier
ausgestrahlt. Wenn ich F8 drücke, um fortzufahren, stoßen
wir einfach immer wieder auf diesen
Fehler. Und wir müssen damit umgehen. Wenn wir einen solchen
Fehler erhalten, bedeutet
dies normalerweise , dass unser Code
etwas tut , was wir
nicht möchten. Und deshalb müssen wir hierher kommen und unseren Code ändern. Das wird immer noch größtenteils der Fall
sein. Aber was wir tun können, ist, dass unser Code erkennt, dass die Pfeile auftauchen und
nicht treffen
werden ,
während wir jetzt treffen ist alles was auf
dieser Linie von
code. Also werde ich wieder auf Stop klicken. Und ich zeige dir
, was ich damit meine. Was wir
im Hintergrund nicht sehen, ist, dass es tatsächlich eine Variable
namens ARR für Fehler gibt. Und Sie sehen, wie
wir,
wenn ich dies eingegeben habe, alle unsere
Eigenschaften und Methoden für das ARR-Objekt haben. Ich nenne es einfach das
Fehlerobjekt, das vorwärts geht. Und es sitzt hier
im Hintergrund. Und ich kann sagen, dass debug diese Nummer
druckt. Und lass uns F8 treffen. Und wir würden das laufen lassen und du siehst, das kam auf, die
Fehlernummer war 0. Ich kann etwas anderes
wie eine Fehlerbeschreibung machen. Und ich schiebe es nach oben
und ich treffe wieder F8. Und du siehst, dass hier nichts
gekommen ist. Das liegt daran, dass dieses
Objekt
im Hintergrund sitzt und bis zu diesem Zeitpunkt
keine Fehler in unserem Code enthält.
Wir wissen, dass wir
einen Fehler in dieser Codezeile haben werden, aber wir haben nicht ausgeführt es doch. Jetzt tippe ich hier
etwas ein, das auf R. Jetzt
tippe ich hier etwas ein. Ich tippe nach einem Fehler. Was ich also sage ist,
wenn es einen Fehler gibt
, werden wir etwas tun. Du könntest ändern
, was hier passiert. Aber in diesem Fall schreibe ich
als nächstes Lebenslauf, was im Grunde bedeutet,
wenn es einen Fehler gibt, dann
fahre einfach weiter. Also werde ich
das tatsächlich beenden und dann kopiere ich das. Schauen wir uns das
ganze Zeug hier an. Wir werden es auf Sendung sagen. Und dann gehen wir zurück
zu unserer Nummer. Wir haben uns daran erinnert, die Fehlernummer hier oben 0 ist. In der Tat werde ich noch
mehr Debug-Nachrichten , um alles so
klar wie möglich zu machen. Ich gehe durch
diesen Code, wir haben dieses Fehlerobjekt, das
wir nie deklariert haben. Es ist nur im Hintergrund
von VBA, wenn es läuft. Die Zahl ist 0.
Die Beschreibung ist bei jedem Lebenslauf als nächstes
nichts, und hier
erwarten wir, dass ein Fehler auftritt,
bei dem dieser Laufzeitfehlerdialog zuvor auftauchte. Und wenn ich jetzt F8 drücke,
siehst du, dass es
durchgegangen ist und dann sogar den Fehler auftaucht. Bisher wissen wir nicht
einmal, dass etwas Falsches passiert ist,
dass wir auf einen Fehler gestoßen sind. Obwohl wir bereits wissen, dass dies unmöglich
Steve sein kann, ist diese Variable hier. Wenn ich den Mauszeiger darüber fahre,
siehst du, dass es immer noch 0 sagt, was der
Standardzustand ist, wenn wir es deklarieren. Und dann haben wir jetzt
eine Fehlernummer von 13. Und wenn wir dann
treffen, ist meine Nummer 0. Wenn ich also F5 drücke,
siehst du, dass es wieder gelaufen ist und
es gibt einfach keinen Fehler. Lassen Sie uns das klarer machen. Zahlenbeschreibung genau hier, jede Zahl, und wir machen hier unten sogar wieder
ErrorDescription. Und das liegt an
dieser Zeile genau hier in der wir sagen,
wenn es einen Fehler gibt, dann werden wir als nächstes fortfahren. Und deshalb können wir weitermachen. Und obwohl wir einen Fehler getroffen haben, sehen
Sie, dass dieses
Fehlerobjekt auf dieser Seite der Anweisung
den
aufgetretenen Fehler liest. Es ist ein Fehler 13 und
eine Typ-Nichtübereinstimmung. Während vor dem Fehler auftrat, enthielt
dieses Fehlerobjekt nichts da zu diesem
Zeitpunkt kein Fehler aufgetreten ist. Mach etwas wie
kommentiere einfach diese Zeile. Sie werden sehen, wenn ich F5 treffe, sind
wir wieder da,
wo wir vorher waren, nämlich dass wir diese Linie erreicht haben. Wir haben Laufzeitfehler 13. Sie können also sehen,
dass dies die Fehlernummer
ist dass nach dem Auftreten unseres Fehlers aufgetreten ist,
und es ist eine Typfehlübereinstimmung. Die Grundidee hier ist also , dass
dieses Fehlerobjekt im Hintergrund
hängt. Und wenn ein Fehler auftritt, ändern
sich
die Eigenschaften
dieses Objekts aufgetretenen Fehler. Und die meiste Zeit, wenn
alles
korrekt läuft , ist die
Fehlernummer 0, die Beschreibung ist
leer und es gibt andere Tags, die
dieses Fehlerobjekt nur anzeigen , wenn keine
Fehler aufgetreten sind. Eine häufige Fehlerbehandlung, die
Sie möglicherweise feststellen, ist, dass Sie OnError
sagen und als Nächstes fortsetzen werden. Und wir wollen nicht wirklich, dass das einfach
weitergeht und nichts tut. Manche Leute mögen das tun, aber es wird als wirklich
schlechte Praxis angesehen , weil etwas schief
gelaufen ist und Sie nicht möchten, dass
der Code es einfach ignoriert. Denn wenn wir
Hunderte von Codezeilen haben, all das Zeug hier unten, wenn es viel mehr Logik gab, wollen
wir nicht
einfach weitermachen und laufen, obwohl
etwas schief gelaufen ist. Das bedeutet, dass R-Code, der
später ausgeführt wird, möglicherweise etwas hat
, das schief läuft. Und wir wollen tatsächlich wissen, dass etwas
Schlimmes passiert ist. Also oft hast du
diesen Lebenslauf als nächstes, und dann haben wir
etwas wie wenn diese Zahl nicht
0 ist, dann eine Bedingung. Und dann hier drin,
einfach zum Beispiel, lassen Sie uns ein Nachrichtenfeld aufrufen
und wir sagen, dass es jemals passiert ist. Und wir sagen unsere
Nummer oder unseren Distributor. Was wir hier haben, ist,
wenn ich hier weitermache, muss
ich tatsächlich von vorne anfangen. Also habe ich als nächstes F8 in unserem Lebenslauf und dann haben wir unseren Fehler hier getroffen. Und nichts hat
uns aufgehalten, wir machen weiter. Aber jetzt haben wir diese
if-Anweisung, die
besagt, ob die
Fehlernummer nicht 0 ist,
das bedeutet, dass unser System dort
erkannt wurde. Und dann hatte ich jetzt
ein Nachrichtenfeld. Und wenn dieses Makro vom Benutzer aus
ausgeführt wurde, sehen
Sie, dass wir
ein Meldungsfeld erhalten das uns
mitteilt, dass der
Fehler aufgetreten ist. Und der Vorteil, so
etwas zu tun, selbst nur ein
Popup-Meldungsfeld, ist jetzt, dass ich meinen Code weiter
ausführen kann. Ich könnte andere Dinge tun oder den Code
auf verschiedene Arten forken. Eine Sache tritt also auf,
wenn ein Fehler vorliegt, und eine andere Sache passiert,
wenn kein Fehler vorliegt. Und wir können
den Benutzer benachrichtigen
, ohne dass dieses Dialogfeld auftaucht. Das könnte für den Benutzer
verwirrend sein. Jetzt können wir unsere
Botschaft darüber steuern, was der Benutzer sieht, anstatt
das Standard-Popup zu erhalten. Das passiert, wenn VBA einen Fehler
erkennt. Wenn wir es jetzt machen,
gibt es keinen Fehler. Nehmen wir an, meine
Nummer ist gleich eins, was eine
völlig gültige
Codezeile sein sollte , die wir in unserem Lebenslauf hatten. Wenn unsere Nummer nicht 0 ist, wird sie hier
eingetragen. Da dies jedoch
keinen Fehler verursacht, überspringen
wir dies einfach
und es ist kein Fehler aufgetreten. Und du siehst hier unten, wir sind
immer noch bei der Fehlernummer 0. Lasst uns das noch einmal
durchgehen. Wir werden sehen, obwohl wir
diese Zeile haben , also sind wir bereit
, einen Fehler zu behandeln. Wir benutzen es nicht. Also ist die Fehlernummer immer noch 0 hier und wir müssen nie
in diese if-Anweisung springen. Und wir werden einfach wieder
zu dem zurückkehren, was wir vorher waren. Und Sie können jetzt
mit diesem Code hier sehen, wir alle Probleme erkennen können
, die in dieser Zeile auftreten können. In diesem Beispiel versuchen wir
ausdrücklich, diese
Codezeile
anzusprechen, da wir der Meinung sind
, dass in dieser Codezeile
möglicherweise ein Fehler vorliegt oder nicht. Sie
verwenden diese Methode oft nur um den Code herum, wo Sie glauben, dass es wahrscheinlich
einen Fehler gibt. Was Sie nicht tun sollten oder vielleicht keinen Fehler
haben, aber es besteht eine gute Chance
, dass Sie einen Fehler haben. Und dann komplizierter Code, es kann alle
möglichen Variablen , die sich kombinieren. Und so wird es nicht so offensichtlich sein
, wie wir hier
absichtlich einen Fehler in einer einzigen Zeile erzeugen. Natürlich. Eine Hauptidee ist
jedoch in der Regel, dass diese Notation um
eine sehr bestimmte Zeile oder einen
kleinen Codeabschnitt
umwickelt wird. Was Sie tun möchten, haben Sie Hunderte von Codezeilen unten und haben Sie dies
als nächstes in unserem Lebenslauf, rund um Ihren gesamten Code. Es mag verlockend sein, dies in bestimmten Fällen zu
tun, aber es wird als schlechte
Praxis angesehen, weil Sie nicht
alle Ihre Probleme ignorieren möchten und dann alle möglichen nachgelagerten negativen
Auswirkungen in Ihrem ohne
das zu eskalieren und
Sie oder die Benutzer sehen zu lassen , dass
etwas schief gelaufen ist. Das ist also nur die grundlegende
Einführung hier. Während wir gehen,
werden wir
viel detailliertere Möglichkeiten aufbauen viel detailliertere Möglichkeiten wir
diesen Fehlerhandler verwenden können. Dies ist jedoch das Grundkonzept
dieses Keywords von OnError. Und dann die verschiedenen
Dinge, die Sie mit
diesem Fehlerobjekt tun können , wenn Sie den Fehlern
umgehen, die in Ihrem Code
auftreten können.
37. 1.24.2 GoTo – -: Okay, wenn Sie gerade
die letzte Lektion über eine
Einführung in die Fehlerbehandlung gesehen haben, habe ich immer noch nur
die Basisversion dieses
Codes auf meinem Bildschirm. Aber ich möchte
ein anderes kleines Thema vorstellen , bevor wir mit der Fehlerbehandlung
fortfahren. Und das ist die Benennung
verschiedener Codeabschnitte, die im Grunde genommen den Code mit Lesezeichen und dann zu diesem Lesezeichen
springen können. Und in VBA wird das
die Go-to-Funktion genannt. Grundsätzlich. Lass mich dir zeigen
, was ich meine hier. Jetzt und am
Ende unseres Codes werde
ich diese
Notation verwenden, in der
ich diesen Abschnitt zwei aufrufe. Es muss ein einziges
Wort ohne Leerzeichen sein. Also verwende ich diesen Unterstrich. Ich mache einen Doppelpunkt hier. Wenn ich die Eingabetaste drücke,
wird die Linie automatisch nach links
gesprungen. Wenn ich darauf tippe,
siehst du ich die Zeile ändere, will
es immer noch nach links
gehen. Und das liegt daran, dass
dies ein Lesezeichen ist. Geben Sie jetzt etwas wie
Abschnittsansichtssachen ein. Eigentlich habe ich das getestet
, bevor ich den Rekord erreicht habe. Also habe ich diese
Nachricht schon hier unten. Und die einzige Zeile hier
ist ein Debug-Print. Nun, wenn ich das ausführe , haben wir tatsächlich
immer noch unseren Code aus dem vorherigen Video. Aber ich hatte diese Fehlermeldung , die aufgetreten ist, als
Debug-Druck aufgetreten ist. Also führen wir nur
den Code aus und sehen Sie, jetzt haben wir
diese Codezeile nicht ausgeführt. Dies ist an der linken Wand, und es ist nur die
Notation wegen dieses
Doppelpunkts, dass
es sich um ein Lesezeichen handelt. Du siehst also, dass es diese Codezeile nie
ausgeführt hat. Es hat es einfach übersprungen. Und jetzt läuft es diese
Codezeile und wir haben
alles bis zum Ende ausgeführt. Was dieses Lesezeichen bedeutet, ist es nur diese Codezeile markiert. Es markiert tatsächlich
diese Codezeile und es ist ein Sprung zu
allem darunter. Sie können zu den Lesezeichen springen, etwas wie das Schreiben von „Go-to“. Abschnitt 2 hier sehen Sie, dass
goto ein Schlüsselwort ist,
und es wird hier automatisch formatiert
und Farben geändert, um Ihnen zu
zeigen, dass es sich um ein Schlüsselwort handelt. Und dann haben wir unsere zweite
Sektion hier. Wenn ich diesen Code ausführe, treffe
ich F Acht. Und in dieser Zeile
heißt es Gehe zu Abschnitt zwei, du siehst einen Sprung zu
diesem Abschnitt, um ein Lesezeichen zu setzen. Und jetzt führen wir
den Code hier drüben aus. Und wir haben all
das Zeug hier übersprungen. Und das liegt daran, dass diese
Codezeile Ihnen nur sagt, dass Sie springen
sollen, wo sich
das Lesezeichen befindet. Wenn ich nun so etwas mache, wie zum dritten Abschnitt zu
springen, schauen
wir uns an, was passiert,
weil es
keinen Abschnitt drei gibt und du siehst, dass ich
F8 gedrückt habe, und das ist sofort
aufgetaucht und dir gesagt, dass
es nicht definiert ist. Noch bevor wir anfangen zu laufen, wird
der Code kompiliert. Und wenn wir erkennen, dass es hier
ein Problem gibt , dass
wir eine
Anlaufzeile haben werden, die kein
vorhandenes Lesezeichen hat. Aber Sie haben vorher
gesehen, dass das Lesezeichen hier platziert
wird, es keine Probleme verursacht. Wenn wir dieses Tag
nicht verwenden ,
verursacht das eigentlich kein Problem, obwohl wir nicht darauf springen. Aber du kannst nicht zu
etwas springen, das es nicht gibt. In der nächsten Lektion,
in der ich weiter an den Details zur
Fehlerbehandlung
arbeite, werden
Sie sehen, warum ich Ihnen dies hier
zeige, da diese Goto-Funktion häufig für die
grundlegende Fehlerbehandlung verwendet
wird. Eine Sache, die ich sagen werde, ist, dass
diese Fähigkeit zu Abschnitt zwei hier normalerweise
etwas ist , das oft als Problem in VBA
hingewiesen wird
, nämlich dass
viele Programmierer, die
modernere Sprachen machen benutze
das nicht gerne oder überbeanspruche es nicht. Einer der Hauptgründe, warum ich
es verwende , ist die Fehlerbehandlung. Dann
zeige ich es dir später. Es ist jedoch üblich, dass dies als einer
der Gründe angesprochen wird, warum
VBA dazu führen kann, dass einige
Codes wirklich schwer zu befolgen
und schwer zu warten sind. Denn all das
springt einfach herum und überspringt, was nur schwer zu verfolgen ist. Wenn ich diesen Code aus irgendeinem
Grund hier gelassen habe, kannst
du sehen, dass er keinen
Sinn ergibt. Und das liegt daran, dass der gesamte Code hier
drin niemals ausgeführt wird. Wenn ich das aus irgendeinem Grund einfach so
gelassen habe, war
dies eine Funktion,
die in etwas
verwendet wurde, das ich erstellt habe. Es ist jetzt nicht offensichtlich, dass wir sehen was dieses Goto und
dieses Lesezeichen bewirken, wir wissen, dass dieser
Code selbst
einfach nie ausgeführt wird und es keinen
Sinn ergibt, dass er hier ist. Aber du siehst, es kennzeichnet
uns nicht , dass es
sich um schlecht geschriebener Code handelt. Im schlimmsten Fall werden
Sie schlechten Code sehen wo es Tonnen von diesen
Goto gibt. Normalerweise ist es am einfachsten, wie der Code läuft, was wir bisher
gemacht haben und
weiterhin tun werden was wir bisher
gemacht haben und
weiterhin tun werden,
von oben nach unten , dass wir nur eine Codezeile
ausführen, während wir
nacheinander von oben nach unten gehen , dass wir nur eine Codezeile
ausführen, während wir
nacheinander von oben nach unten gehen
folgen. Aber sobald wir anfangen,
mit zu vielen
dieser Goto-Anweisungen verrückt zu werden, können
Sie sehen, dass der Code nicht können
Sie sehen, dass der Code nicht
nur von oben nach unten geht. Wir können
überall springen. Und wenn es Hunderte oder
Tausende von Codezeilen in verschiedenen Subroutinen und Funktionen gibt, die
überall springen. Wir können sehr schnell sehr
verwirrend werden. Und obwohl dies
eine wirklich einfache Funktion ist , die für viele Programmierer
verwendet werden
kann, gilt sie als schlechte Praxis. Sie werden feststellen, dass Leute
sich über
diese Art von Dingen beschweren und es
Spaghetticode
nennen , weil der Code
so verheddert ist, dass es sehr
schwer ist , zu folgen, wohin sich jeder
Prozesspfad befindet. Das war's. Es gibt hier eine grundlegende Einführung in diese Goto-Funktion
, die wir verwenden werden. Denken Sie jedoch daran, dass es nicht etwas ist, das Sie bei der Verwendung über Bord gehen möchten
.
38. 1.24.3 Über Error: Lasst uns nun die
letzten beiden Lektionen,
die ich aufnehme, zusammenbinden die ich aufnehme, zusammenbinden ist
die Einführung in die
Fehlerbehandlung mit dieser Fehleranweisung und diesem
goto-Abschnitt hier, in dem wir zu einem Lesezeichen
springen können. Im Moment haben wir dieses Beispiel, das wirklich
nichts bewirkt. Wir haben eine Variable
namens meine Nummer. Und dann könnten wir hier
einen Fehler erzeugen
, den wir mit
unserer if-Aussage hier finden. Und dann machen wir hier drüben
nichts Interessantes. Wir geben nur den Fehler aus. Lassen Sie uns stattdessen etwas mit
dem Code
machen, nur um
Ihnen ein Anwendungsbeispiel zu geben, in dem wir unsere Nummer haben
und Antwort sagen können, nennen
wir es auch. Und wir sagen, dass die Antwort gleich
meiner Zahl plus Minus ist. Sagen Sie, debuggen, drucken. Antwort. Unsere Antwort hier. Wenn also alles gut
mit dem Coby hier läuft, werde
ich meine
Zahl gleich fünf machen,
was wir nicht erwarten, dass sie
Fehler verursachen wird, da die
Variable eine Zahl ist. Eigentlich siehst du
aus dem letzten Video, ich habe das gerade hier gelassen, und das ergibt keinen Sinn. Dies ist eine großartige Demonstration was ich in
der letzten Lektion erwähnt habe, nämlich dass dieser Code
hier einfach unseren gesamten Code
überspringt und es keinen
Grund dafür gibt dass er so
existiert, wie
wir dies verlassen haben. Also lösche ich
diese goto-Anweisung und lege sie für den Moment
einfach beiseite. Jetzt in unserem Lebenslauf
gibt es hier keinen Fehler. Wir überspringen also unser Meldungsfeld, da
die Fehlernummer 0 ist. Jetzt haben wir unsere Antwort, die fünf plus fünf gleich zehn
ist. Und wie erwartet lautet
unsere Antwort zehn. Und dann machen wir Abschnitt zwei, der gerade aus
der letzten Lektion stammt. Okay, das ist also großartig. Wir haben hier unsere Funktion, die das Ziel zu sein
scheint, eine Zahl zu
addieren. Und lasst uns ein paar Probleme schaffen. Jetzt. Lassen Sie uns unser
Problem genau hier schaffen. Und aus zwei Lektionen vor zwei Lektionen haben
wir unseren Fehlerbehandler. Also sollten wir hier einen
Fehler bekommen, aber stattdessen haben wir diesen. Wenn es einen Fehler gibt, fahren
Sie einfach als Nächstes fort. Also fahren wir einfach
weiter. Und dann haben wir
unsere if-Anweisung, die feststellt, dass bei
unserem Error-Objekt ein Fehler festgestellt
wurde. Jetzt klicken wir auf unser Meldungsfeld, dem ein Fehler aufgetreten ist. Wir können klicken, Okay, dann sind
die Dinge nicht zum Stillstand gekommen. Dies war ein
Meldungsfeld, das wir absichtlich im Code
aufgestellt haben, der
immer noch läuft. Jetzt haben wir unsere
Antwort, die 0 ist, weil diese Zeile unsere Zahlen
eigentlich
nichts gesetzt hat und sie immer noch 0 von
unserer ursprünglichen Deklaration ist. Dies ist ein großartiges Beispiel dafür, warum Sie nicht einfach
weiterlaufen möchten. Warum müssten Sie Fehler
erhöhen. Denn wenn
jemand, der das ausgeführt hat, weiß
ich, dass diese Funktion momentan
keinen großen Zweck hat, aber Sie sehen unsere Antworten 0. Und wenn wir also
etwas Wichtiges tun würden, könnte
es einfach
weitermachen. Spucke eine Antwort aus,
in diesem Fall 0, und der Benutzer wird
denken, dass er
die Antwort der Software einmal erhält . Aber was wir wissen, dass
ein Fehler in 0
aufgetreten ist , ist nicht das,
was wir eigentlich wollen. Es ist nur ein Standardwert, der
passiert, wenn etwas schief läuft. Wir wollen nicht, dass das passiert. Stattdessen könnten wir tun, wenn wir in Abschnitt
zwei wichtige
Dinge vor sich hätten , was wir nicht tun. Aber lasst uns so tun, dies ein Code
, den wir ausführen möchten. Wir könnten sagen, geh zu Abschnitt zwei. Jetzt
machen wir das Gleiche. Wir haben unseren Fehler. Wir werden darüber informiert, dass bei diesem Meldungsfeld
ein Fehler vorliegt . Und dann springen wir
über den
zweiten Abschnitt und wir haben hier nicht nachgefragt und
geantwortet , weil dieser Fehler, von dem wir wussten, dass er eine schlechte Antwort
verursachen würde. Wir möchten also keine Antwort
geben, da wir wissen , dass
mit diesem Codeabschnitt etwas schief gelaufen ist. Und jetzt springen wir einfach weiter, um
unseren Code hier drüben fortzusetzen. Wie in der letzten
Lektion, in der ich erwähnt habe, wollen
wir damit
nicht verrückt werden weil es verwirrend werden
kann. Jetzt haben wir eine andere
Situation , in der wir hier etwas Code übersprungen haben. Und wenn das für
den Code hier unten wichtig war, dann
verheddert sich alles wieder schwer
zu verfolgen. Also nochmal
wollen wir damit nicht verrückt werden,
aber dies ist nur ein Beispiel dafür
, was Sie tun könnten. Etwas viel
Häufigeres, das Sie sehen werden, ist wir
vielleicht
so etwas tun, wo wir sagen, dass Sie den Fehlerhandler ausführen. Und dann sagen
Sie zu dieser Zeit hier drüben zu unserem Handler. Und dann können
wir hier drüben sagen, ob die Fehlernummer ist. Eigentlich, bevor
ich dir das zeige, lass mich mal wieder hier oben gehen. Ich werde die
ganze Mitte verlieren, wo wir sagen, wo wir eine if-Anweisung haben , die
unsere Fehlernummer überprüft. Anstatt als
Nächstes fortsetzen zu sagen. Bring es zurück. Dieser Lebenslauf sagt
im Grunde nur, obwohl es einen Fehler gibt, gehen Sie
einfach zur
nächsten Codezeile. Anstatt das zu tun, können
wir dies
durch den Go to ersetzen. Und genau wie wir die
goto-Anweisung für Abschnitt zwei hatten, können
wir sagen, dass der Fehlerhandler funktioniert. Und was das tut, ist,
wenn
es einen Fehler gibt, wird er einfach zu unserem Lesezeichen springen
, genau wie diese goto-Anweisung. Und so springt es
zu unserem Lesezeichen hier. Wenn wir ihm bei einem Fehler eine
echte Zahl geben, gehen Sie
hier unten zum Fehlerhandler. Es ist kein Fehler aufgetreten. Also setzen wir unsere
Codezeile einfach wie gewohnt fort,
da kein Fehler vorliegt. In diesem Fall. Sie können sehen, dass wir
diese Aussage nicht
mehr brauchen , die sie
abfängt , denn wenn
es einen Fehler gibt, springen
wir einfach zu unserem Lesezeichen, was unsere Fehlerbehandlung ist als was Sie könnten
normalerweise sehen. Und das ist wirklich
gängige Notation. Ist dann hier unten, kannst
du sagen, wenn unsere
Nummer nicht 0 ist, dann wirst du hier Sachen
erledigen. Und wir sagen nochmal
Fehlernummer, Fehlerbeschreibung. Und wir machen einfach ein Nachrichtenfeld, obwohl wir hier unten
alles tun können, was wir wollen. Anstelle von Abschnitt zwei haben
wir
das Ende des Codes
als unser Code unterteilt , um Fehler
zu behandeln. Und in diesem Fall erstellen wir
nur ein Nachrichtenfeld. Jetzt haben wir einen Fehler. Wir sind zu
unserem Fehlerhandler gesprungen. Und wenn die Fehlernummer hier
unten nicht 0 ist,
bedeutet, dass es
tatsächlich einen Fehler gibt. Jetzt bekommen wir unsere Nachrichtenbox und wir haben unsere
Funktion hier übersprungen. Das wird
uns nicht die richtige Antwort geben. Wenn wir dann
einige Eingaben geben , die sinnvoll sind
und wir keinen Fehler erwarten, sehen
Sie, dass wir diesen Code haben. Eine Sache, die
Sie hier erwähnen sollten, ist, dass Sie sehen können,
dass dieser Code tatsächlich etwas
sichtbar wie nichts ausführe. Beachten Sie, dass wir passieren
, wenn Sie diesen Code ausführen. Es setzt nur den
Standard für das, was passieren wird, während wir den Code
weiterhin ausführen. Ich erkläre das in
einer Minute, wenn ich
zurückgehe und den Fehler erneut erstelle. Aber sehen Sie, lass mich
von Anfang an beginnen. Wir erwarten hier keinen Fehler. Jetzt laufen wir also direkt durch. Unsere Antwort ist
fünf plus fünf gleich zehn. Jetzt befinden wir uns in unserem
Error-Handler-Bereich. Wir sind im Grunde
auf unser Lesezeichen gesprungen. Aber weil wir
diese if-Anweisung haben, ist
nichts schief gelaufen, überspringen
wir diese Nachricht und wir
erhalten dieses Meldungsfeld nicht. Jetzt haben wir eine
grundlegende Fehlerbehandlung erstellt , die die
potenziellen Fallstricke vermeidet Wenn alles wie gewohnt
korrekt läuft, ist
unsere Fehlerbehandlung
hier unten und es läuft nicht,
wenn
es gab keinen Fehler. Wenn wir hierher kommen und eine Fehlersituation
erzeugen. Das habe ich vorher gemeint,
wo diese Codezeile, obwohl wir wissen,
dass hier ein Fehler vorliegt, nichts tut. Es stellt nur die Situation so fest, als ob es Fehler
gibt, die darunter
aufgetreten sind, dann wird es
diese Situation nutzen. Jetzt. Es wird
hier runter springen und unseren Fehler auswerfen. Und es hat diesen Code nicht ausgeführt , den wir nicht
weiterführen wollten. Wenn ein Fehler festgestellt wurde.
39. 1.24.4 Über Fehler – Beharrlichkeit und Zurücksetzen: nun mit
diesem Setup fortfahren, das wir in
unserer vorherigen Lektion hatten ,
lassen Sie mich hier aufhören. Wir werden tatsächlich eine Situation
schaffen , in der es keine Fehler gibt. Wir spucken unsere Antwort aus
und alles funktioniert. Jetzt nach unserer Antwort hier drüben, machen
wir noch ein paar andere Sachen. Ich gebe
hier nur einen Kommentar ab, mach mehr Sachen. Nehmen wir an, wir machen
etwas anderes, das etwas nichts mit dem
Code zu tun hat, den wir hier haben. Und wir sagen Dimension, andere Zahl so lang. Und dann sagen wir, dass
andere Zahl gleich ist. Steve? Wenn ich das jetzt ausführe, haben
wir, wenn es einen Fehler gibt, gehen
wir zu unserem
Fehlerhandler und sind
hier in dieser Zeile gesprungen , auf die wir uns konzentriert
haben , dass es keinen Fehler
gibt. Also los geht's, wir fahren fort. Und jetzt sind
wir in dieser Linie gesprungen. Dies war eigentlich ein schlechtes Beispiel, weil dies die Codezeile sein würde
. Wie auch immer, das wird
in der nächsten Zeile sein. Sagen wir debuggen, drucken Sie eine andere Nummer aus irgendeinem Grund aus.
Versuchen wir es noch einmal. Wir gehen hier den ganzen
Weg durch und wir haben
eine Situation geschaffen , in der wir erwarten,
dass hier ein Fehler auftritt. Und du siehst, dass es
hier runter zu unserem Fehlerhandler springt. Was wir
hier bemerken, ist, dass diese
Codezeile , die wir in
unseren vorherigen Beispielen erstellt haben , um zu erfassen ob es einen Fehler
in dieser Codezeile gibt, diese Codezeile war, nicht nur bewerben Sie sich darauf. Es ist der Status unseres Codes festgelegt, was
bedeutet, dass alles, was nach dem dieser Zeile ausgeführt wird Ausführen
dieser Zeile ausgeführt wird,
für jede dieser darunter liegenden Codezeilen
dieselbe Funktion ausführen wird. Es wird überprüft, ob
ein Fehler vorliegt, gehen Sie zum Fehlerhandler, weshalb
diese Anweisung in dieser Codezeile immer noch angewendet wird. Und wenn es Hunderte von
Codezeilen dazwischen gab, dazwischen hier und hier. diesen Status hier
setzen, wird es immer noch so sein, dass Sie sehen können, dass, wenn Sie hier unten auf einen
Fehler stoßen, ob es sich um diese Zeile
oder etwas anderes handelt, ob es sich um diese Zeile
oder etwas anderes handelt,
eine Typenfehlübereinstimmung vorliegt. Selbst wenn Sie den Mauszeiger
über die Nummer fahren. Es wendet dies immer noch wenn ein Fehler vorliegt, gehen Sie
durch den Fehlerhandler. Das ist also wichtig, hier
zu beachten, denn ich könnte eine Situation
schaffen, die genauer zu sein
versucht. Jetzt werde ich
diese ganze Situation rückgängig machen. Lass uns das nochmal machen
wie zuvor. Und ich muss das entfernen. Sagen wir Abschnitt zwei. Und wir werden Abschnitt eins sagen. Also nennen wir
diesen Abschnitt ein Zeug. Und vielleicht machen wir hier in Abschnitt zwei
andere etwas nicht verwandte Sachen . Also könnte ich so etwas
machen, Abschnitt eins Fehler. Folgen wir also unserer
Logik hier drüben. Und alles ist abgestürzt. Ich weiß nicht wirklich, warum hier
alles abgestürzt ist. Du wirst jetzt einen kurzen
Sprung sehen, ich werde bei dem
Excel-Absturz gehen, den du gerade gesehen hast, ich weiß immer noch nicht,
was passiert ist, aber ich werde
das hier lassen, damit du
das voll bekommen kannst Erfahrung davon, was schief gehen
kann, wenn Sie Entwicklung
machen. Ich
schneide das Zeug nicht gern aus und male ein rosiges Bild. Ich weiß also nicht, warum
Excel in
diesem vorherigen Video während des Tippens abgestürzt ist, aber dies ist ein guter Grund, Ihre Arbeit häufig zu
speichern. Ich musste zurückkommen und den Code, den wir bis zu diesem Zeitpunkt
gemacht hatten,
erneut eingeben. Hoffentlich
sieht alles nahtlos aus. Und was wir hier haben ist, wo ich aufgehört habe, bevor
alles abgestürzt ist. Was ich Ihnen gezeigt habe,
ist, dass wir
diesen Abschnitt eins
und Abschnitt zwei haben können , der möglicherweise
andere nicht verwandte Dinge haben könnte. Und lasst uns das etwas nach oben schieben. Es wird nur
eine andere Nummer hier unten sagen. Und wo ich aufgehört habe ,
ist, dass wir vielleicht
so etwas haben , wo wir als nächstes in unserem Lebenslauf
sagen. Und dann können wir sagen, dass Abschnitt 1 Fehler hier
als Nachrichtenfeld aufgetreten ist. Und wenn ich also F8 treffe
und das
durchlaufe, zeige ich dir, was
das zu tun versucht. Wir sagen nur in
unserem Lebenslauf als nächstes, dass dies ohne Probleme ausgeführt wird. Debuggen Sie die Druckantwort, und dann haben
wir unsere Antwort Nummer zwei. Wenn ich nun
hierher komme und diesen Fehler
erneut erstelle , erstelle einen Fehler. Wir stellen fest, dass der
Fehler nicht 0 ist, daher gibt es ein Problem. Und wir haben unser Meldungsfeld ein
Abschnitt 1 Fehler aufgetreten. Wenn wir nun hierher kommen, haben
wir diese andere
Zeile, die einen Fehler in unserem zweiten
Abschnitt des Codes
verursachen wird . Und es wird einfach durch diese Linie
weitergeführt. Und wir drucken
unsere andere Nummer als 0, obwohl diese Zeile das Problem
verursacht hat. Auch hier wollen wir nicht, dass dies passiert, da hier ein Fehler
aufgetreten ist. Und wir möchten nicht, dass
der Benutzer denkt , dass 0 die richtige Zahl ist. Und dieses Problem tritt auf,
weil unser onResume als nächstes. Immer noch auf alles
hier unten in Abschnitt 2 anzuwenden, ist darin eingekapselt
, dass diese
Codezeile immer noch
auf unseren Code hier unten gilt. Wir wollen das nicht, weil
wir diesen Abschnitt auf
diese Weise geschrieben haben , nur um
unseren Abschnitt 1 Fehler zu erfassen. Es gibt also ein paar
Dinge, die wir hier tun können. Wir könnten hierher kommen. Und ähnlich wie das, was
wir hier oben haben, möchten
wir Abschnitt zwei sagen. Jetzt haben wir diesen
onResume immer noch gleich einer Achse. Wir fangen unseren
Abschnitt 1 Fehler auf. Dann fangen Sie unseren Fehler in Sektion
zwei hier auf. Im Grunde verwenden wir diese
sehr häufige if-Anweisung unsere Fehlernummer
überprüft, um
ein spezifischeres Erfassen von
Fehlern zu erzeugen. Aber wir haben keine andere
Situation, die möglicherweise auftauchen könnte, was vielleicht
nicht möchte, dass die
Fehlerbehandlung hier
aus irgendeinem Grund stattfindet. Ich will nicht weitermachen. Wenn wir hier einen Fehler haben, möchte
ich den normalen Debugger. Und was ich tun kann, ist,
nachdem ich dieses Problem behandelt habe, kann
ich sagen, dass ich auf Sendung zu 0 gehe, was im Grunde bedeutet,
dass
die normale Fehlerbehandlung, die wir zuvor hatten, wieder aufgenommen wurde . Also kann ich das entfernen,
was bedeutet, bevor wir
jemals über die Fehlerbehandlung mit
dieser OnResume-Anweisung sprechen. Nun, für diese Codezeile fahren
wir fort und verwenden dort unsere Fehlerbehandlung
if-Anweisung. Aber jetzt, wenn wir
diese Codezeile ausführen, sagen
wir, dass OnError zu 0 geht. bedeutet im Grunde genommen, dass
die Standardsache, die für den VB-Editor
auftritt, wieder aufgenommen wurde. Was bedeutet,
dass wir jetzt, da wir dieses Problem getroffen
haben, wieder zu unserem normalen
VBA-Debugger mit unseren Continue- und
Debug-Optionen hier drüben sind. Dies bedeutet also, dass dies
bedeutet, dass dies bedeutet Sie Ihre OnError-Anweisungen
, die Sie möglicherweise zuvor hatten, rückgängig machen
und zur Standardeinstellung zurückkehren. Sie erinnern sich, dass Go-to
bedeutet, zu unserem Lesezeichen zu springen. Wenn wir also etwas wie
Abschnitt drei hier sagen, Abschnitt Drei Süden hier unten, könnten
wir auch sagen, dass Sie
bei Ihrem nächsten Fehler zu Abschnitt drei
gehen. Dieser Code ist ziemlich verwirrend, weil
wir hier oben sagen, gehe zu Abschnitt drei. Wir werden
hier unten auf den Fehler
stoßen und Sie sehen, dass er in Abschnitt drei
springt weil alles
unter diesem Dach alle Probleme
sagt,
die zu Abschnitt drei springen. Diese Notation
wäre also ziemlich verwirrend denn das ist hier
oben und es
läuft hier unten. Es mag in diesem
Fall wirklich einfach sein,
aber es könnte
Hunderte von Codezeilen geben diese beiden
Dinge sehr getrennt
machen, was keine bewährte Vorgehensweise ist. Aber du siehst
, was hier los ist. Und warum ich
dir zeigen wollte, ist im Grunde dieses Goto, was sinnvoller ist,
zu einem Lesezeichen zu springen. Aber auf 0 zu gehen bedeutet
im Grunde nur, dein normales Ding
wieder aufgenommen zu haben. Es sagt nicht, dass etwas wie Abschnitt oder Lesezeichen
0 nicht existiert. Dies bedeutet im Wesentlichen, dass Reset 0 ist. Und jetzt fangen wir
diesen Fehler wie gewohnt hier auf, obwohl wir hier oben keinen
Fehlerhandler haben. So können Sie
Ihren Fehlerhandler zurücksetzen und abschneiden. Okay, und ich schalte den Rekorder zum dritten Mal
ein, nur
um das zu verfolgen, als ich das Video bearbeitet habe.
Ich habe festgestellt, dass ich denke,
der Grund für diesen Absturz
in der Mitte ist, dass ich im Lauf war
-Modus. Und Sie können sehen, ob Sie wieder zu dem Abschnitt
waren
, in dem Excel
hier oben abgestürzt ist. Es ist in unserer Kopfzeile hier. Es heißt „Einbruch in Klammern“. Das liegt daran, dass wir uns im
Laufmodus befinden und ich Code
überall
ausgeschnitten , eingefügt und verschoben habe,
während
wir uns im Laufmodus befanden während gerade dachte, dass es
Code ausführen würde. Ich glaube, das hat den Absturz
verursacht. Das wird nicht immer passieren, aber ich glaube, das ist der Grund
, warum es gerade mitten
im Tippen kaputt gegangen ist. Sie müssen also vorsichtig sein,
wenn Sie sich im Laufmodus befinden und den Laufmodus bemerken, wenn
Sie hier oben sind.
Ich denke, mein Mauszeiger verschwindet
manchmal, aber hier oben gibt es
eine Pause in Klammern. Und so kann das Ändern des
Codes im Ausführungsmodus das
System etwas zerbrechlich machen. Das war's. möchte sicherstellen
, dass ich das am Ende hier markiere.
40. 1.C.1 Automatisieren Sie Txt-Dateien: Okay. Ich wollte sagen, ich wollte
eine grundlegende Reihe von
Lektionen zusammenstellen , die
Ihnen eine gewisse Automatisierung unseres
Windows-Dateisystems zeigen , die wir bereits einige grundlegende Demos zum Erstellen
von Ordnern
gemacht haben zum Erstellen
von Ordnern etwas, das ich bereits getan habe, aber ich gehe hier zurück, mit dem ich dich
verfolgen lasse, ist,
dass ich zu
Google gehe und VBA Textdateien
erstellen eingegeben habe. Und dann haben wir diesen Link zu einer offiziellen
Microsoft-Website. Eigentlich haben wir diesen Code , den wir hier
verwenden können, um eine Datei zu erstellen. Also komme ich hierher, kopiere diesen Code und
füge ihn hier ein. Und wenn ich das ausführe
und
F8 drücke , habe ich einen Kompilierfehler getroffen. Es heißt, dass Variable nicht definiert ist. Das liegt daran, dass wir
diese FS und ein hier
sofort
als Objektvariablen verwenden . Wir wissen, dass es
Objektvariablen gibt , weil wir
das hier gesetzte Wort verwenden. Und natürlich
haben wir create object. Wir haben uns gerade
von dieser Website verkauft. Wir sehen also, dass sie
ein paar Sachen aufgestellt haben , die für uns nicht
funktionieren. Der Grund dafür
ist, dass ich Option Explicit
hier oben als meine Standardeinstellung habe. Wenn ich Option Explicit entferne, kannst
du sehen, dass es uns gut geht. Ich gehe tatsächlich zur Verstärkung. Anstatt dies auszuführen,
was funktioniert hätte, füge
ich
Option Explizite Plakette in der ich eine frühere
Lektion habe, warum behalte ich das? Und wir werden nur
erklären, dass diese Objekte so dimensioniert FS
als Objekt in einem Objekt
sind als Objekt in einem Objekt ,
damit sie deklariert werden
und wir sie dann verwenden können. Und du siehst, dass wir hier
durchlaufen. Jetzt. Ich sehe, dass wir hier
ein Dateisystemobjekt erstellen. Und dann setzen wir dies eine Variable ein, die nicht
sehr das Skript ist. Aber vielleicht nenne ich das
als TXT-Datei, um beschreibender zu sein
. Legen Sie eine als Änderung fest, dass
es sich um eine Textdatei handelt. Und dann sagen wir, dass wir
eine Textdatei erstellen, die es
gewohnt war , einen Notizblock zu öffnen mit
dem Sie wahrscheinlich
vertraut sind. Es wird das einfach in C-Laufwerk stecken
. Und ich will das nicht wirklich machen und mein
C-Laufwerk hier oben haben. Stattdessen habe ich diesen
Unterordner für alle meine Lektionen , in dem ich einen
Ordner namens Demodateien erstellt habe. Also hier ist mein Ordner hier drüben
, den ich auf der linken Seite habe. Und wir haben den vollen
Weg hier drüben. Sieht aus, als hätte ich
etwas falsch geschrieben. Also werde ich einfach meinen Pfad hier reparieren
und
ich lasse mein C durch
meinen Ordnertunnel für
Skillshare-Demos und
dann unsere Testdatei hier fahren meinen Ordnertunnel für . Sie sehen also, dass wir diesen Befehl
create text file haben
, der dann einen Pfad annimmt, der unseren Notepad-Pfad
enthält, test file.txt ist gleich true. Und wenn wir diese
Codezeile hier ausführen, können
Sie sehen, dass wir
unsere Textdatei haben. Wir werden die richtige Zeile sagen, dies ist ein Test mit
unserer Textdatei. Und wir werden nah dran sein. Also wenn wir jetzt wieder
hierher kommen und sehen, wie etwas auftaucht, was ich erwarte. Also lass mich hierher kommen und
eine Aktualisierung machen und nichts
ist noch da. Also muss ich einen Fehler
gemacht haben. Ich komme zurück und
überprüfe meinen Weg. Wir sind in Skillshare-Demos. Und was ich
vorher lösche , war nur, dass ich mein Muster
vermasselt habe. Ich muss uns geschleppt haben. Wenn du es
zurückspulst und du wirst wahrscheinlich sehen,
was ich falsch gemacht habe, aber ich habe etwas getan und meinen Weg hier
durcheinander gebracht. Also habe ich meinen
Unterordner mit Demodateien nicht. Wenn ich jetzt F8 treffe,
rechte Linie, nah, und hier sind wir, haben
wir unseren Test file.txt von unserem
vollständigen Pfad hier drüben. Und wenn wir darauf doppelklicken, sehen
wir, dass
dies ein Test ist. Und das liegt daran, dass wir
diese Zeile in die
Textdatei geschrieben haben . Das ist ein Test. Jetzt ist das ein bisschen lang
und schwer zu lesen, also werde ich es nur ein
bisschen effizienter machen. Also werde ich
Grenzpfad als String sagen. Und wir werden sagen, dass der Ordnerpfad gleich dort entkommen ist, nur um das für eine Sekunde zu
beenden. Und ich gebe hier meinen
vollständigen Ordnerpfad an. Ich schneide das eigentlich ab. Wir werden diese Dinge einfach
aufteilen. Es gibt also meinen Ordnerpfad. Lassen Sie uns den Dateinamen als String machen. Wir machen es mit Dateiname
gleich Testdatei, die TXT ist. Und dann sagen wir, eigentlich
sollte ich das nicht
hier haben und dort einen Tippfehler machen. Es wird Dimension senden, vollständigen Pfad als String, und wir sagen, dass der vollständige Pfad unserem Grenzpfad
entspricht. Und
wenn Sie das hier mit
unserem Dateinamen kombinieren ,
machen wir hier einen Debug-Print. Wir werden den vollständigen Weg sagen,
nur damit wir ihn sehen können. Und dann können wir in diesem riesigen Textblock
, den wir oben haben, unsere Umfrage eingeben. Auf diese Weise. Wir
teilen einfach die Dinge auf. Es wird einfacher zu handhaben,
wenn wir das durchmachen. Probieren wir das mal aus. Ich drücke den
F8-Ordnerpfad, den Dateinamen und dann
kombiniert unser vollständiger Pfad ihn beide zusammen. Wir haben unseren vollständigen Weg hier
drüben, TXT-Datei. Wir könnten hier tatsächlich ein Problem
haben , weil wir bereits
eine Datei namens so haben. Und es schien sich nicht darum zu kümmern. Das ist also interessant. Aber wenn wir das löschen,
wird es erneut ausgeführt. Und hier sehen wir, wie unsere
Testdatei auftaucht. Und nur um
Ihnen zu zeigen, wenn ich hier zwei
in unseren Dateinamen eintippe ,
wenn wir dies
erneut ausführen , hier ist unsere
zweite Testdatei. Hier in diesem ersten Video haben
wir gerade den Code
aus unserer grundlegenden
Google-Suche aus
den offiziellen
Microsoft-Dokumenten genommen aus unserer grundlegenden
Google-Suche aus und ihn ein
wenig angepasst , damit wir
eine Textdatei mit etwas Code erstellen. Nun, ähnlich wie ich
dir zuvor gezeigt habe ,
können wir mit Ordnern anfangen. Lass uns hier etwas
ganz Einfaches machen. Nehmen wir unseren Dateinamen. Ich schneide das ab und verschiebe unsere
Dateinamendeklaration hierher. Und der Grund, warum ich das mache, und ich werde das einfach
auskommentieren. Der Grund, warum ich
das hierher verschoben habe, ist , dass es getrennt ist. Und ich kann das in eine Schleife wickeln. Und ich kann sagen, dass ich eins bis zehn
gleich bin, nächsten Pi
einrücken. Und da wir ich hier benutzen, muss
ich es
erklären, werde hoch erklären. Und dann nehme ich diese Nummer. Und in unserem Dateinamen verwende
ich unsere Variable I hier, da sie von eins bis zehn
geht. Und wenn ich das jetzt ausspiele, werde ich das zuerst klären. Wir werden spielen. Wir haben Pfad nicht gefunden. liegt daran, dass ich
diesen Dateinamen
hierher verschiebe und nicht gelesen habe,
erkläre unseren vollständigen Pfad. Ich werde hier
unseren vollen Weg abschneiden. Jedes Mal, wenn wir den Dateinamen
ändern, müssen
wir unseren vollständigen Pfad ändern auch weil er unseren Dateinamen
verwendet. Also höre ich auf. Wir werden wieder spielen. Und hier sehen wir, dass eins bis
zehn automatisch erstellt werden, wenn wir diese Schleife
durchlaufen,
eins bis zehn. Das war's also für diesen. Wir bauen weiter
darauf auf, auf dem nächsten.
41. 1.C.2 Umbenennen von Dateien reparieren: In dieser nächsten Lektion, da wir hier
einige Dateien erstellt haben, einige grundlegende Textdateien, zeige
ich Ihnen,
wie VBA
eine Datei umbenennen und das
Umbenennen einer Reihe von Dateien automatisieren kann . Was ich hier
bereits vorbereitet habe, ist die Notation zum Umbenennen einer Datei
das Schreiben des Wortnamens, dann den alten Dateipfad, das Wort As und dann
den neuen Dateipfad. Und genau wie hier unten ist
unser Dateiname ganz rechts und ein vollständiger Pfad ist unser Dateiname
plus unser Ordnerpfad hier drüben. Ich habe das bereits
vorgeschrieben, um diese Videos
etwas schneller zu halten. Aber natürlich
könnten Sie diesen ganzen Code zeilenweise anhalten und anzeigen wenn Sie ihn
tatsächlich mit
unserer Codezeile verwenden möchten , die einen Namen
ändert. Du siehst, ich habe
unsere Variablen bereits mit
diesem Inhalt hier vorbereitet . Und dann ist der eigentliche
Befehl,
der den Dateinamen ändert , der
Name unserer Variablen, die unser vollständiger Pfad aktuell ist,
da dieser vollständige Pfad neu ist. Hier konstruiere ich
es und wir treffen F8. Also gehen wir diesen Code durch. Wir haben unseren Hauptordnerpfad
, den ich in unserem letzten Video
hatte , das diese von uns erstellten
Textdateien enthält. Ich nehme unseren Dateinamen aktuell
, der Testdatei eins ist, das ist diese Datei hier, Dateiname new,
worin ich unseren Dateinamen ändern
möchte . Ich habe diese
Variablen aus Gründen der Übersichtlichkeit deklariert, wobei einer der vollständige
Pfad der aktuellen Datei ist, die existiert. Und was ich dann möchte, dass
es sich auch ändert, weil ich
diese Variablen in
unserem einzeiligen Befehl verwenden möchte diese Variablen in , den wir hier haben. Jetzt, da wir unseren Dateinamen
aktuell und unseren Dateinamen neu haben , können
wir unsere
beiden Variablen für
den vollständigen Pfad aktuell
und den vollständigen Pfad neu erstellen . Und dann führe hier unsere eine
Codezeile aus. Das ist eigentlich das, was die Funktion
erzeugt. Die Realität ist, wenn
Sie dies nachschlagen, können
Sie die
gesamte Pfadzeichenfolge hier schreiben
und dann den gesamten neuen
Namen, den Sie hier haben möchten. Und mach alles, was ich hier gemacht habe,
in einer einzigen Codezeile. Aber das ist klarer
und es wird
uns auf unseren nächsten Schritt vorbereiten, den
ich Ihnen in einer Minute zeigen werde. Ich treffe F, um das auszuführen. Ich denke, es dauert eine Sekunde
, um sich zu aktualisieren, und Sie werden sehen, dass sich unser Dateiname
hier gerade geändert hat. Jetzt habe ich Ihnen
neben dem Erstellen von Ordnern
das letzte Video
gezeigt, wie Sie Textdateien erstellen
können. Und jetzt kannst du sehen, wie
wir Dateinamen ändern. Und in diesem Beispiel funktioniert
diese Codezeile für jeden Dateityp. Es muss nicht nur für Textdateien sein. In unserer letzten Lektion, in der wir diese Textdateien
erstellen. Dies funktioniert nicht unbedingt
für kompliziertere Dateien, z. B. wenn Sie andere
Excel-Dateien oder Word-Dokumente haben. Aber nur um Ihnen zu zeigen, dass ich nur
ein neues Word-Dokument erstellen werde,
wenn
ich hierher komme. Tatsächlich nehme
ich einfach den ganzen Dateinamen hier, einschließlich des DOC Ex. Denken Sie daran, dass der Dateipfad unsere
Erweiterungsnamen hier
enthält. Diese Erweiterungsnamen haben Sie hier möglicherweise nicht auf Ihrem Computer. Die Art und Weise, wie Ihr Windows standardmäßig eingerichtet
ist. Ich zeig es ihnen immer. Und wenn Sie
in Ihren Ordneroptionen hierher kommen, sage
ich nur, dass Sie
dieses Häkchen auswählen , in dem Sie die
Dateinamenerweiterungen
anzeigen. Ihre Dateipfade müssen jedoch
tatsächlich
Ihren vollständigen Namen und die Art und Weise enthalten , wie Windows Dateien
verarbeitet und sie
normalerweise vor Ihnen versteckt. also wieder hierher kommen,
können Sie unsere aktuelle Datei sehen. Machen wir es zu diesem Word-Dokument , das wir gerade erstellt haben, und wir werden hier einen neuen Namen dot doc x
machen. Jetzt, wenn wir wieder durchgehen, machen
wir das Gleiche. aktuelle Pfad sollte der vollständige Pfad für unser soeben erstelltes
Word-Dokument sein. Und wir werden den Namen dort ändern. Es dauert eine Sekunde, um sich zu aktualisieren. Und Sie sehen jetzt, dass wir unseren neuen Dateinamen hier automatisch für unser Word-Dokument
geändert haben. Etwas anderes zu beachten ist
, dass Ihre Erweiterung
ein wichtiger Teil der Datei ist und Ihre Erweiterung in Windows Ihnen
Ihren Dateinamentyp mitteilt. Wenn ich so
etwas gemacht habe,
sag, du nennst einen und ich
sage diesem sag, du nennst einen und ich
sage Text hier drüben einen neuen Namen. Also nehmen wir
dieses Word-Dokument und wir werden seinen Namen
ändern. Ich trete
hier auf Play und führe
es einfach durch. Wir haben den
Namen dieser Datei in einen neuen Namen geändert. Und so haben wir hier tatsächlich
den Dateityp geändert, was wir eigentlich nicht tun möchten, da Sie
dadurch möglicherweise Daten verlieren können. In dieser
Textdatei heißt es zum Beispiel, dass dies ein Test ist. Wenn ich hierher gekommen bin und unseren Dateinamen
geändert habe, ändern
wir ihn zurück in einen
Word-Dokumentpunkt x Hit F5. Also
behalten wir tatsächlich den gleichen Namen, aber ich habe
es jetzt wieder in
einen Doc X geändert , der hier durcheinander liegt. Aber wenn ich darauf doppelklicke, sehen
Sie, dass unser Text
verschwunden ist , denn wenn Sie die Dateitypen
ändern, können
Sie
die Dinge wirklich ein wenig durcheinander bringen. Also nehmen wir unser
Dokument x, wenn wir
es in eine Excel-Datei ändern ,
zum Beispiel abspielen. Durch Ändern der Erweiterung
zusammen mit dem Dateinamen. Wir ändern den
Dateityp von Natur aus gleichzeitig. Und Sie sehen jetzt, dass wir sogar einen Fehler
bekommen, weil es merkt, dass etwas
furchtbar schief gelaufen ist. Diese Datei sollte keine
Excel-Datei sein , die
nicht einmal geöffnet wurde. Diese Datei, die gerade
aufgetaucht ist, war eigentlich eine andere Datei, die ich
hier habe , in der ich meinen Code
schreibe. Aber es ist nicht mehr bereit, diese Datei
zu öffnen, weil sie
im Hintergrund
weiß, dass dieses Ding keine Excel-Datei sein soll. Wir haben es gerade gezwungen, indem die Erweiterung der Datei geändert haben, wenn wir
mit dem Dateinamen herumspielen. Das ist also
eine Art Tangente hier,
aber nur etwas, dessen
man sich bewusst sein muss. Das nächste, was ich dir
hier zeigen
wollte , ist, dass wir
etwas Automatisierung machen werden. Lassen Sie uns alle diese Dateien
aus unserer vorherigen Lektion löschen. Wir haben diese
Subroutine, die wir verwenden, um all diese Dateien mit
einer Schleife zu erstellen, eins bis zehn. Das ist sogar das
Ding ein bisschen aufzupeppen. Wir machen es 20,
also füllt es den Bildschirm und sieht hier schick aus, wurden Makros deaktiviert? Lassen Sie mich also versuchen, diese Datei
hier sehr schnell
wieder
zu öffnen ,
da ich
hier oben auf Inhalt aktivieren klicken musste , damit ich unsere Makros ausführen und zu unserem
Ordner
zurückkehren kann , in dem wir
arbeiten . Wir sind Modul eins. Also hier hatten wir unsere Subroutine
aus der letzten Lektion, in wir all diese Textdateien erstellen und unsere Schleife auf 20 geändert haben. Und sofort
Hier sind 20 Textdateien , die automatisch erstellt wurden. Jetzt haben wir unsere Subroutine
zum Umbenennen von Dateien. Wir gehen gerade rüber, machen wir
dasselbe, was wir am Ende
des letzten Videos gemacht haben, wo wir unsere
Dateinamendeklaration abschneiden werden. Und wir werden sie
hierher bringen. Dann verwenden wir diese Dateinamen
, um unseren vollständigen Pfad zu erstellen. Und das ist in einer Schleife vergraben
, in der wir Dimension I gehen, da ich
lang gleich
eins bis 20 ist, einrücken. Als nächstes beenden wir
also unsere
Loop-Notation hier. Und statt dieser Namen können
wir hier eine Testdatei erstellen, die TXT
einem neuen Namen entspricht,
einem, dem Px Py. Und ich wollte wirklich
hierher zurückkommen und
eins durch i Variable ersetzen . Ich werde das hier kopieren und einfügen
, damit wir bei jeder Iteration der Schleife unseren Dateinamen ändern werden. Also TextFile eins. Und dann der nächste Loop-Test
um 2345 bis 20. Und wir haben auch unseren neuen
Namen für sie. Und wir führen diesen Code
immer und immer wieder aus. Wo siehst du, wenn ich F8 treffe, wir haben hier unsere alten und
neuen Dateipfade. Wir führen diese Zeile aus,
Datei wurde nicht gefunden. Also lasst uns wieder hierher gehen. Mal sehen, wie unser
derzeitiger Weg ist. Wenn ich hierher komme, um
diese Variable zu nehmen und zu debuggen, drucke unseren Dateipfad aktuell aus. Es heißt, wir haben diese Datei nicht, testen Sie Datei einen Punkt TXT. liegt daran, dass ich eine Textdatei geschrieben habe wenn es wirklich eine
Testdatei ist. Ziehen wir das also wieder nach oben. In der Tat höre ich auf und
fange wieder an zu rennen. Jetzt, als ich diese Zeile getroffen habe, haben wir einfach unsere
Testdatei in einen neuen Namen geändert. Wir machen uns auf neuen Wegen
deklarieren, was wirklich das
einzige, was sich ändert,
ist, dass man zu einer Zwei wird. Und es gibt einen neuen Namen zwei
für die zweite Datei. Und ich treffe einfach F5 und führe das den ganzen Weg
durch eins bis 20 durch. Seit seinem 20. Stolz. Nimm dir eine Sekunde, bis es läuft. Und da ist es. Es hat alle unsere Dateien,
alle 20 Dateien, mit einem
Klick auf eine Schaltfläche umbenannt . So können Sie eine Datei
umbenennen und ein Anwendungsfall, den Sie
tatsächlich haben könnten, ist zum Beispiel, dass Sie einen riesigen
Ordner voller Dateien haben, sagen
wir, unsere aktuelle
Datei heißt NewName, was ist was sie
gerade sind. Und dann könnte zum Beispiel mein neuer Dateiname
etwas wie Dateiname aktuell sein . Und ich werde einfach
meine Initialen hier eingeben , Dash. Jetzt verwende ich eigentlich nur dieselbe Variable ist
mein aktueller Dateiname, und mein neuer Dateiname verwendet den aktuellen Dateinamen
plus etwas anderes. So können Sie
den aktuellen Dateinamen manipulieren , um Ihren neuen zu
erstellen. Wenn ich jetzt F5 drücke
und das abfahre, sieht
es so aus, als
hätte ich nur einen Tippfehler hier drüben. Ich habe F5 gedrückt und führe jetzt die Zelle aus. Und jetzt habe ich
S T an den Anfang all
dieser Dateien angehängt . In einigen Situationen müssen
Sie möglicherweise ein Update für
viele verschiedene Dateien vornehmen. Und du hast gesehen, dass das für
20
sehr schnell lief und das würde funktionieren, wenn du Tausende von Dateien hier
hast. Du kannst damit umgehen. Sie
können das alles mit einem Code
machen, der eigentlich
kein sehr kompliziertes oder langes Haar ist. Und dann führe das alles
mit einem Klick auf eine Schaltfläche aus.
42. Bewegliche Daten – Erstelle Form: Da wir ein Tutorial zum Verschieben von Daten machen werden, möchte
ich einen einfachen Anwendungsfall für
eine Vorlage aus einem Grund erstellen , dass wir Daten verschieben müssen. Also, was ich hier erstellen werde, ist ein Kaufformular. Also werde ich nur etwas für den Anfang entwerfen und dann werden wir anfangen, es im Laufe dieses Projekts weiterzuentwickeln. Also zuerst werde ich hier ein sehr grundlegendes Formular erstellen. Wird Artikel, Menge und Preis für jetzt erstellen, bis wir an mehr Dinge denken, um es hinzuzufügen. Wir werden ihm hier das Aussehen eines Formulars geben. Ich drücke Control C, um Steuerung V zu kopieren, um einzufügen. Wenn ich die Steuerungstaste halte, können
Sie mehrere Zellen gleichzeitig auswählen. Überall, wo Sie klicken. Und dann werde ich hier eine Grenze schaffen. Lassen Sie uns nun eine kleine Datentabelle für diese Daten erstellen, um zu gehen. Und ich verwende gerne die Standardformatierung aus Excel, nur um dies ein wenig besser aussehen zu lassen, aber ich muss mich nicht zu sehr darum kümmern, hier eine Auswahl zu treffen. Und so haben wir jetzt ein einfaches Benutzerformular. Fangen wir an, es auszufüllen. Sagen wir mal, wir haben hier einen Bleistift. Wir werden zehn Stücke von ihnen bestellen. Und für einen Preis von $1. Wir werden das hier in ein Dollarzeichen verwandeln. Und so haben wir hier jetzt nur den Rahmen für die Vorlage. Wir fangen damit an. Das erste, was ich tun wollte, ist, Ihnen nur die Grundlagen der Aufzeichnung eines Makros zu zeigen, das wir in unserer letzten Lektion übergegangen sind. Aber wir können diese Entwickler-Tab verwenden. Gehen Sie zu Makro aufzeichnen, klicken
Sie hier auf Makro aufzeichnen. Wir werden es einfach als Standardname belassen. Und jetzt nehmen wir alles auf, was wir tun, auf dem Bildschirm auf. Also werde ich in die Elementzelle klicken, Steuerelement C
tun, Steuerelement V einfügen und ich werde dies für jedes dieser Felder tun. Und wir haben Daten aus unserem Formular in unsere Tabelle verschoben, werden dies nicht einmal die Einkaufstabelle nennen. Wenn wir nun die Aufnahme beenden, haben
wir einen Koordinatenhintergrund auf Makroebene. Um das Makro anzuzeigen, das wir gerade aufgezeichnet haben. Wir können auf diese Visual Basic-Schaltfläche klicken. Und Modul 1 ist das Standardmodul, das für die Aufnahme erstellt wurde. Und dann hier ist Makro eins. Ich zeige Ihnen nur einen anderen Weg, um dies zu erreichen, ist, dass Sie auf diese Makroschaltflächen klicken können, die Ihnen alle Makros zeigt, die in der Excel Anwendung sind, die gerade geöffnet ist. Sie können das Makro ausführen oder auf Bearbeiten klicken. Und wenn Sie auf Bearbeiten klicken, gelangen Sie zum Code hier. Werfen wir einen Blick auf dieses Makro, das wir erstellt haben. Lassen Sie uns versuchen, es zu laufen. Und so werde ich nur diese Bildschirme aufteilen, damit wir sie ein wenig besser sehen können. Ich werde diese Daten hier löschen. Ohne auf den Quellcode zu schauen. Wir können zu Makros gehen und wir haben Makro eins und lassen Sie uns auf Ausführen klicken. Und Sie können sehen, alle Daten aus dem Formular ging in unsere Tabelle hier drüben. Also lasst uns das klären. Jetzt, da wir unseren Code hier hochgezogen haben, können
Sie F8 drücken, um jede Codezeile einzeln durchzugehen. Und wenn ich hervorgehoben bin, befindet sich
mein Cursor in diesem Makro. Ich traf F8, und dann kann ich durch jede Zeile gehen und wir können sehen, was hier vor sich geht. Wir werden Bereich A5 wählen. Das ist also die Adresse der Zelle, eine Fünf hier drüben. Wir werden es kopieren. Wir werden I3 hier drüben auswählen. Und dann fügen wir es ein. Und dann wird es das immer und immer wieder für jedes der drei Felder tun. Und dann können Sie es sogar aufgezeichnet sehen, wenn ich hier den Header der Tabelle Kauftabelle
eingegeben habe . Und so eine Sache ist, dass wir einfach durch dieses Tutorial gehen. Ich werde das etwas bequemer machen, um es auszuprobieren. Ich füge hier einen Button zu unserem Formular hinzu. Nun eigentlich gebe ich das Makro hier zu, also werde ich es dem Makro zuweisen eins für jetzt
muss das später ändern, wenn wir die Namen unserer Makros ändern, werden
wir es Makro eins zuweisen. Und wir werden diese Einreichung nennen. Und jetzt, wenn ich die Daten lösche und auf Senden klicke, können
Sie unsere Makroläufe sehen.
43. Bewegliche Daten – Namen der Ranglisten: Ich habe in einer früheren Lektion erwähnt, dass ich beim Erstellen von Makros keine Zelladressen verwenden möchte . Und damit meine ich, wie dieses Makro, als wir es aufgezeichnet haben, Zelladressen wie eine Fünf und C5 hier
verwendet und sie in i3 und J3 eingefügt hat. Und der Grund, warum ich das nicht mag, ist aus vielen verschiedenen Gründen. Aber das offensichtlichste ist, wenn ich etwas mache, wie diese Tabelle irgendwo anders
ausschneide und einfüge oder neu positioniere. Und dann führe ich dieses Makro erneut aus. Sie können sehen, dass es immer noch
diese absoluten Zellenadressen verwendet und nichts mehr funktioniert oder zumindest nicht richtig funktioniert. Wir müssen in dieses Makro gehen und wir aktualisieren die Zelladressen erneut. Und das Problem ist, dann könnten wir einfach den Tisch
wieder verschieben und wir entwickeln diese Werkzeuge ständig weiter, während wir gehen. Und so erfordert dies ständige Wartung und Updates. Also, was wir hier tun werden, ist, dass wir
das ein bisschen aufräumen und dann das ändern. Wir verwenden also nicht die Zellenadressen und
geben stattdessen Namen für den Bereich, der sich mit diesen Zellen bewegen wird. Und das wird mehr Sinn machen, wenn wir dieses Beispiel durchlaufen. Also eine Sache, die ich jetzt tun werde, ist, einfach
diesen Teil zu entfernen , wo wir den Tabellennamen erstellen, weil wir versehentlich aufzeichnen, dass wir nicht wirklich wollten. Und so bleiben wir noch bei diesem Konzept für den Moment. Wir werden dieses Konzept einfach weiter ausbauen und es
ändern, um weiter fortgeschritten zu werden, während wir gehen. Also haben wir Zelle A5 hier, und ich möchte wegen des Problems, das wir erwähnt haben, keine Fünf verwenden. Stattdessen werde ich dieser Zelle einen Namen geben und Sie werden sich daran erinnern, wenn Sie unsere früheren Lektionen hier beobachten, ich werde diese Zelle nennen, eigentlich werde ich es Formular nennen. Und dann Quantität. Ich werde nur die gleiche Idee behalten. Und ich kann es einfach in dieses Adressfeld oben links eingeben. Und eigentlich möchte ich, dass diese Menge und Formpreis gebildet werden. Und Sie können bestätigen, dass dies korrekt funktioniert ist, wenn Sie über diese Felder klicken, können
Sie sehen, dass der Name der Zelle nicht A5, C5 mehr sagt. Es gibt dem Namen den Bereich. Und ich kann dies noch weiter bestätigen, indem ich zum Formeln Name-Manager gehe, und Sie werden die Namen sehen, die ich für jedes dieser Felder erstellt habe. Und so kann ich einfach zeigen, dass dies jetzt für unser Formular
funktioniert, obwohl wir den Tisch noch nicht gehandhabt haben. Also, wenn ich etwas wie Ausschneiden und Einfügen getan habe, ist diese nach unten zu bewegen. Ich kopiere einfach diese Formate, um das zu beheben. Dann sagt dieses ursprüngliche Makro A5. Eigentlich will ich nicht mehr, dass das A5 sagt. Ich möchte, dass das Formular sagt. Bleistift. Wieder, C5 hier ist jetzt ausländische Menge 8, die unser Preis war, wird Preis gebildet. Und so lassen Sie uns das laufen. Wir haben hier einen Fehler wahrscheinlich, weil ich irgendwo einen Tippfehler gemacht habe. Bereichsform, Bleistift auswählen. Und das nennt man Forumpunkt. Wenn Sie beobachten und folgen, haben
Sie vielleicht bemerkt, dass, als ich dies tippte, und wir werden das ausführen. Und Sie sehen, dass es in der Lage war,
unsere Quelldaten hier in unserer Form zu finden , obwohl wir sie verschoben hatten. Und Sie können sehen, dass wir es wieder dorthin bringen können, wo es hier oben war. Es ist eigentlich eine Reihe höher. Und wir können das wieder ausführen. Und das Makro beschränkte Quelldaten, weil wir ihm einen Namen gegeben haben und dieser Name bewegt sich mit unserem Ausschneiden und Einfügen. Es wird sich auch bewegen, wenn wir etwas tun, wie eine Zeile einfügen, Sie können die Formate hier duplizieren sehen. Ich kopiere und füge diese generischen Zellen ein, um es zu beheben. Und ich kopiere und füge leere Zellen hier drüben ein, um diese zu löschen und auf „Senden“ zu drücken. Und Sie können sehen, dass es wieder funktioniert. Eine andere kleine Sache, die Sie vielleicht als
Nebennotiz bemerken , ist, dass das Format der Quellzellen, da wir ein Steuerelement C verwenden, kopieren und einfügen, wenn wir das Makro aufzeichnen, die Formatierung überträgt, die die Grenzen der Zellen auch. Und so lassen Sie uns das auch für den Tisch tun. Also hören wir auf, unsere Daten hier oben in unsere ursprüngliche Aufnahme einzufügen. Das wird etwas heikler. Die offensichtlichere Sache, die wir hier tun könnten, ist, einfach jede dieser Zielzellen in der Tabelle zu
benennen. Aber das wird dazu führen, dass wir viele Namen haben. Stellen Sie sich also vor, dies war eine 20-Spalten-Tabelle, oder die Zeilen werden weiter unten gehen, wenn wir Daten sammeln. Du willst all diesen Dingern keine Namen geben. Also werde ich hier etwas anderes machen. Stattdessen werde ich das obere linke Feld auswählen. Normalerweise wähle ich die erste Spalte und nimm dann die Kopfzeile davon als oben links, was ich den Ankerpunkt nenne. Und ich werde ihm stattdessen einen Namen geben. Also werde ich diesen Tisch Einkäufe nennen. Und jetzt wird diese Zelle hier Tischkäufe genannt und das ist ein Anker. Und ich kann diese anderen Zellen basierend auf diesem Anker referenzieren,
solange sich diese Tabelle immer mit dieser Ankerzelle bewegt. Ich zeige dir, was ich meine. Hier, wo unser Artikel in Zelle I3 geht. In diesem Fall wollten wir wirklich bewegen, dass dieser Teil des Tisches und der Tisch hier unten ist. Jetzt haben wir einen Namen für unsere Ankerkäufe für Ankerzellentabellen erstellt. Anstelle von I3, wo die Informationen enden, als wir unser Makro aufgezeichnet haben, werden
wir unsere Ankerzelle wählen, die Tischkäufe sind. Und dann werden wir diese Offset-Funktion verwenden, die wir auch in unseren früheren Tutorials behandelt haben, wo ich Ihnen die Zeile und Spalte sagen kann, die ich durch die Zelle versetzt werden möchte. Also, wenn ich sage, sind real offset ist eins, das bedeutet, es ist diese Zelle und dann eine Zelle nach unten, und dann unsere Spalte Offset, wenn es eine wäre, wäre es eine Zelle auf der rechten Seite. Aber stattdessen werden wir direkt darunter gehen, da wir an dem
Artikel arbeiten und unser Offset hier ausgewählt ist. Unser Offset ist also unsere Ankerzelle eine Zeile nach unten und schreibe 0 Spalten. Und wir werden das auswählen. Und genau wie unsere Aufnahme, werden wir dies vorerst verlassen, wo wir einfügen oder Gegenstand. Und dann für die Menge, unsere Auswahl anstelle von J3 wird dies ersetzen. Und Sie können wahrscheinlich sehen, wohin wir damit hingehen. Unsere Spalte wird nur über eins nach rechts sein. Also füge da eins hinzu. Und dann k3, die hier oben ist. Wir wollen das in diese Zelle bringen. Und wieder, wir werden den Anker benutzen. Also gehen wir einfach zu den rechten zwei Spalten und eine Reihe runter. Jetzt haben wir die Auswahl von i1. Das ist gerade, als wir die Tabellenüberschrift erstellt haben. Und so brauchen wir das nicht mehr. Wir werden das hier nur löschen. Und wenn wir das richtig gemacht haben, sollten wir die Werte aus jeder dieser drei Zellen nehmen und sie
dann in jede dieser Zellen basierend auf dem Anker der Tabelle einfügen. Also lasst uns das laufen. Und so siehst du, dass das funktioniert hat. Versuchen wir es noch einmal. Also werde ich ausschneiden und einfügen und verschieben diese Tabelle noch weiter unten hier unten,
Sie können sehen, unsere Ankerzelle bewegt sich damit, Tischkäufe. Und so kann ich das jetzt nochmals klären und es noch einmal versuchen. Und unsere Daten bewegen sich weiterhin mit unseren benannten Bereichen. Und dann werde ich das einfach klären.
44. Bewegliche Daten – Vereinfache aufgezeichneter Code: Jetzt, da wir unser Tool aktualisiert haben, haben
wir Bereiche benannt und wir können unsere Daten
bewegen und fühlen sich sicher, dass die Logik immer noch funktionieren wird. Was ich tun möchte, ist einfach die grundlegende Funktionalität hier aufzuräumen. Wenn wir Makros aufzeichnen, ist
es etwas ineffizient, weil es jede Aktion aufgezeichnet hat, die wir tun. Aber da wir direkt mit dem Quellcode arbeiten, können
wir tatsächlich einige der
Schritte ausschneiden , die wir tun, wenn wir manuell mit Excel arbeiten. Und so zum Beispiel, wenn wir die Formularelement Zelle auswählen, die hier drüben ist und dann kopieren. Sie können sehen, dass wir es zuerst auswählen und dann
drücke ich Control C und mache die Kopie der Auswahl. Ich kann das tatsächlich ausschneiden und diese zu einem machen, in dem ich nicht in die Zelle klicken muss, da ich auf die Formularelementzelle verweisen kann.
Ich kann es einfach direkt in eine Zeile kopieren, ohne sie auszuwählen und dann zu sagen, ich möchte was auch immer kopieren Ich habe ausgewählt. Und damit wir die ausschneiden können. Und das Gleiche passiert für unser Ziel, wo wir diese Zelle auswählen werden, was diese Linie sagt. Und dann werden wir in unserem aktiven Blatt einfügen, was auch immer wir ausgewählt haben. Ich sollte tatsächlich hier reinkommen und einfach einfügen eingeben können. Ich bin mir nicht sicher, ob das Tempo tatsächlich gleich funktioniert. Also werde ich das nur kommentieren und überprüfen, ob dieses Update für dieses ein Elementfeld funktioniert. Lassen Sie uns das klären und dann drücken wir auf „Einreichen“. Und Sie können sehen, dass Tempo tatsächlich nicht ganz so gut funktioniert. Jetzt, da wir erkannt haben, dass ich vorerst einfach Undo drücken und dann das Einfügen hier
belassen, denn jetzt werden wir darauf zurückkommen. Ich möchte in diesen kleinen Tests, die ich im Tutorial mache, verlassen. So erhalten Sie hier den vollständigen Prozess zu sehen. Für das Exemplar. Wir sahen, dass diese Arbeit und es hatte nur ein Problem mit dem Einfügen. Also lassen Sie uns das noch einmal ausführen, nur um zu sehen, ob es dadurch behoben wurde. So sehen Sie diese Referenz, wo wir das Formular Element direkt beendete eine Kopie , die funktioniert, und wir schneiden einige der Ineffizienzen der Auswahl der Zelle zuerst. Also lasst uns das Gleiche hier machen. So bilden die Menge. Wir kommen hier rüber. Anstatt es auszuwählen, würde einfach Punktkopie sagen. Und dann können wir das hier für den Formularpreis löschen, wir können die Auswahl mit nur dem Bereich entfernen und kopieren. Wir lassen das hier drin. Ich bin mir nicht sicher, ob wir das jetzt brauchen, wir werden das testen. Aber das ist das Äquivalent von Escape, wenn Sie kopieren drücken. Du siehst also, wie wir hier die beweglichen gepunkteten Linien haben. Das trifft auf Escape. Das ist also, was hier automatisch aufgezeichnet wurde, wenn wir unser Makro aufzeichnen. Also lasst uns das mal ausprobieren. Jetzt sehen Sie, wir haben einen Fehler hier und es sagt, dass wir einen Fehler haben, wenn wir versuchen, Tempo. Ich weiß, der Grund dafür ist
, dass wir momentan nichts in unserer Kopie-Zwischenablage haben. Wenn Sie zurückgingen und schauten, wie wir
diese Codezeilen neu anordnen , als ich es effizienter machte, ist die Kopierzeile tatsächlich hier war. Dies ist, wo die alte Kopierzeile mit Auswahl war, diese Kopie. Und wir bewegen das, und du siehst, denn dieser hier, tut mir leid, das hat mir nicht gefallen. Dies ist hier keine gültige Codezeile da diese Zeile dem Schlagen von Escape entspricht. Das war ähnlich dem Klicken auf dieses Feld, indem Sie Control Copy drücken, Escape und dann versuchen, hier einzufügen, weil es mit dieser Codezeile entkommen war, dann gibt es nichts in der Zwischenablage. Und was ich wirklich tun muss, ist mal sehen, ob wir das überhaupt brauchen. Also lasst uns das mal ausprobieren. Wir können das Schritt für Schritt ausführen, damit wir sehen können, was hier vor sich geht. Sie sehen, wir kopieren oder einfügen Kopieren hier sehen wir die gepunktete Linie und wir treffen das aktive Blatt und wir einfügen. Wir werden das gleiche Problem hier treffen und du wirst sehen, was ich meine. Hier haben wir den Preis und die Zwischenablage. Und wenn wir diese Zeile ausführen, hebt
sie die Kopie aus der Zwischenablage auf. Und so werden wir auf einen Fehler direkt dort laufen, genau hier tatsächlich, wenn wir versuchen, einfügen. Und so gehen wir zurück. Sie können diesen Pfeil tatsächlich nach oben ziehen, um wieder dorthin zu gehen, wo wir vorher waren. Jetzt haben wir wieder Preis in der Zwischenablage. Und ich denke, wir können das wirklich entfernen, weil wir unsere Kopie von
Natur aus aufheben, wenn wir etwas anderes kopieren. Sie müssen also nicht das Äquivalent mit
Escape tun , um etwas aus Ihrer Zwischenablage zu nehmen. Wir können diese Schlange einfach komplett überspringen. Und dann arbeiten wir hier etwas. Was wir tatsächlich sehen, ist, weil wir nicht die Codezeile
haben, die unsere Zwischenablage aufhebt. Sie können sehen, dass dies immer noch aktiv ist, obwohl unsere Makros vollständig fertig sind. Also, wenn ich hier auf „Rückgängig“ klicke, werden wir das aufräumen. Wir werden das eigentlich nur bis zum Ende bewegen. Und jetzt werden wir diesen Schritt für Schritt ausführen, nur damit Sie tatsächlich
folgen können , da wir Code manuell bearbeiten. Anstatt nur die voraufgezeichneten Makros zu verwenden, können
Sie diesen benutzerdefinierten Code sehen, den wir erstellt haben, wie er Schritt für Schritt ausgeführt wird. Und so werde ich jetzt F8 treffen. Wir treten durch, wir kopieren Element, wir fügen es in unsere Zelle ein, und wir tun dasselbe für drei Felder. Und jetzt, wo wir fertig sind, drücken
wir „Escape“, um unsere Zwischenablage zu löschen.
45. Bewegliche Daten – Einfügen von Werte nur: Eine andere kleine Sache, die ich übergehen möchte, ist nur, weil wir eine Kopie und Einfügen hier verwenden. Du hast vorher gesehen, dass wir die Grenzen zu unseren Feldern hier bewegen. Und das ist uns nicht wirklich wichtig, weil es in diesem Format gut aussieht, aber es ist nicht immer etwas, was wir wollen. In der Tat werden Sie sehr oft nur die Werte
und nicht die gesamte Formatierung der Quellfelder wollen . Also, was wir tun wollen, ist das Äquivalent zu tun, nur die Werte einzufügen. Nur um Ihnen zu zeigen, was hier schief gehen könnte, werde
ich nur diese Zellen löschen, einschließlich der Formatierung und zeigen Ihnen, dass, wenn ich so etwas
getan habe , diese Zelle hervorgehoben wird. Wenn wir dieses Makro ausführen, wird die gesamte Formatierung der Zelle hierher verschoben weil es das Äquivalent zum Kopieren und Einfügen ist. Also werde ich das klären. Lasst uns die nochmal klären. Ich bringe das wieder in Weiß. Was ich jetzt tun will, ist im Grunde nur das Äquivalent einer Kopie zu machen. Und fügen Sie dann mit der rechten Maustaste und fügen Sie dann spezielle ein. Hier gibt es diese Abkürzungen. Wenn Sie spezielle bezahlen müssen, werden
Sie sehen, dass es tatsächlich ausgeschrieben und Werte einfügen. Wenn dies hervorgehoben wurde. Sie werden sehen, dass, wenn wir dies getan und ging, um spezielle und Werte einfügen, dass nur der Wert und nicht die Formatierung der Zelle bewegt sich über. Auf diese Weise können wir die Formatierung dieser Tabelle steuern ohne durch die Formatierung unserer Quelldaten überschrieben zu werden. Wie werden wir tun, dass diese Codezeilen
aktualisiert werden, um in das, was das Äquivalent eines Pays-Werts ist, anstatt nur eine typische Kopie und Einfügen. Ich habe diese Notation nicht wirklich auswendig gelernt. Wie in meinen früheren Tutorials möchte
ich das nicht einfach nachschlagen und einen Notizblock hier drüben haben und ihn eingeben. Stattdessen möchte ich Ihnen den Prozess zeigen, mit dem Sie Informationen finden
können, wenn Sie sie nicht kennen. Und ich zeige es nicht in diesen Tutorials. Was ich also tun werde, ist, hier zu Google zu gehen und ich werde VBA eingeben, nur spezielle Werte
einfügen. Und wenn ich hier rüber gehe, können
Sie Notation und diese Websites finden, ich bin nur schnell auf unsere Antwort. Sie können sehen, dass Sie einen Bereich nehmen können und dann heißt es Einfügen Special und dann Werte einfügen. Und das scheint eine Eigenschaft eines Bereichs zu sein. Also lasst uns diesen Code ausprobieren. Das ist unser Sortiment hier drüben. Wir haben einen Offset für diesen Bereich, aber dies wird immer noch als Bereich betrachtet. Also werden wir diese Auswahl entfernen und tun Sie eine Paste Specials. Wir haben hier einen zusätzlichen Zeitraum. Und dann könnten
wir diese Zeile tatsächlich auskommentieren, weil ich glaube, dass wir sie nicht mehr brauchen. Also lasst uns das ausprobieren. In der Tat werde ich es hier einfügen, weil wir dort unsere markierte Mengenzelle
haben. Und lasst uns das einfach ausprobieren. Ich werde das klären, Es ist unterwerfen. Und da gehst du hin. Sie sehen, wir fügen hier Werte ein und die Formatierung der markierten Zelle wurde nicht verschoben. Und ich werde das für die letzte Zelle hier tun, nur für den Preis. Eigentlich habe ich das nicht mehr in meiner Zwischenablage, also kopiere ich von dieser anderen Zeile darüber. Und dann können wir diese Linien einfach ausräumen. Und hier sehen Sie jetzt, wie wir manuelle Updates durchführen, unser Code wird immer effizienter, was Best Practice ist, die wir tun möchten. Als wir das Makro aufgezeichnet haben. Es hatte eine Menge zusätzlicher Schritte. Je mehr wir den Code selbst vereinfachen können, desto einfacher wird es sein, unseren Code in Zukunft zu pflegen. Also werden wir dies noch einmal testen, jetzt, wo wir alle unsere Updates haben, sehen
Sie, dass der Selbstbeurteilungspreis immer noch unsere Formatierung hat. Also werde ich das komplett klären. Was einreichen. Und jetzt haben wir nur die Werte, die hier eingezogen werden. Preis, wir wollen immer noch in Dollarnotation sein, so dass wir dieses Feld selbst und Buchhaltungsfeld machen
können. Und es wird diese Formatierung
in der Zukunft beibehalten , wenn wir verschiedene Werte hinzufügen. Also, selbst wenn wir dies zu einem Dollar 50 ändern, können
wir Submit drücken und Sie werden sehen, dass es aktualisiert, es behält seinen Buchhaltungszellentyp.
46. Daten bewegen – Ohne Kopien und Einfügen: Bisher haben wir mit unserer Baseline begonnen, wo wir ein Makro
aufgezeichnet und in diese Zellen kopiert und eingefügt haben. Sogar das ist etwas ineffizient. Wir zeichnen Makros auf, im Grunde machen wir es so, wie ein normaler Benutzer oder eine Person, die vor seinem Computer sitzt, Daten verschieben würde. Weil wir Zugriff auf den Code direkt in VBA haben. Wir müssen die Dinge nicht so ausführen, wie
Menschen vor dem Computer sitzen indem sie mit Maus und Tastatur klicken, die Dinge ausführen würden. In diesem Beispiel zeige
ich Ihnen, was ich damit meine. Unser Prozess hier besteht also darin,
jedes Feld in unserem Formular zu kopieren und es dann in unsere Tabelle einzufügen. müssen wir nicht wirklich tun. Wir brauchen keine Kopie und Einfügen zu machen. Und dann, was wir vor mit einer Paste Specials getan haben, um unsere Formatierung beizubehalten. Stattdessen, weil wir Zugriff auf diese Variablen direkt haben. Wir haben dieses Feld hier drüben Tabellenkäufe mit dem Offset. Da wir diese Referenz dieses Feldes haben, können
wir tatsächlich das Kopieren und Einfügen vergessen. Diese Zelle hat eine Eigenschaft namens Wert, und wir können dies einfach gleich etwas setzen. Und wenn ich das gleich Steve hier setze, werden wir das jetzt erledigen. Und Sie können sehen, dass wir einfach die, diese Zeile des Codes, einfach die IV direkt in die Zelle legen. Und ich habe meine Quelldaten hier, von
denen wir eine Control C-Kopie gemacht haben. Wir müssen kein Exemplar machen. Stattdessen nehme ich einfach diese Quellzelle, die hier drüben ist. Und anstelle des Textes, den ich gerade hier getippt
habe, werde ich den Wert davon setzen. Und so im Grunde, was diese Codezeile sagt, und wir brauchen das nicht mehr,
ist, dass diese Zelle hier drüben, die auf die linke Seite dieser Codezeile verwiesen
wird, dem Wert dieser Zelle hier gleich ist . Und so ist dies im Grunde das Äquivalent einer Kopie und Einfügen nur. Es wird noch effizienter sein. Also lassen Sie uns versuchen, dies auszuführen und Sie können sehen , dass das Makro immer noch gleich funktioniert und der Artikel Bleistift zu unserem Tisch bewegt hat. Also lassen Sie uns dies für den Rest des Codes tun. Wir brauchen diese Leitung nicht mehr. Wert ist gleich dem Wert unserer Quelle. Und wir können das Gleiche hier machen. Wir werden Wert gleich Form Preis Stop-Wert zu reduzieren. Und das, wo wir die Zwischenablage kopieren löschen, spielt auch keine Rolle mehr. Und Sie können sehen, dass wir hier viel effizienter werden. So können Sie sehen, wo die Mängel bei der Aufzeichnung eines Makros sind und wie viel effizienter mit dem Code direkt arbeiten, wenn Sie wissen, was Sie tun können. Also lassen Sie uns das Ganze zeigen. Wir werden das klären. Drücken Sie „Senden“. Und hier haben wir das gleiche Ergebnis wie zuvor, und jetzt sind wir nur auf drei Zeilen Code. Und Sie können sehen, dass das Gleiche immer noch gilt. Die hervorgehobene Zelle, die Formatierung wurde von dieser Tabelle nicht verschoben. Wir verschieben nur die Daten, die wir wollen. Und eine Sache, die dieses einfache Beispiel nicht zeigt, ist, wenn Ihre Makros viel länger werden, können
sie Seiten und Hunderte und Tausende von Zeilen Code werden. Das ist viel effizienter. Und so könnte dies der Unterschied zwischen
Ihrem Makro sein , das für 30 Sekunden oder sogar mehrere Minuten ausgeführt wird. Oder es läuft viel effizienter und wird innerhalb einer Bruchsekunde oder einer Angelegenheit von Sekunden
erledigt.
47. Daten bewegen – Schreiben in die nächste Reihe: Jetzt haben wir hier ein sehr sauberes Makro mit nur drei
Codezeilen erstellt , das drei Datenstücke in diese Tabelle verschiebt. Das nächste Problem, an das Sie vielleicht schon denken, ist, dass unser Makro immer wieder Informationen von diesem Formular in genau dieselben Felder
bewegt. Um dies zu einer tatsächlichen Übertragung von Daten in eine Tabelle zu machen, werden
wir eine neue Zeile jedes Mal anhängen wollen, wenn wir auf Absenden drücken
, so dass wir jedes
Mal eine neue Zeile von Daten erhalten , wenn wir eine neue Zeile hier über unser Formular senden. Es gibt viele verschiedene Möglichkeiten, dies zu tun. Also werde ich Ihnen nur einen Weg zeigen, wie Sie das vorerst tun können. Das erste, was ich tun will, ist herauszufinden, was meine nächste Zeile ist. Und weil sich das hier mit Daten füllen könnte. Und wir könnten mehr Zeilen haben, wir müssen durch diese Tabelle gehen und herausfinden, wo unsere nächste Reihe sein wird. Wie ich das tun werde, ist, dass ich diesen Ankertisch benutzen werde. Und in unseren früheren Lektionen gingen
wir durch Schleifen. Das ist es, was wir nutzen werden, um das herauszufinden. Ich werde herausfinden, was unsere nächste Reihe ist, bevor wir überhaupt etwas tun. Also werde ich anfangen, Code vor
diesen Zeilen zu entwerfen , wo wir unsere drei Felder an einer Tabelle hinzufügen. Eine Sache, die ich hier nutzen werde, ist dieser benannte Bereich, der unser Anker für den Tisch hier drüben ist. Was ich tun werde, ist bei dieser Zelle anzufangen und dann meinen Weg runter zu arbeiten. Ich werde eine For-Schleife machen, die wir vorher übergegangen sind. Ich fange mit ein paar Zahlen an, die ich hier wiedergutmachen werde. Ich bin 1, 2, ich werde nur sagen 99 Tausend, nur eine gigantische Zahl, die ich glaube nicht, dass unser Tisch erreichen wird, zumindest nicht in absehbarer Zeit dieser Demo. Also werde ich als nächstes sagen, ich, das ist unsere Notation für unsere For-Schleife. Und dann werde ich diesen Bereich oder Anker für die Tischkäufe wählen. Und ich werde sagen Offset i 0, dieser Wert. Und so habe ich diese Codezeile noch nicht fertiggestellt. Ich möchte Ihnen nur zeigen, dass das, was ich referenziere, nur unsere erste Schleife ist, ich werde gleich eins sein. Und so wie wir hier drüben benutzt haben, ,
wenn Offset eins ist bedeutet
das,
wenn Offset eins ist, eine Zeile von dieser Zelle und 0 Spalten nach rechts. Also reden wir über diese Zelle hier drüben. Und dann, wenn diese Schleife das nächste Mal geht, werde
ich zwei werden. Und dann reden wir hier über diese Zelle. Und du fängst wahrscheinlich an, eine Vorstellung davon zu bekommen, was ich tun werde. Also werde ich das in eine if-Anweisung einschließen. Ich werde sagen, wenn Offset 1 leer ist, dann werde ich diese if-Anweisung hier beenden. Aber im Grunde werde ich hier etwas Code einfügen, der am Ende der Tabelle steht. Und wenn ich gleich eins bin, wird hier etwas sein. Und so werden wir diese if-Aussage nicht erfüllen. Wir gehen nur zu unserer nächsten Schleife. Also werden wir aus dieser if-Anweisung ausspringen. Und wir gehen zur nächsten Schleife. Wenn ich gleich zwei bin, wir hier drüben sein und dann wird der Wert leer sein. Und dann werden wir in dieser if-Anweisung enden. Und dann wird dieser nächste Rohling unsere erste Reihe sein. Wir werden hier eine neue Variable erstellen, und wir werden es DEM nennen. Nächster Index als Ganzzahl. Und wenn ich uns einen Index zeigt, der uns zu einer leeren Zeile bringt, werden
wir sagen, dass der nächste Index gleich i ist. Jetzt müssen wir diese Schleife nicht weiter laufen, weil wir bereits den Boden getroffen haben und wir brauchen
nicht, um diese Schleife 99 Tausend mehr -Zeiten. Also werden wir einfach die for-Aussage hier verlassen. Jetzt, wenn wir diese for-Schleife auf dem nächsten Index fertig sind, wird in diesem Fall zwei sein, was wirklich der Ort unserer nächsten Zeile ist. Und wo sind wir? Wir fügen immer Daten in nur einer Zeile von unserem Ankerpunkt entfernt hinzu. Wir werden diese Variable nächsten Index für wie viele Zeilen nach unten von unserem Anker verwenden, wollen
wir gehen und die nächsten Daten hinzufügen. Und wenn wir das hier ändern, sind
wir nur eine Reihe runter, wir zwei sein, wenn wir das hier laufen. Zumindest erwarte ich das. Und dann werden wir diese Werte wieder auf diese Formularwerte setzen, weil es schwer ist, alles zu sehen. Ich werde das nur ein bisschen verkleinern. Weil wir diese benannten Bereiche erstellen. Ich kann tun, was ich gerade getan habe und alles funktioniert richtig. Und so können Sie sehen, dass dies einer der wichtigsten Vorteile für die Arbeit mit diesen benannten Bereichen ist. Weil es das erste Mal ist, dass wir es ausführen. Ich werde eigentlich F8 verwenden und diesen Code durchlaufen und hoffentlich funktioniert das Konzept genau so, wie ich es beschrieben habe. Und so gehen wir hier durch die Schleife. Ich ist gleich 1. Wir können diese Variablen hervorheben, nur um ihren Wert zu sehen. Der Wert einer Zeile nach unten vom Anker ist nicht leer. Sie sehen also, dass wir aus dieser if-Anweisung gesprungen sind. Wir sind nicht hineingegangen. Und dann gehen wir durch die nächste Schleife, wo ich gleich 2 bin. Wir sprechen hier über diese Zelle, und der Wert ist leer und Silber im nächsten Index gleich zwei. Wir lassen die for-Schleife. Und jetzt ist unser nächster Index zwei. Und jetzt werden wir den Wert unserer verankert auf Zeilen setzen. Und es sieht so aus, als hätte es großartig funktioniert. Nur um es zu beweisen. Wir werden das etwas ändern. Ich weiß, dass diese Beispielpreise vielleicht keinen Sinn ergeben. Also gebt mit mir, wenn ihr denkt, dass das nicht
das ist, was ein Bleistift kostet. Drücken Sie „Senden“. Und Sie sehen, sind aktualisiert. Makro funktioniert großartig und wir können weiterhin Informationen zu dieser Tabelle hier hinzufügen.
48. Bewegliche Daten – Timestamp hinzufügen: Es gibt eine Funktion, die ich hinzufügen möchte, dieses Tool, das wir erstellen, nur weil es eine sehr grundlegende Funktion ist, die normalerweise
Teil eines Formular-zu-Datenbank-Tools wie dieses wäre . Und das ist ein Zeitstempel auf, wenn wir diese Informationen hinzufügen. Und wir haben diese Funktionalität, die wir bereits
aufgebaut haben, wo wir weiterhin Zeilen in dieser Tabelle hinzufügen können. Und ich möchte jeden Datensatz mit der Zeit stempeln, in der wir diese Zeile zur Tabelle hinzugefügt haben. Diese Informationen sind nicht im Kaufformular enthalten und wir möchten einen Benutzer nicht auffordern, das Datum und die Uhrzeit jedes Mal einzugeben , wenn er eine neue Zeile einreicht. Wir wollen nicht, dass sie das selbst machen. Und so machen wir das direkt im Code hier drüben. Wir können das gleiche Konzept verwenden, das wir hier haben, wo wir unseren Anker haben. Wir haben unseren Index, wie viele Zeilen nach unten gehen müssen, um unsere nächste Zeile zu finden. Aber unsere Kolumne ist jetzt unsere dritte Spalte aus unserem Index. Also 123 ist unser Zeitstempel. Und anstatt den Wert eines benannten Bereichs von unserer Form zu nehmen, die wir hier bereits haben. Wir können einfach eine VBA-Funktion verwenden und wir werden die Funktion jetzt verwenden, die ein Zeitstempel ist. Und so lassen Sie uns hier eine Zeile hinzufügen. Sie werden sehen, dass wir einen Zeitstempelwert haben, der jetzt angezeigt wird. Wir machen das ein bisschen größer, nur damit wir es sehen können. Eigentlich können wir diese Menge viel kleiner machen, auch um uns hier etwas Platz zu geben. Und Sie können sehen, wie wir diese Zeilen hinzufügen, wir haben jetzt einen Zeitstempel in hier auch.
49. Bewegliche Daten – Schreiben in unterschiedliches Sheet: Das nächste, was ich tun will, ist, diese Informationen aufzuteilen. Und das wird uns eine Chance geben zu sehen, wie wir Daten zwischen zwei verschiedenen Blättern verschieben
können. Also werde ich hier ein neues Blatt erstellen, weil wir sehr oft kein benutzerfreundliches Formular wie dieses direkt neben der Datentabelle selbst haben
würden . Stattdessen könnten sich diese an zwei verschiedenen Orten befinden. Also werde ich unseren Tisch ausschneiden und einfügen, und ich werde ihn hier drüben in ein anderes Blatt einfügen. Sie können sehen, weil ich Control X zum Ausschneiden und Einfügen verwende, bewegt sich
unser benannter Bereich tatsächlich damit. Und so siehst du hier drüben, wo wäre unsere Ankerzelle gewesen? Dieser Name bewegte sich mit ihm hierher zu diesem neuen Blatt, das wir allein darauf erstellt haben. Mal sehen, ob das funktioniert. Also werde ich die Menge hier ändern. Ich werde das in eine Büroklammer umwandeln. Ich klicke auf Absenden. So können Sie hier sehen, dass wir nichts tun mussten, weil wir unsere Sortimente benannt
hatten und Tischkäufe hierher verschoben hatten. Dieses Blatt wusste tatsächlich, dass die Tischkäufe auf einem anderen Blatt waren und war in der Lage, es zu finden, obwohl wir es verschoben hatten. Eine Sache, die wir hier tun können, ist, dass wir ein Formular schreiben. Und hier drüben nennen wir es Tabellendaten. Und wir können weiterhin Informationen über diese Tabelle hinzufügen und Sie können sehen, dass es weiterhin funktioniert und wir haben unsere neuen Zeitstempel. Und obwohl das funktioniert, möchte
ich Ihnen nur zeigen, dass es immer besser ist, expliziter zu sein, wie Sie Ihren Code schreiben. Nur weil wir es in verschiedenen Situationen noch nicht getroffen haben. Aber dieser Code könnte verwirrt werden, weil wir
zwei verschiedene Blätter haben und er möglicherweise nicht weiß, auf welche Informationen wir verweisen möchten. Dies ist noch kein Problem,
aber etwas, das expliziter sein könnte, könnte das Hinzufügen eines Schafrufens sein. Und wir werden aus Tabellendaten sagen, Range-Tabellenkäufe. Also jetzt sagen wir R-Code, dass
die Range-Tabellenkäufe sehr spezifisch in den Blättern sind, die Tabellendaten genannt werden. Und wir könnten das für alle anderen tun. Ich werde es jetzt nicht tun, aber das wäre expliziter. Also sagst du dem Code genau, was vor sich geht. Und wir können das noch einmal versuchen, nur um sicherzustellen, dass es noch funktioniert. Sie sehen also in diesem Fall, diese Informationen hier nicht gebraucht wurden, aber das Hinzufügen tut nicht weh. In verschiedenen Situationen kann
dies besser funktionieren und sogar benötigt werden, damit alles korrekt funktioniert. Während wir zu diesem Thema sind, möchte
ich eigentlich nur ein Beispiel finden, um
Ihnen zu zeigen , wann die Shi-Callouts angegeben werden müssen. Die Art und Weise, wie ich das tun werde, ist, diese Daten direkt hier zu nehmen. Ich werde das klären. Ich werde diese Zeile auskommentieren. Und anstatt unseren Artikel zu schreiben, werden
wir das alles später wieder reparieren. Aber genau wie diese Demo, anstatt unseren Artikel in die nächste Zeile unserer Artikelspalte zu schreiben, werde
ich dies nur in Zelle A1 setzen. Und du wirst sehen, dass wir einen schreiben. Und wir haben am Ende unser Einkaufsformular hier geändert, um Büroklammer zu sagen, weil dieses Formular nicht weiß, dass A1 Tabellendaten bedeutet. In der Tat habe ich das nicht einmal erwähnt, als ich diesen Code ändere. Und so können Sie sehen, A1 ist auf verschiedenen Arbeitsblättern. Und wenn ich ein neues Arbeitsblatt mache und auf Blatt 1 schreiben möchte. Ich werde es direkt angeben müssen. Und so werde ich das wieder ändern, um das
Formular zu kaufen , nur um den Fehler zu beheben, den wir hier gemacht haben. Und wenn ich dann zwei Blätter namens Sheet 3 schreiben möchte, diesen Bereich A1, muss ich
das speziell
nennen, um diese Daten hier auf Blatt 3 zu verschieben.
50. Aufräumen: Hallo allerseits. Also wurde mir klar, dass es
lange her ist, dass ich
mein letztes Video vor über
sechs Monaten gepostet habe mein letztes Video vor über und
nie wieder weiterverfolgt habe. Also möchte ich dort weitermachen,
wo ich aufgehört habe, und einfach die
Excel-Automatisierungsstunden
fortsetzen. Also
tauchen wir hoffentlich
nahtlos davon ein, wo
das letzte Video aufgehört hat. Für dieses Video möchte
ich einfach
aufräumen, was wir zuvor erstellt haben. Wo wir aufgehört haben, ist, wenn
ich auf die Schaltfläche „Senden“ klicke, sollten
wir dieser Seite hier eine neue Zeile
hinzufügen . Und du siehst das neue Datum im Vergleich zu dem, an dem
ich das letzte Mal aufgehört habe. Lassen Sie uns hier einen
der Werte ändern. Stellen Sie einfach sicher, dass
alles
richtig funktioniert und klicken Sie auf Absenden. Wir werden darauf
zurückkommen. Eine Sache ist, nachdem ich
auf den Absenden Button geklickt
habe, weiß ich nicht, ob etwas
erfolgreich passiert ist. Also werde ich
hierher kommen und sehen, dass unsere neue Linie, die wir
hinzugefügt haben,
erfolgreich mit
dem neuen Preis von
15,1 US-Dollar auftaucht erfolgreich mit
dem neuen Preis von , was mir nicht gefallen hat, war, dass
wenn ich auf diesen Button klicke, Ich konnte nicht sagen, ob
irgendetwas passiert ist. Also lasst uns das noch einmal ändern. auf „Senden“ und Sie sehen, dass wir einfach nicht wissen, dass etwas
erfolgreich passiert ist. Fügen wir also eine
einfache Funktion hinzu,
um eine Popup-Nachricht
zu senden, um
uns den Benutzer oder
jemand anderen, der dies verwendet, anzugeben uns den Benutzer oder
jemand anderen, der dies verwendet , dass der Code
erfolgreich ausgeführt wurde. Also werden wir
hier rüber gehen, zurück zu unserem Modul. Wir haben es als Makro eins hier gelassen. Also kommen wir zurück
und reparieren das auch. Genau wie ein bisschen
Benutzerfeedback werden
wir nur
sagen, dass Line war. Also lass uns zurückgehen.
Wir führen das nochmal durch. Und wir sehen, dass Zeile hinzugefügt wurde. Jetzt wissen wir tatsächlich
, dass etwas passiert ist und wir haben ein bisschen
Feedback vom Programm bekommen. Wenn wir jetzt zu unserem Code zurückkehren, können
wir uns
hier ansehen und sehen,
dass unser Subroutinenname immer noch als Makro One bezeichnet
wird. Das ist also kein sehr
beschreibender Name hier. Lassen Sie uns das hier in
etwas Offizienteres verwandeln. Also werden wir
von jetzt an Kalk hinzufügen sagen , weil wir
diesen Subroutinennamen geändert haben. Wenn wir auf diese Schaltfläche klicken, sehen
wir, dass wir kein Makro
finden können. Und das liegt daran, dass diese
Schaltfläche immer noch an ein
Makro namens Makro angehängt ist, das
nicht mehr existiert. Wir ändern diesen Namen. Weisen wir dies also dem einen Makro neu
zu. Das ist schön und leicht zu finden , da es bisher nur einen gibt. Um eine Zeile aus dem Formular hinzuzufügen. Wenn wir jetzt darauf klicken, läuft
dieselbe Routine. Wir haben weiterhin
unsere Leitungen hier summieren. Ich
reinige diesen Tisch einfach aus. Nur damit es
gerade nicht so groß wird, dass wir scrollen müssen
, um es zu sehen. Wenn wir eine weitere Zeile hinzufügen, sehen
wir, dass unsere Subroutinen
immer noch funktionieren. Jetzt, da wir diese
Datentabelle auf der anderen Registerkarte
haben, brauchen wir diese nicht mehr. Das war also aus unseren
früheren Lektionen. Wir können weitermachen und das
klären. Und ein Blatt, das ich
gerne zum Löschen von
Inhalten verwende , ist, wenn ich
hier markiere und auf Löschen klicke,
siehst du, dass all dieser Inhalt
noch hier bleibt. All diese Formatierung
ist immer noch da. Ich werde es rückgängig machen, nur damit du
siehst , dass ich von hier aus tun kann,
wenn ich einfach eine leere Zelle schnappe, kopiere sie und füge sie hier ein. Ich habe C kontrolliert und
dann V hervorgehoben und kontrolliert. Und ich drücke Escape, um den
Kopier- und Einfügemodus zu beenden. Und jetzt ist all dies zu normalen leeren Zellen
zurückgekehrt. Und das liegt daran, dass ich
eine normale leere Startzelle kopiert eine normale leere Startzelle und sie über
das Zeug geklebt habe, das ich löschen wollte. Es gibt andere Möglichkeiten, dies
zu tun, aber das ist nur eine sehr schnelle
und einfache Art und Weise. Normalerweise mache ich das. Jetzt mache ich einfach weiter und räume das ein bisschen auf. Ich mag es nicht wirklich, wie
das aussieht. Lassen Sie uns also das
Aussehen dieser Form ändern. Eine Sache, die ich für
Formulare tun möchte , ist, diese Rasterlinien loszuwerden
. Sie sehen, dass die Tabellenkalkulation diese Zeilen
enthält, was für
alle Tabellenkalkulationen normal ist. Aber wir möchten, dass dies eher
wie ein Formular und weniger
wie eine Tabelle aussieht . Und das ist nur für
visuelle Erscheinungen gedacht. Ich
entferne nur Gitternetzlinien und du kannst sehen, wie all
diese Linien verschwinden. Und das sieht ein
bisschen mehr nach einem Forum aus. Jetzt werde
ich einfach die Dinge aufräumen und das ein
bisschen besser aussehen lassen. Ich verschiebe den Knopf
vorerst aus dem Weg. Lasst uns diese Schriftart ändern. Lasst uns das wieder
normalisieren und wir werden
das
vorerst einfach mutig machen. Wir haben diesen grauen Hintergrund
, den ich vorher eingerichtet habe, und ich werde das einfach
rückgängig machen, sagen Sie keine Füllung. Also sind wir hier wieder bei
der Standardeinstellung. Lassen Sie uns das auch neu anordnen. Wir haben dieses zufällige Formular eingerichtet. Lasst uns stattdessen anfangen,
diese Dinge vertikal auszurichten. Was ich damit meine ist, dass
ich Menge nehmen kann, ich werde ausschneiden und
einfügen oder X kontrollieren. Ich füge hier die Menge ein und
den Preis. Und ich möchte, dass die Beschriftungen
für
die Felder in dieser ersten Spalte vorbei sind. Und dann setze
ich in der zweiten Spalte das eigentliche Feld ein. Siehst du, wir hatten dies
früher als Forumpunkt genannt. Aus unseren früheren Lektionen. Du weißt, wenn ich einen Ausschnitt und Einfüge
mache, wird
dieser Name
mit der Zelle reisen. Wenn ich also ein Ausschneiden und Einfügen mache, siehst du, obwohl ich
dies von hier nach hier verschiebe, der Name Formularelement immer noch mit dieser Zelle
gereist. Ich kann das Gleiche
für diese anderen tun. Ich mache ein Control X, Control V zum Ausschneiden und Einfügen. Ich habe dieses Setup so. Jetzt klicke ich mit der rechten Maustaste
und lösche diese. Und lassen Sie uns das einfach ein bisschen mehr
hervorstechen. Ich mache das hier schwarz. Es wird die Schrift weiß machen. Bring das hier zurück. Ich stelle nur
ein paar Colin's hier ab. Jetzt haben wir eine viel
einfachere, denke ich, sauberere Suche danach, mit der wir
gerade erst anfangen, und wir können hier weiterhin
Informationen hinzufügen, während wir gehen. Und bevor wir mit dem nächsten Video
fortfahren, testen
wir es einfach aus
und sehen, ob es noch funktioniert. Lasst uns
diese Zahlen ein wenig ändern. Nennen Sie es ein Bindemittel. Sie klicken darauf, die Zeile
wurde hinzugefügt und stellen wir sicher, dass sie es
hier auf diese andere Seite geschafft haben. Und siehst du, hier ist die
neue Zeile, wir fügen sie einfach hinzu.
51. 10 Validierung vor dem Prozess: Im letzten Video haben wir gerade unsere
Benutzeroberfläche ein wenig aufgeräumt und
einige sehr grundlegende Funktionen hinzugefügt , um dieses Projekt
nachzuholen. Jetzt haben wir diesen
Sende-Button immer noch funktioniert. Es gibt uns dort ein paar
Feedback-Nachrichten. Wir haben diese Zeile hinzugefügt. Jetzt möchte ich ein
wenig Validierung hinzufügen , um sicherzustellen, dass der Benutzer dieses
Formular korrekt verwendet. Wenn ich zum Beispiel
etwas getan habe, lösche das Element aus diesem Feld
hier aus dem Forenelement
und klicke auf „Senden“. Unser Prozess
läuft immer noch hier vorbei. Sie sehen, dass es diese Zeile hinzugefügt hat, aber wir haben nichts als Artikel
aufgeführt. In vielen Fällen möchten wir nicht, dass der Benutzer diesen Fehler macht. Wir wollen nicht, dass diese
Aktion stattfindet. Wir möchten dem
Benutzer mitteilen, dass etwas
nicht stimmt , bevor er es an den Tisch
einreicht. Und dann können sie es reparieren, damit
sie es erneut einreichen können. Gehen wir zurück zu
unserem Code hier drüben. Geh zurück zu unserem Modul. Wir haben unsere Add-Zeile zum Formular. Dies. Was wir
bereits geschrieben haben, ist das, was
die Informationen zur
Datentabelle auf
der anderen Registerkarte hinzufügt die Informationen zur
Datentabelle auf , in der wir unsere Validierung setzen
möchten, ganz oben in dieser Subroutine steht . Damit wir überprüft haben, ob bestimmte Bedingungen erfüllt sind. Bevor wir diesen Prozess
ausführen, fügen wir die Zeile tatsächlich hinzu. Ich gebe
hier einen Kommentar ab. Ich sage einfach „Hinzufügen“ zum Tisch. Und dann bereite ich
mich hier vor
, wo
wir mehr Code hinzufügen werden. Und ich
nenne es einfach Validierung. Hier werden wir
den Prozess validieren. Genau in diesem Szenario
, das wir gerade getestet haben. Was ich tun möchte, ist
sicherzustellen, dass in
diesem Formularelementfeld etwas eingegeben
ist. Hier drüben. Wir sehen
, dass das Formularelement hier
aufgerufen wird, um in die Datentabelle
eingefügt zu werden. Eine Sache, die wir tun können, ist,
den gleichen Callout hier zu nehmen
, wo wir
den Wert dieses
Bereichs erhalten , ein Element. Wir werden das
in eine if-Erklärung schreiben. Wir werden also sagen, ob
das Bereichsforenelement dieser Wert gleich ist und dann nur
zwei Anführungszeichen leer ist. Dann werden wir alles
ausführen, was in
dieser if-Anweisung
passiert. Im Grunde
fügen wir hier ein Meldungsfeld hinzu, um zu sagen , dass das Elementfeld leer ist. Testen wir das Ding also. Bevor wir das machen. Möglicherweise stellen Sie fest, dass wir, wenn
wir diese if-Anweisung
eingeben, was bedeutet, dass das Formularelement leer ist was bedeutet, dass das Formularelement leer ist,
hierher kommen, wir werden Nachrichtenfeld
öffnen. Aber nachdem das
Meldungsfeld auftaucht, wird
es den Rest
des Codes hier weiter nach unten gehen. Um
dies zu stoppen, werden
wir auch
das gesamte Makro
beenden, wenn diese Bedingung erfüllt ist, das
Forum-Element leer ist . Also werden wir hier einfach das Makro
abschneiden. Eine andere Möglichkeit, dies
zu schreiben, ist Exit Sub. Anstatt hier ein Ende zu machen, das
diese Subroutine beenden würde, werden
wir nicht auf die Gründe eingehen ,
warum ich hier end verwenden werde. Aber Exit-Subroutine könnte
möglicherweise einfach
diese von
uns geschriebene Subroutine verlassen und eine andere durchlaufen wenn Sie einen Haufen
dabei haben. Und es wird einfach diese
ganze Makrokälte stoppen ,
wo immer sie gerade ist. Probieren wir das mal aus. Der Artikel ist immer noch leer. Wir werden auf „Absenden“ klicken. Es besagt, dass das Elementfeld leer ist. Und so ändern wir
unsere Nummer hier drüben. Sie werden feststellen, dass es nicht gesagt hat, dass
es erfolgreich hinzugefügt wurde. Artikelfeld ist leer
und es gibt
uns nicht die Nachricht, die anzeigt, dass der Vorgang abgeschlossen
wurde. Wenn wir also hierher gehen, sehen
wir, dass unsere Linie
nicht hinzugefügt wurde. Aber wenn wir hierher gehen, fügen
wir einen Artikel hinzu
, damit er nicht leer ist, können
wir diesen Prozess fortsetzen. Jetzt, da wir sehen, dass das funktioniert, können
wir hierher kommen und den Rest unserer Validierung
hinzufügen. Ich teile einfach
diese Fenster hier drüben auf damit wir sehen können, was wir tun. Und lassen Sie uns darüber nachdenken, wie wir diese Validierung
ein wenig
erleichtern können , da wir nach
allen drei dieser Felder suchen möchten. Etwas, an das Sie vielleicht schon
denken, ist etwas wie
dieses Formularelement zu tun. Und dann ist hier
unsere Formularmenge. Dann rufen wir jetzt
diese Zelle
hier an und sehen, ob
sie leer ist, und wir tun
einfach dasselbe
für dieses andere Feld. Wir können dieses
Mengenfeld leer nennen. Und Sie können sich vorstellen, wenn
wir das Mengenfeld verlassen ,
wird dieses überspringen. Ich werde F8 drücken, um diesen Code hier
durchzugehen.
Sie werden sehen, dass
es überprüft, ob Forum-Element leer ist,
was nicht der Fall ist. Also überspringt es diese Aussage. Es kommt hier rüber, die
Formularmenge ist leer und so gibt es
uns jetzt das Nachrichtenfeld. Und wenn wir das erreichen, endet
es und das Makro hört auf. Und wir wollen nie, wie
Sie bemerken, wenn wir diesem Muster folgen, werden
wir den gebildeten
Preis hierher setzen. Wir könnten sagen, dass etwas
wie das Preisfeld leer ist. Wenn wir dies jedoch erneut ausführen, werden
wir die
Forumsmenge erreichen. Hol dir dieses Meldungsfeld
und dann enden wir einfach. Wenn wir eine Situation wie
diese haben , in der Menge
und Preis leer sind, , erhalten
wir, wenn Sie diesen Code
durchgehen unser Nachrichtenfeld und
das Makro genau hier, und wir sind es nicht um
unsere Fehlermeldung zu erhalten, dass der Preis leer ist und der auch ausgefüllt werden
muss. Das ist hier keine
große Sache, aber wenn die Dinge
komplizierter werden, möchten
Sie vielleicht ein besseres
System als dieses , das eine
anständige Menge an Code hat. Wir werden es also auf eine
Weise schreiben, die kürzer ist, aber wir werden auch die
gesamte Validierung durchlaufen , damit es Ihnen alle auf einmal zeigen
kann, anstatt einfach so
aufzuhören , wie
wir es bei dieser Methode tun. Also zeige ich
dir einen wirklich gängigen Weg , dass ich das gerne mache. Und ich benutze das gleiche
Setup ständig. Ich erstelle
eine neue Variable. Ich rufe
eine Fehlermeldung auf. Und das ist eine Zeichenfolge, also ist es im Grunde ein Text. genau in dieser Situation Wenn das Element genau in dieser Situation leer ist, füge
ich kein Meldungsfeld ein und beende einfach das
Makro genau hier. Stattdessen werde ich
sagen, dass etwas wie Fehlermeldung gleich item ist, item, Feld ist leer. Mal sehen, was passiert, wenn
ich so etwas mache. Jetzt, wenn wir unseren
leeren Artikel hier haben, haben
wir hier sehr wenig Informationen. Jetzt haben wir wirklich keine Informationen. Wenn ich diesen Code durchgehe, sehen
Sie, dass der Artikel leer ist. Wir fügen diesen Text der
variablen Fehlermeldung hinzu, und dann tun wir nichts, wir hören nicht auf, und dies
wird weitergehen. Jetzt ist das nur unser
alter Prozess hier. Die Frage ist also, wenn wir hier durchlaufen, da wir das Makro nicht
stoppen, was uns davon abhalten wird diesen Anzeigenzeilenprozess
auszuführen. Und wie ich das machen werde,
ist hier drunter. Wir werden das vorerst nur
beiseite legen. Wir werden uns darüber
keine Sorgen machen. Wir werden sagen, wenn die Fehlermeldung nicht leer ist, wenn wir diese
Validierung ausführen, um sicherzustellen , dass dieses Feld ausgefüllt
ist und sonst werden
wir alles beenden. Diese Bedingung wird
Text in die
Fehlermeldungsvariable einfügen. Und dann unten
, darunter, wenn es etwas
für eine Fehlermeldung gibt,
dann bedeutet das, dass wir aufhören müssen. Wir werden Probleme sagen. Und dann füge ich an. Wir haben hier absichtlich
einen Fehler gemacht, aber ich lege das einfach hier hin. Und ich sage, gibt den Doppelpunkt der
Vorlage aus. Und dann
fügen wir die Fehlermeldung hinzu. Und dann werden wir hier ein Ende
machen. Also lasst uns das laufen lassen.
Ich werde diese Zeile
für Zeile weiterführen. Also haben wir F8 getroffen, du siehst Artikel leer. Wir füllen die
Fehlermeldungsvariable mit einer Meldung aus. Und dann sehen
wir, dass die Fehlermeldung etwas Inhalt
enthält. Dieses Symbol ist
nicht gleich leer. Die Fehlermeldung ist nicht leer, was bedeutet, dass wir
Probleme haben. Die entdeckten Probleme. Wir werden unsere
Popup-Probleme erkannt. Artikelfeld ist
leer, dann beenden wir. Wenn du das jetzt ausspielst, mache
ich es jetzt nicht wirklich. Aber wenn es tatsächlich
etwas im Formularelement gab, wird
diese if-Anweisung überspringen. Und
wenn Sie hier sind, ist die
Fehlermeldung leer, ist die
Fehlermeldung leer weil wir sie nie etwas
genannt haben. Wir könnten hier oben
klarer sein, indem nur sagen, dass die Fehlermeldung vorher leer
beginnt. Ist das wenn Aussage. Aber wenn du deklarierst,
beginnt es sowieso von seinem Leerzeichen, also wurde impliziert, dass
es leer beginnt. Und wenn wir dann hier sind, wird
es einfach überspringen und dann weitergehen
und unsere Prozesse ausführen. Für nur eine Validierung. Es spielt keine Rolle zu viel. Aber jetzt lösen wir das
Problem, das wir zuvor hatten
, nämlich dass wir in drei
verschiedenen Szenarien drei Felder suchen. Wir würden bei der ersten anhalten die es trifft, und dann nicht
den Rest der Nachrichten überprüfen. Lasst uns stattdessen
hierher kommen und wir werden diese Aussage hierher
verschieben. Wir werden sagen, ob die
Menge leer ist. Dann werden wir
Fehlermeldung gleich Mengenfeld machen. Stimmt's? Also
zeige ich dir absichtlich, was
mit dem, was ich getan habe, nicht stimmt. Also werden wir uns das durcharbeiten
. Ich werde
einfach die
beiden löschen , die wir zuvor hatten. Und hier sind unsere neuen Sachen. Wir haben unsere Fehlermeldung, und hier ist die erste
Situation, nach der wir suchen
, nämlich Artikel und hier ist die
zweite, die Menge ist. Und dann prüfen wir , ob eine
dieser Bedingungen erfüllt war oder nicht. Wenn ich also hier durchgehe, wirst
du sehen, dass die
Fehlermeldung gleich ist. Wir erfüllen unsere zweite Bedingung, nämlich dass die Menge leer ist. Jetzt haben wir eine Fehlermeldung. Wir zeigen also, dass unsere Nachricht, bei der
das Mengenfeld leer ist. Und wir beenden es und
dann hört der Prozess auf. Unser Problem hier ist
, dass unsere erste Nachricht durch
unsere zweite Nachricht überschrieben
wurde. Damit unsere
erste Nachricht erhalten bleibt, müssen
wir sagen, dass die Fehlermeldung hier mit einer Fehlermeldung übereinstimmt. Und die zweite
Nachricht hier drüben. Also lasst uns einfach sehen,
wie das aussieht. Hier ist unsere erste Fehlermeldung. ID-Feld ist leer. Jetzt sagen wir, dass das
Artikelfeld leer ist. Und die neue Nachricht
wird zu unserer Fehlermeldung. Während wir das durchgehen,
haben wir unsere Botschaft getroffen. Sie sehen, dass das Artikelfeld
leer ist, und wir haben
darüber hinaus angehängt , weil wir
sagten, dass es eine Fehlermeldung
plus etwas anderes ist. Es fügt sich also hinzu, dass das
Mengenfeld leer ist. Und dann beenden wir unseren Prozess. Und Sie werden feststellen, dass die Formatierung
nicht sehr gut aussah. Etwas, das wir hier
tun können, das
dazwischen hinzufügt , ist eine VB LLF, die visuelle Basiszeilenvorschub ist, was im Grunde bedeutet, eine neue Zeile zu
beginnen. Also sage ich es, und hier. Und wir werden unsere neue Botschaft sehen,
während wir das durchlaufen. Während ich das durchgehe, erhalten
wir diese Botschaft. Nun, das
schafft nur eine neue Linie. Und hier ist unser neues Format. Es hat die nächste
Kugel auf eine neue Linie geschoben. Lasst uns die
Details fernhalten, von denen ich denke du könntest folgen, was
ich hier mache. Ich werde einen Zeilenumbruch zwischen den
erkannten Problemen und den Kugeln setzen. Eigentlich
gehe ich einfach weiter und führe das durch. Jetzt gewohnt zu sehen, dass
es so aussieht, wo es eine neue Linie zwischen den Problemen
in unseren Kugeln gibt. Eine Sache, die ich tun kann, ist,
anstatt es hierher zu stellen, ich kann diese neue Linie einfach hinter jede der Kugeln hier stecken. Wenn ich das durchführe,
siehst du, dass es
eine zusätzliche leere Zeile gibt, aber es ist nicht etwas, was
du wirklich bemerkst. Es ist also einfach, dies am Ende
jedes Aufzählungspunkts
zu setzen , damit der nächste Aufzählungspunkt in einer neuen Zeile
beginnt. Etwas, was ich gerne mache, ist das
einfach hier drüben zu platzieren. Diese Fehlermeldung ist also gleich Fehlermeldung
und Anhängen, obwohl sie in diesem
Fall immer leer sein wird ,
wenn Sie hier sind. Es ist nur eine einfache Vorgehensweise immer neue
Aufzählungszeichen an die Nachricht anzuhängen. Also mache ich das, obwohl
wir wissen, dass dies in
jeder Situation, in der
diese Codezeile ausgeführt
wird, leer sein wird. Denn wenn ich es
wollte, kann
ich aus irgendeinem Grund ausschneiden und einfügen und die Reihenfolge von diesen
austauschen. Und als ich Run drückte, habe ich hier F5 für r1
getroffen. Beide arbeiten immer noch
mit der gleichen Formatierung. Nur wir überprüfen
das Mengenfeld. Bevor wir
das Artikelfeld überprüfen. Ich verschiebe das einfach
zurück, damit die Nachrichten in
der gleichen Reihenfolge wie im Formular
angezeigt sind . Und dann, unser letzter hier drüben, mache
ich eine Kopie. Einfügen. In unserem letzten Feld
wurde der Preis gebildet. Also schauen wir uns einfach an, wie das
funktioniert. Als ich auf Absenden klicke. Wir geben jede
dieser Anweisungen ein und fügen ein Aufzählungszeichen an die Nachricht an, und wir haben eine neue Zeile, um
die Formatierung gut aussehen zu lassen. Jetzt haben wir Probleme erkannt und jedes
Feld auflisten, das leer ist, was uns
daran hindert, voranzukommen. Wenn wir möchten, dass es
noch klarer wird, können
wir etwas
wie erkannte Probleme sagen, verarbeiten, abgebrochen. Probieren wir das also aus. Wir klicken auf Submit, wir haben alle
drei Felder hier leer. Wir können verschiedene Sequenzen ausprobieren. Wir können Artikel sagen, Büroklammer. Jetzt sind nur Mengen- und
Preisfeld leer. Wenn wir den Preis von
50 Dollar eingeben , weiß ich, dass diese Büroklammer immer
teurer
wird. Das einzige Feld ist
leer ist die Menge. Und wir geben unsere
Menge von 100 ein. Und die Zeile wurde hinzugefügt, nämlich dass wir die
gesamte Validierung und
den Prozess bestanden haben ,
an den die Schaltflächen offiziell abgeschlossen wurden. Und hier ist unsere 50-Dollar-Büroklammer.
52. 11 Listenobjekt für Tabellenobjekte: Für dieses nächste Video wollte
ich
zu einem anderen Thema springen ,
was eine andere
Art ist, mit
Tabellendaten zu arbeiten , als die meisten von uns gewohnt sind, wenn wir zum
ersten Mal mit Excel beginnen, dem
wir gearbeitet haben
diese Datentabelle hier. Und das ist nur
im Format einer Tabelle. Und so verwenden wir sehr
oft Tabellenkalkulationen, beginnen wir einfach oben links und
fangen an ,
Informationstabellen zu erstellen , während
wir in die Zellen tippen. Etwas,
das nicht so viele Leute verwenden, besonders wenn sie mit Excel
beginnen,
ist die Tatsache, dass Excel Tabellenobjekte erstellen
kann. So ähnlich wie es Arbeitsblätter und Zellen
gibt. Und das ist die Basis, mit der
wir alle in Excel vertraut sind. Sie können diesen Bereich direkt
hier in eine
offizielle Datentabelle umwandeln . Und du fragst
dich vielleicht, was heißt das? Weil dies bereits wie eine Datentabelle
aussieht. Aber wenn ich hierher komme
und „Als Tabelle formatieren“ sage, kann
ich hier ein paar
verschiedene Formate wählen. Ein wirklich üblicher ist dieser. Ich wähle das aus. Und du siehst, es fragte mich, was der Bereich
meines Tisches ist, der bereits automatisch ausgefüllt hat,
was ich ausgewählt habe. Ich könnte diesen Bereich ändern,
indem ich hier andere Dinge auswähle. Da dies jedoch
bereits ausgewählt wurde, als ich diese Schaltfläche
Als Tabelle formatieren wählte
, habe ich bereits meinen Bereich ausgewählt, drücke ich die Eingabetaste. Ich werde sagen, dass meine
Tabelle Header hat,
was bedeutet, dass ich sie in diesem
Bereich auswähle, habe ich Header, die wir hier
machen, die wir
bereits blau gemacht haben. Und ich klicke auf „Okay“. Und was Ihnen
vielleicht aufgefallen ist, wenn Sie zehn Sekunden
zurückspulen,
bevor ich das ausgeführt habe,
ist, dass, wenn ich jetzt
in diese Tabelle geklickt werde, das Table Design hier oben hat. Und das liegt daran, dass dies
ein Fisch- oder ein Tischobjekt ist. Ähnlich wie wir hier Zellen
genannt haben, wobei unser Artikel
kein Zellbereich ist und wir es Forenelement
genannt haben. Diese Tabelle ist jetzt
dieser Bereich hier drüben. Wenn wir auf Tabellendesign klicken, können
wir die
Informationen zu diesem Tabellenobjekt sehen. Und wir haben einen Tabellennamen. Das nennt man Tabelle
eins. Gerade jetzt. Wir können sogar
so etwas tun , wie unseren
Tabellennamen zu ändern, und wir werden es
als Tabellenkäufe bezeichnen. Sie sehen, dass es
die Nachricht auftauchte, die besagt , dass ich diese Tabelle nicht benennen kann. Tabellenkäufe. Das liegt daran, dass wir
diese eine Zelle hier oben haben, das ist der Anker. Und wir haben unsere
Handytabellenkäufe genannt und es lässt mich
nicht
denselben Namen wiederverwenden ,
anstatt mir
etwas anderes einfallen zu müssen. Also nenne ich
diese Tabelle einfach Kaufzeilen. Und ich habe Enter geklickt. Und jetzt, wenn ich rausklicke, sehen
wir unser
Tabellenband hier oben nicht. Wenn ich wieder hierher komme, sind
wir in unserem Tischdesign. Das sind also alle
Eigenschaften der Tabelle. Ich kann meine Themen hier ändern. Du siehst, wie das immer noch blau ist. liegt daran, dass wir
dies vor ein paar Videos manuell auf blau gesetzt haben. Wenn wir hierher kommen und uns den
Stil wieder normalisieren. Normal ist eigentlich
kein Zellenstil. Sie denken vielleicht, dass dies bedeutet, dass es einen weißen Hintergrund
gibt, aber es bedeutet wirklich nur ihn dem Standardwert von
Excel
zu überlassen. Weil das ein Tisch ist. Es wird den Stil
annehmen wie wir
den Tisch hier drüben stylen. Jetzt können wir sogar
den Header sehen, weil wir keine
bestimmte Hintergrundfarbe angegeben haben. Es wird nur die
Formatierung
akzeptieren , die wir
aus unserem Tabellenstil wählen. Wir werden dies in
unserer Automatisierung und in unserem VBA-Code verwenden . Noch bevor wir in unserem nächsten Video
darauf eingehen, können
Sie sehen, dass es
einige Vorteile hat, dass es sich um eine offizielle
Tabelle
handelt und dass es sich um ein bekanntes Objekt mit einer Reihe von Einstellungen handelt
, die wir nicht erhalten in alle Details hier hinein. Aber für den Anfang der Gerechtigkeit kann
man sehen, wie wir alles
formatieren können. Möglicherweise haben Sie bemerkt,
dass
diese Sortierfunktionen
oben in
jeder Spalte automatisch diese Sortierfunktionen
oben in vorhanden sind, die
Sie oft manuell hinzufügen müssen. Und dann ist eine wirklich coole
Sache, die Sie
hier sehen würden , dass Sie, wenn ich der Tabelle manuell Informationen
hinzufüge, auch wenn wir keine
Makros oder VBA für die Automatisierung verwenden, hier
Zeilen hinzufügen können und Sie sehen es automatisch neu, um
diese Tabelle zu erweitern , während ich
sie hinzufüge, frage hier. In dieser Tabelle ist viel Logik und Intelligenz
integriert. Jetzt, da Excel weiß, dass
dies eine offizielle Tabelle ist nicht nur eine
Reihe von Inhalten in zufälligen Zellen in
der Tabelle. Und dann kann ich sogar
herkommen und
so etwas wie Delete machen. Und jetzt habe ich,
wenn ich mit der rechten Maustaste klicke, diese neuen Optionen, Spalten
löschen oder eine Zeile löschen. Also werden wir
dieses Tabellenobjekt nutzen
, da Excel weiß, dass
dies eine tatsächliche Tabelle ist.
53. ListObjects (Tabelle) – (Table): In der letzten Lektion habe ich Ihnen diese Idee
einer Namentabelle vorgestellt , die wir hier haben, die wir
in eine tatsächliche Namentabelle umgewandelt haben. In Excel erkennt dies. Es gibt viel mehr Informationen, die
wir in
Namentabellen nur hier in Excel durchgehen könnten Namentabellen nur hier in Excel ohne in die VBA zu gelangen. Aber wir werden das jetzt für
ein anderes Mal speichern.
Lassen Sie uns untersuchen, wie
wir damit
für VBA-Makros arbeiten können, und
sehen Sie, welche Vorteile es hat,
eine tatsächliche Namentabelle zu haben,
anstatt mit
allen zu arbeiten
die Rohdaten in den Tabellenkalkulationszellen. Lassen Sie uns hier in
den VBA-Code eintauchen. Ich öffne unseren Redakteur. Wir haben das nur
auf beiden Seiten hier. Und lass uns einfach ein Modul erstellen. Also werde ich
das Projekt, an dem wir
gearbeitet haben,
irgendwie beiseite legen und stattdessen
einfach diese Lektion über die
verschiedenen Dinge haben, die Sie tun können. Jetzt haben wir eine Namentabelle
hier in der Tabelle. Erstellen wir also ein neues Modul. Ich klicke mit der
rechten Maustaste auf Modul einfügen. Und ich
nenne diesen Namen einfach fähig. Also nenne ich es Testing. Wir werden
dies nur verwenden, um zufälligen Code auszuführen um
einige der Dinge zu demonstrieren, die Sie mit dieser Namentabelle tun können. In VBA. Diese Namentabellen werden tatsächlich als
Listenobjekte bezeichnet. Also erkläre ich
zuerst eine TBL. Es gibt eine Tabellenvariable als, und wir
nennen sie ein Listenobjekt. Sie haben also diese Möglichkeiten hier. Ich wähle Listenobjekt aus. Und dann muss ich diese Variable so
einstellen , dass sie die Tabelle ist, die wir hier auf dem Bildschirm
sehen, die Sie sich
aus dem letzten Video erinnern. Ich werde das erweitern, damit wir den Namen hier sehen
können. Wir nennen es Tabellenkaufzeilen. Also werden wir uns hier
an diesen Namen erinnern. Wir werden also
sagen, dass PBL gleich ist. Und dann
rufen wir unsere Datenblätter an. Und das ist der Name
des Blattes genau hier. Also müssen wir ihm den Namen
des Arbeitsblatts nennen, dass die Tabellen in dieser Liste Objekte, Tabellenkaufzeilen. Wir nennen das also so,
wie wir normalerweise einen Bereich machen, aber anstelle eines Bereichs
, der eine oder mehrere Zellen sind,
sagten wir ein Listenobjekt, das sind die Tabellen hier. Wenn also mehr als
eine Tabelle auf dem Blatt vorhanden ist, befinden sich mehrere
Listenobjekte in diesem Arbeitsblatt. Also erzählen wir es von allen
Tischen auf diesem Blatt. Wir wählen das Objekt für
Tabelleneinkaufspositionen aus. momentan keine Rolle
, denn es gibt nur einen. Wenn es jedoch
mehr als eine Tabelle gab, sagt
es, welche Tabelle für unsere Variable deklariert werden
soll. Also jetzt
möchte ich einfach Tisch sagen. Und Sie haben all diese
Eigenschaften des Tabellenobjekts, des Listenobjekts. Ich entschuldige mich, ich werde diese Wörter wahrscheinlich austauschbar
verwenden, Tabellenobjekt und Listenobjekt. Sparbereich, von dem wir
wissen, dass es sich um eine Gruppe von Zellen handelt. Ich sage einfach „wählen“. Gehen wir also durch diese
F8, um den Code zu durchgehen. Hier. Tische nichts. Jetzt wird die Tabelle zu Tabellenkaufzeilen, was genau hier dieses Objekt ist. Und dann sind
die Zellen in dieser Tabelle der Bereich. Und wenn ich auf Auswählen klicke, werden
Sie sehen, dass es weiß
, dass hier unsere Tabelle ist. Einer der Vorteile, die Sie direkt aus
diesem Beispiel
sehen können , ist, dass Sie oft Daten
irgendwo in einer Tabelle haben. Diese Tabellenkalkulationen sind gigantisch. Sie können Hunderte
und Tausende von Zeilen und jedoch
viele Spalten sein. Und Sie sehen in diesem Fall, die Daten nicht perfekt oben links oder
ähnliches liegen,
was einige Tabellenkalkulationen sind. Ihre Daten können jedoch in der Tabelle
schweben. Und genau hier
können Sie sehen, dass wir diesen
Vorteil bereits sehen , wo wir, wenn wir dieses
Namenstabellenobjekt
deklarieren, genau wissen,
wo sich unsere Daten befinden. Jetzt, da wir ein Tabellenobjekt haben, verfügt
dieses Listenobjekt über eine Reihe von Eigenschaften, die Teil davon
sind. Es hat Unmengen von Immobilien. Wir
könnten überhaupt nicht rübergehen, besonders in einer Lektion hier. Aber ich möchte Ihnen nur einige
der grundlegenden Eigenschaften
dieser Tabelle
zeigen der grundlegenden Eigenschaften
dieser , auf die wir jetzt ganz einfach
zugreifen können. Also sage ich Tisch. Und dann kannst du hier
alle Optionen sehen. Ich sage
Datenkörper-Bereich. Das ist also ein Bereich. Und dann sehen Sie, dass es
genau wie unser Sortiment ausgewählt hat, wählen Sie dies als
Datum des Körperbereichs aus. Wenn ich nun durchgehe, haben wir den Bereich ausgewählt und
hier ist der Datenkörperbereich. Und Sie sehen, dass alles getan hat,
ist im Grunde genommen
die Header zu entfernen , da dies
unsere Daten in jeder Tabelle sind. Und im Moment haben wir eine
sehr kleine Datentabelle, aber das könnten Tausende von Zeilen nach unten und Dutzende von
Spalten auf der rechten Seite sein. Und es würde wissen, dass dein Körper
im Grunde dein Tisch
abzüglich der Header ist . Und wir können
hier noch mehr Dinge hinzufügen. Das werden wir tun. Lasst mich wieder hier oben. Wir können
Hetero-Ringe machen, die auswählen. Ich ziehe
diesen gelben Pfeil nach oben damit wir
diese Codezeile ausführen können. Und du siehst, es kennt
den Bereich der Kopfzeile. Die Spitze hier drüben. Jetzt fangen Sie an,
einige der Dinge zu sehen, die wir
in den vergangenen Videos gemacht haben, in denen wir oben links
eine Ankerzelle haben. Und wir tun Dinge wie den
Versuch, die nächste Reihe zu finden. Wir haben Zugriff auf die Eigenschaften der Tabelle und
müssen nicht so viel arbeiten, um Informationen
herauszufinden,
wie wo befindet die oberste Zeile und wo befindet sich die
unterste Zeile dieser Tabelle? Tabellen haben eine Reihe
von Reihen. Und oft, wenn wir mit Datentabellen
arbeiten, wissen
wir, dass wir
versuchen,
die verschiedenen
Informationszeilen zu durchgehen die verschiedenen
Informationszeilen , wenn
wir mit Daten arbeiten Das ist ein wirklich
häufiges Thema Sie versuchen, entweder eine bestimmte Zeile zu
finden oder alle Informationszeilen
zu
durchlaufen . Tische. Haben Sie diese
Listen Zeilenobjekte, bei denen es sich um jede
Datenzeile in der Tabelle handelt. Und das Gleiche hier. Sehen Sie, ich habe Listenzeilen hier. Ich muss tatsächlich
sichern und wenn ich Klammern
anfing, gibt
es mir einen Index. Wenn ich also sage, dass mein Index zwei ist, hat
meine Listenzeile eine Bereichseigenschaft und ich kann sie erneut auswählen. Wir bewegen diesen Pfeil eins raus. Siehst du, ich wähle die
zweite Zeile meines Tisches aus. Und wenn ich das wieder auf fünf
ändere, springen wir natürlich wieder
in die fünfte Reihe. Und wenn ich dann
außerhalb des Bereichs gehe, kann
man das schon erwarten. Wir werden hier
einen Fehler auslösen und es heißt „Tiefpunkt außerhalb
des Bereichs“, weil Rho Zehntel in unserer Listenzeile nicht existiert
. Gehen wir zurück zu drei hier. Sie können sehen, wenn ich zu unserem Listenobjekt gehe und
einfach den Zeitraum setze, wir haben diese verschiedenen
Dinge, die wir tun können. Der Bereich ist das, womit
wir vertraut sind
, der mit den Zellen der Zeile interagiert. Aber dann hast du
diese anderen Dinge, wie wir hier gelöscht haben. Probieren wir das mal aus. Wenn wir diese
Codezeile ausführen, die Listen enthält, Überzeugungen in
Zeile drei, können Sie
sich vorstellen, was als nächstes passieren wird. Wenn ich das ausführe, wird Zeile
drei jetzt gelöscht. Und jetzt fangen Sie
an zu sehen, dass wir hier viel Kontrolle
haben. Dinge, die wir in der Vergangenheit
gemacht haben, wie schon bevor wir die Variable
I
verwendet haben, um zu indizieren, wie weit wir von oben links entfernt
sind. Wir arbeiten viel daran
herauszufinden, wie wir mit den Daten
arbeiten. Und jetzt, da wir dies in
ein Listenobjekt eingefügt haben und
einen tatsächlichen Namen in Tabelle haben, können
wir
viel nahtloser
und intuitiver mit dieser Tabelle interagieren als wenn wir versuchen, die Indizes im
Auge zu behalten und wo sind wir auf der
Seite mit Zellenzahlen. Ich zeige Ihnen immer wieder
einige der anderen wirklich gängigen Eigenschaften, die
Sie hier verwenden werden, nämlich dass es
ein Listenspaltenobjekt gibt genau wie wir eine Liste von Zeilen haben. Und so können wir das Gleiche tun. Wir können Listenspalte sagen, Index für den Bereich , der darauf liegt, nur um Ihnen zu
zeigen, was das ist. Und das ist unsere zweite
Listenspalte hier haben wir Quantität. Etwas wirklich Cooles
an Listenspalten. Und das ist einer
meiner Hauptgründe
, warum ich gerne mit
diesen Listenobjekten arbeite wenn wir zur
Automatisierung in VBA sind, wenn Sie viele Daten
haben. Die Methoden, die wir zuvor gemacht haben und was viele Leute verwenden besteht darin,
entweder Ihre Spaltennamen zu verfolgen, nämlich ABC und die
Buchstaben ganz unten,
oder die
Nummer zu verfolgen, in der jede Spalte liegt ist. Also Preise Spalte drei,
Zeitstempel, Spalte vier. Aber wenn die Daten
wirklich groß werden, behalten
Sie die
Spaltenanzahl im Auge. Und es wird sehr schwierig, besonders wenn Sie Ihre Tabelle
ändern
und Spalten löschen oder hinzufügen, dann
wird die Spaltennummer 27 etwas anderes. Und wenn Ihr Code darauf angewiesen ist, Spalte 27 für etwas zu
verwenden, müssen
Sie
alle diese Orte in
Ihrem Code finden , um die
Spaltenindexnummer zu aktualisieren. Einer der besten
Teile bei der Verwendung eines Listenobjekts hier in
VBA für die Automatisierung ist, dass ich diese
beiden nehmen und durch
das Wort Menge ersetzen kann . Und das wird
den Spaltennamen kennen , basierend auf dem Wissen, dass
dies unsere Header sind. Und es wird wissen,
welche Spalte es tut wenn ich das ausführe,
ist
es immer noch Quantität. Wenn ich dies in Preis ändere, wird die Spalte mit
dem Titel Preis bekannt sein. Und wenn ich dann etwas mache wie eine neue Zeile hier
einfügen, haben wir Spalte eins. Ich kann das laufen lassen. Es weiß, dass ich
nach der Preisspalte suche, die jetzt hier drüben
statt in Spalte D in
der Tabelle ist . Und das ist ein wirklich häufiger
Fehler, den viele Entwickler oder Leute, die
mit Excel arbeiten, machen werden
, der dies nicht
nutzt und eine Zahlenzahl oder sogar
die Tabellenkalkulationsadressen verwendet. Und wenn sie etwas geändert haben, funktioniert ihr
ganzer Code nicht mehr. Dies ist sehr üblich bei
den allerersten Videos ich
früher in dieser Klasse über benannte Bereiche hatte. Das war's also für diesen. Im nächsten Video werde
ich einige
der weiteren Details
darüber eingehen, was wir jetzt, da wir unsere Daten in einem Listenobjekt
haben,
funktional tun können jetzt, da wir unsere Daten in einem Listenobjekt
haben,
funktional tun .
54. ListObjects – ListRows und Looping: Und die letzte Lektion haben wir einige der sehr grundlegenden Eigenschaften
eingeführt ,
die
wir jetzt haben, da sich
unsere Daten in einem Listenobjekt befinden. In diesem möchte ich einige Beispiele
nennen, wie wir dieses
Listenobjekt tatsächlich nutzen können. Machen sich einige sehr grundlegende
Aufgaben wieder gut. Das erste, was ich tun werde,
ist, diese Daten zu verstärken. Und so
kopiere ich nur und
wiederhole diese Daten einfach. Also haben wir hier mehr
Informationen. Wie ich es dir zuvor gezeigt habe. Sie können sehen, dass sich die Formatierung nicht
nur bewegt,
wenn ich
Daten am Ende
dieser Tabelle hinzufüge sich die Formatierung nicht
nur bewegt,
wenn ich
Daten am Ende
dieser Tabelle , diese alternative
Formatierung aufgrund des Kopierens und
Einfügens nicht verschiebt . Man sieht aus diesem kleinen
Dreieck hier unten rechts, dass es merkt, dass
der Tisch selbst wächst. Und so hilft uns diese Namentabelle bei einem Großteil der Arbeit,
die wir für Daten leisten. Und es erkennt,
wie groß die Reichweite dieser Daten ist, während wir sie
weiter erweitern. können wir beweisen, weil wir diesen Code auf der rechten Seite
haben. Und während wir sie
durchlaufen, können Sie Auswahl unserer Tabelle
sehen, dass sie erkennt, dass Daten jetzt
ganz unten in Zeile 29 liegen
und nicht nur in den ersten paar
Zeilen, die wir zuvor haben. Wir können diese Spalte löschen , die ich in der letzten Demo hinzugefügt habe. Wenn Sie mit der rechten Maustaste hier klicken, kann
ich Tabellenspalten beschnitten. Und jetzt sind wir wieder in unseren
Originalkolumnen hier. Und so hatten wir diese
verschiedenen Eigenschaften , die ich dir zuvor gezeigt habe. Und ich möchte Ihnen jetzt zeigen
, dass wir unsere Zeilenliste haben. Und bevor wir Ihnen zeigen wie wir
eine bestimmte Route auswählen können. Wenn ich also keine bestimmte Zeile auswähle
, selbst
das Objekt unserer Listenzeile ohne hat
selbst
das Objekt unserer Listenzeile ohne
eine bestimmte Zeile ein paar Dinge, die wir hier damit machen
können. Eine von denen
, die ich
ständig benutze , ist diese Zähleigenschaft. Dies wird
uns also die Anzahl
der Zeilen in unserer Tabelle angeben. Ich glaube nicht, dass wir das
tatsächlich ausführen können
, weil dies ein Wert ist. Es ist also keine Aktion, dass
diese Codezeile ausgeführt wird. Und so siehst du, dass es hier einen Fehler
auslöst. Stattdessen kann ich Debug-Print sagen, weil dies ein Wert sein
wird. Also nehmen wir
diesen Wert einfach an und drucken ihn hier unten in unser unmittelbares
Fenster aus. Wenn ich das ausführe, können
Sie sehen, dass es
die Anzahl der
Listenzeilen in dieser Tabelle ausdruckt , was uns sagt, dass es 25 ist. Also kommen wir hierher,
um zu überprüfen, ob ich
diese Zellen hervorhebe , erweitern Sie dies. Sie können sehen, dass die Zählung 25 ist. Das benutze
ich also ständig, um zu wissen,
wie viele Zeilen es in unserer Datentabelle
gibt. Und wieder ist das wirklich hilfreiche,
was es
hier für uns tut , dass es nicht so
etwas
wie unseren Header macht , diese Informationen hier drüben. Wenn unsere Daten also nicht nach oben
stehen, kann
es
für uns schwierig sein zu wissen wie viele Zeilen es sehr schnell
gibt. Und so haben wir jetzt eine einfache
Möglichkeit, das herauszufinden. Jetzt mit diesen Informationen, genau wie zuvor, wo wir eine Schleife verwenden und ich als Index verwenden. Wir können sagen, dass ich gleich eins bis n ist, bevor wir einfach eine große Zahl
hier
platzieren und wir würden
herauskommen , wenn wir
das Ende der Liste erkennen. Wir müssen
das nicht mehr tun, denn anstatt erkennen zu müssen,
wo die Tabelle endet, sagt uns
unser Tabellenobjekt
bereits , dass
ich der Zähler sein werde, wenn wir die Zeilen hier
durchlaufen das geht durch jede Reihe. Und wir können sagen, dass es von
eins zur Anzahl der Zeilen geht. Also werde ich eine Tabelle sagen, die Zeilen
auflistet, dieses Konto. In genau diesem Beispiel ist
unsere Zeilenanzahl 25, also
werde ich gleich eins bis 25 sein. Und dann können wir unseren I,
unseren Indexzähler verwenden , um jede dieser Zeilen zu
durchlaufen. Und wir
müssen vorher nicht mögen, versucht zu erkennen
, wann die Daten enden. Weil wir wissen, wann
die Daten enden, enden sie. Wenn wir zur letzten
Reihe der Zeilenzahl kommen. Ich höre etwas, von dem ich nicht
sicher bin, ob ich in
den letzten Lektionen gesprochen habe , ist, dass ich diese Option
Explizit oben habe. Was das bedeutet, wenn
Sie es sehen, ist, dass ich keine Variable verwenden
kann,
bevor ich sie deklariere. Also wenn ich so etwas mache, als würde ich
einfach drucken. Also kannst du sehen, dass es diese Schleife durchläuft und hier von eins auf 25 geht. Und ich habe versucht, das zu machen. Es heißt, dass Variable nicht definiert ist. Das liegt daran, dass ich
Option Explizit hier oben habe. Wenn ich das entferne, bedeutet
das im Grunde, dass ich
Variablen verwenden kann , ohne sie zuerst
zu deklarieren. Obwohl ich ich
verwende und ich nicht deklariere, lässt mich die Variable diesen Code ausführen. Einige Leute, einschließlich mir selbst, verwenden
gerne Option Explizit,
da sie sicherstellen , dass Sie
Ihre Variablen korrekt verfolgen. Also muss ich erklären, ich hier oben als Ganzzahl gebe. Ich werde
das eigentlich lang nennen, was im Grunde nur
eine ganze Zahl ist , die mehr Inhalt
enthalten kann. werde ich in
diesem Video nicht eingehen. Aber ich bin im Grunde wie
eine ganze Zahl. Es ist eine Zahl. Während ich das durchführe, kannst
du sehen,
dass wir hier
jede Reihe durchlaufen und
wir gehen durch den Zähler und er
sollte bei 25 aufhören. Sie sehen also, dass es hier bei 25 gestoppt wurde weil es weiß, wie viele
Zeilen in unserer Tabelle enthalten sind. Jetzt können wir diesen
Index nehmen und tatsächlich etwas damit
machen,
anstatt den Index auszudrucken. Also können wir so etwas tun
wie unseren Tisch nehmen. Wir haben unsere Zeilenliste. Wenn Sie sich erinnern, hatten wir unseren Index, in dem wir eine bestimmte Zeile
auswählen können. Und wir werden nur sagen, dass ich keine Immobilie auswählen muss. Stattdessen müssen wir ein
Bereich sein, bevor wir auswählen. Wenn wir hier durchschauen, kommen
wir hier hin
und wir haben eine Reihe. Und dann, während wir uns schleifen,
werde ich zwei. Und jetzt
durchlaufen wir alle unsere Reihen. Und wir haben etwas
Ähnliches gemacht. Aber auch hier
müssen wir
das Ende des Tisches nicht erkennen . Es weiß nur, dass die
Daten nach Zeile 25 enden.
55. ListObjects – ListColumns und Row: Jetzt, da wir
sehen, dass wir
alle Zeilen dieser Daten durchlaufen können , möchten wir oft
die spezifischen Daten in
den Spalten erhalten die spezifischen Daten in
den , während wir jede Zeile
durchlaufen. Das Durchschleifen jeder Reihe ist normalerweise nicht das,
was wir erreichen wollen. Normalerweise möchten wir die Daten
innerhalb der Tabelle
auswerten , während wir
die Zeilen durchlaufen. Wie wir das tun können, ist, wenn
wir jede Zeile durchlaufen, wir müssen uns auch die Spalte
ansehen , die wir uns ansehen
möchten. Wir werden uns die Daten in einer bestimmten Spalte ansehen, während wir diese Zeilen
durchlaufen. Lass uns das nochmal machen. Wir sehen hier, dass
wir Reihe eins haben, und das ist Reihe eins. Und dann sind wir nur
für die Demonstration, schauen uns den Bereich an
und wählen ihn damit wir sehen können, mit welcher Zeile
wir arbeiten. Wenn Sie diesen Bereich verwenden, können
Sie tatsächlich etwas Ähnliches
tun wo
wir einen Index
in den Bereich setzen, wenn Sie hier
Klammern setzen
und den
Buchstaben drei eingeben . Dies ist also eine ganze
Reihe von Informationen. Und wenn ich
drei in die Reichweite lege, schauen
wir uns an, was dort passiert. Sie sehen, was es
tut, ist, dass es
dies als Informationszeile nimmt dies als Informationszeile und dann ist der Bereich
drei, was 123 bedeutet. Also kommen wir
zur dritten Spalte, und jetzt beginnen wir, Daten speziell
in einer Spalte zu
betrachten , während wir die Zeile
durchlaufen. Um also eine Vorstellung davon zu geben, wie
wir die Daten hier betrachten können, legen
wir einen
Debug-Druck ein und
bereichern erneut den Wert von drei Punkten. Hier wählen wir es aus.
Wir brauchen das nicht wirklich. Es ist nur für eine visuelle
Demonstration dessen, was passiert. Aber lassen wir das hier drin. Und dann
werden wir
den Wert ausdrucken ,
der in Reihe liegt, was
wir durchlaufen. Und dann drucken
wir einfach
den Wert von Bereich drei aus , was wirklich
die dritte Spalte ist. Sie sehen also, dass wir
diesen Wert 20 hier haben. Lassen Sie mich das hier rausräumen. Hier sind 20. Es hebt zuerst die
Zelle hervor, also 50. Jetzt erwarten wir,
50 hier zu sehen, weil wir dieser Reihe sind und jetzt das dritte
Element dieser Zeile
bekommen. Also sind wir bei 501116. So wie wir es erwarten, und wenn wir hier durchschauen, gehen
wir ganz nach
unten und wir haben 115020. Und jetzt betrachten wir
die Daten wirklich konkret, während wir diese Tabelle
durchlaufen. Erweitern Sie dies ein wenig,
damit es einfacher zu lesen ist. Aber wir haben dieses Problem
, das ich zuvor erwähnt habe, nämlich dass ich diese drei hier
nicht gerne verwende. Denn wenn ich versuche,
etwas zu tun , um den Preis zu betrachten, füge ich hier eine
neue Spalte hinzu. Wir haben dieses Problem, bei dem der
Preis nicht mehr drei beträgt. Jetzt ist es Zählung für. Und wenn wir dann
viel Code geschrieben haben, müssen
wir
hierher zurückkommen und diese
drei in eine Vier ändern oder eine Reihe von Dingen werden nicht richtig
funktionieren und wir werden vielleicht nicht merken, bis
ein Fehler auftritt. Jetzt lösche ich
dies und zeige Ihnen eine andere Eigenschaft, mit der
wir dies lösen können. Ich weiß, dass die Dinge hier
etwas kompliziert werden. Wenn Sie es mit mir ertragen können, kann
dies nur ein
Proof-of-Concept sein und nicht
etwas, von dem ich unbedingt
erwarten würde , dass Sie auf diesem
Niveau in unserer Klasse vollständig absorbiert werden. Wenn ich hierher komme und bevor
wir überhaupt in unsere Schleife kommen, wir uns unsere Tabelle an
und schauen uns unsere Listenspalten an. Und wenn Sie sich erinnern,
können wir unseren Preis nennen. Und lasst uns einfach hier drüben innehalten. Ich führe das durch. Wir kommen hierher, wir wählen
unsere Preisspalte aus. In unserer Preisspalte werden
wir viel
debuggen, wie wir
diese Zeilenliste haben. gebe mir einen Fehler
, weil ich
diese Klammern verlasse ,
bevor die Zeilen fertig sind. So wie wir diese Eigenschaft der Anzahl der Listenzeilen haben. Wir können unsere
Tabellenlistenspalten nehmen, die Preisspalte, die genau hier
ist. Und dann sag Index. Wenn wir wieder hierher kommen, gibt count einen Wert für die
Anzahl der Listenzeilen zurück. Wenn ich den Index
der Preisspalte sage , gibt
es mir drei. Wir können es nicht sehen, weil ich das klären
muss. Wenn ich das ausführe, sehen Sie, dass der Index der
Preisspalte drei ist. Jetzt, da wir das tun, wenn ich hier eine Spalte
einfüge und diese exakte Codezeile
erneut
ausführe, treffe ich F acht. Jetzt weiß es, dass der Index
unserer Preisspalte vier beträgt. Im Grunde genommen
nehmen wir unseren Aufruf nach
dem Spaltennamen aus
der spezifischen Spalte heraus nach
dem Spaltennamen aus
der spezifischen und
finden dann den Index davon. Wenn wir also diese
ganze Aussage
hierher nehmen , kopiere ich sie. Und wo es eine Drei gab, füge
ich diese Aussage ein
, die gerade vier ist. Lasst uns versuchen, das zu machen. Ich werde
das klären, damit wir
es wieder sehen können , aber das war 16. Lass uns das nochmal machen. Du siehst, das sind drei, also wählt es immer noch das
Falsche aus. Wählen Sie unsere dritte Spalte aus. Ich kann das Gleiche hier machen. Ersetzen Sie
diese drei durch diese gesamte Aussage,
die wir hier oben haben, die uns die
Nummer der Preisspalte gibt. Wir erwarten also,
dass es sich in denselben Klammern befindet, wo
ich die drei ersetzt habe. Jetzt sind wir hier drüben, 16202050. Und die Magie daran
ist jetzt, wenn
ich so etwas wie diese Spalte
lösche, jetzt ist der Preis der dritte Index. Und ich führe das weiter. Hier sind wir wieder und alles
funktioniert richtig. Es weiß wo der
Preiskolumnist ist. Und ich weiß, wenn wir anfangen,
diese Aussagen zusammen zu verschachteln, wird es etwas
schwieriger zu folgen. Oft
schreibe ich es so nur um Codezeilen zu speichern. Aber nur als Beispiel. Aber das tut wirklich im Grunde genommen die Preisspalte. Also mache ich hier eine neue
Variable. Offensichtlicher, was hier
vor sich geht. Ich werde mitverwenden und
sagen, dass der Preisindex gleich ist. Und dann nimm diese
Aussage hier, die herausfindet,
welche Indexnummer die Preisspalte ist. Anstatt
diese verschachtelte Anweisung mit all diesen Perioden
und Eigenschaften hier zu haben, ist
der gewünschte Bereich
der Preisspaltenindex. Dies könnte also eine einfachere
Art sein, darüber nachzudenken,
unabhängig davon, ob Sie diese Variable
als Zwischenhändler verwenden möchten
oder nicht , oder Sie möchten sofort zwei Anweisungen
miteinander
kombinieren. Und wir ersetzen
die Spaltennummer durch eine Variable und
erkennen sie dann basierend auf dem
tatsächlichen Namen der Spalte. Um Ihnen zu zeigen
, dass dies immer noch
funktionieren wird , die Preise Spalte drei. Der Preisspaltenindex ist drei. Und jetzt, wenn wir jede Reihe
durchlaufen, schauen
wir uns den
dritten Gegenstand in dieser Reihe an. Ein Blick auf dieses 5011202050.
56. Excercise – Bestimmte Zeilen löschen: Jetzt, mit den Informationen wir aus den
letzten paar Videos gelernt haben, möchte
ich hier eine echte
Übung machen. Beginnen wir also,
eine tatsächliche Aktion zu ergreifen und zu
sehen, ob wir mit dieser Datenbank
etwas über
die Konzepte machen können mit dieser Datenbank
etwas über , die wir
über das Listenobjekt gelernt haben. Was ich mir
einfallen werde, ist, dass wir diese
Zeilen durchlaufen werden und wir Reihen sein
, in denen der
Preis entweder 1146 beträgt. Also haben wir diese Daten
, die ich hier kopiert habe. Es sind viele der gleichen
Daten, aber wir haben diese Werte, die in den Daten
1611 sind. Verwenden wir die
Konzepte, die wir
gelernt haben , um diese Aufgabe auszuführen. Werfen wir einen Blick auf
unseren Code hier und räumen etwas davon auf. Das sind also ein paar
Sachen, die wir nicht brauchen. Fangen wir einfach bei
Null an und beginnen damit, unseren Tisch
zu deklarieren. Das ist also das ganz
Grundlegende, was wir brauchen. Wir haben unser Tischobjekt hier und wir
machen nichts damit. Bei unseren vorherigen Videos können
wir uns daran erinnern, dass wir jede Zeile durchlaufen
möchten und dann werden wir
jede Zeile analysieren , während wir sie durchlaufen. Ich sage, dass ich gleich eins ist. Tabelle, die
Zeilen auflistet, Punktzahl. Gehe zum nächsten I. Dies ist im Grunde eine Zusammenfassung hier werden wir unsere Listenzeilen
machen, unseren Index I, der sich für jede Schleife
ändert. Wählen wir sie einfach aus, um
unsere vorherigen Lektionen zu wiederholen. Wir werden hier durchgehen. Und
dann schauen
wir uns hier jede Reihe an. Ich
höre das einfach hier auf. Also wissen wir, wie das geht. Jetzt wollen wir uns unsere Preisspalte
ansehen. Also werde ich das mit
der Zwischenmann-Variable machen , nur
um uns deutlicher zu machen, da ich weiß, dass dies
eine Trainingsklasse ist, werden
wir Preisindex sagen, wie wir
im letzten Video gezeigt haben. Und wir werden das ein Long
nennen, was wiederum einer Ganzzahl sehr
ähnlich ist. Aber ich benutze im Allgemeinen nur eine lange Zeit, wenn ich eine Nummer
verwende. Sagen Sie Christus, rufen Sie
gleich unsere Tabelle und dann unsere Listenspalte und dann den Preisindex an. In diesem Fall wird nur die Nummer drei
zurückgegeben,
da der Preis die dritte
Spalte in unserer Tabelle ist. Und jetzt wollen
wir nicht die gesamte Zeile auswählen. Wir möchten uns gezielt
den Preisspaltenindex ansehen. Nach Range schauen
wir uns hier nur eine bestimmte Zelle in der Zeile an
und nicht die gesamte Zeile. Lasst uns das nochmal durchgehen. Und jetzt siehst du, was wir hier auf unseren Preis
schauen. Klicken Sie hier durch. Ich höre das noch mal auf. Nehmen wir
genau das Gleiche an, aber anstatt es so auszuwählen, wie wir
es hier tun, werden
wir den Druck debuggen. Wir werden, es wird
diese linke Seite packen und wieder, es
auswählen, wir machen es
einfach. es auf der linken Seite zu
visualisieren, Sie nicht
jede Zelle hier auswählen,
wenn
Sie tatsächlich viel Code
ausführen Um es auf der linken Seite zu
visualisieren, müssen Sie nicht
jede Zelle hier auswählen,
wenn
Sie tatsächlich viel Code
ausführen. Das zeig ich dir in einer Sekunde. Und anstatt es auszuwählen, schnappte
ich mir alles vor der Select-Anweisung hier drüben. Und ich gebe
einfach Wert ein. Und das wickeln wir in
unseren Debug-Print ein. Also sollten wir dieses Zeug hier
rüber in unser
unmittelbares Fenster
schicken . Wir sehen 1620. Wir fassen meistens nur zusammen, was wir in unserem letzten Video gemacht haben. Nur um Ihnen zu zeigen, was
ich erwähnt habe ist, wenn ich
diese Zeile auskommentiere , damit wir nicht jede Zelle auf
der Benutzeroberfläche
auswählen, dann wird das immer noch funktionieren weil das ganze sagt
nicht etwas wie zeigt uns den Wert der ausgewählten
Zelle an. Und das ist eine sehr häufige
Sache, die Leute tun wenn sie zum ersten Mal mit Excel beginnen und Makros ist, dass
sie denken, dass
alles, was Sie tun, auf der Benutzeroberfläche passieren muss . Sie könnten also
etwas tun, wie wählen Sie die Zelle aus und zeigen mir dann den
Wert der ausgewählten Zelle an. Das
müssen wir hier nicht wirklich machen. Weil wir nicht
nach dem Wert der ausgewählten
Zelle suchen. Wir müssen
eigentlich nichts
auf der Benutzeroberfläche auswählen und es wird immer noch funktionieren. Also komm her und
du siehst, dass wir immer noch unsere ausgewählte
Zelle verlassen. Es spielt wirklich keine Rolle wo. Und unser Code
läuft immer noch hier, 501116. Es sieht also aus, als wären
wir hier drüben. Ich werde das
noch größer machen, nur damit es für uns
einfacher ist , hier
mehr von dem Code zu sehen. Lasst uns jetzt an
unserer eigentlichen Übung arbeiten. Wenn wir nur
die Preise von 1611 löschen möchten, benötigen
wir eine if-Bedingung. Wir müssen hier nach einer
bestimmten Bedingung suchen. Wir wissen, dass wir den Preis haben. In der Tat werde ich dies expliziter
machen. Ich mache das nicht immer, aber je mehr Variablen
wir hier erstellen, wird
es die
Art von
Zwischenhändlern schaffen, um
es einfacher zu verstehen. Ich denke, wir werden Preis doppelt
sagen. Double ist nicht nur eine Zahl. Es ist eine Zahl, die Dezimalzahlen
zulässt. Deshalb
benutze ich hier ein Double. Weil der Preis, wir
verwenden sie gerade nicht. Alles ist 0 Sinn. Aber wenn wir bei
diesen Preisen tatsächlich Sinn hätten , würde dies ermöglichen Dezimalzahlen in dieser Variablen
gespeichert werden können. Jetzt werden wir es sagen. Anstatt nur den Preis
auszudrucken, wo ich sage, dass
der Preis gleich ist. Und dann wählen wir das Gleiche aus, was
wir ausdrucken, was nur ein
Preis in dieser Reihe ist. Dann werden wir
sagen, ob der Preis gleich ist, machen
wir zuerst nur 11. Dann. Und lasst uns das
tatsächlich machen. Wir drucken die Nachricht
aus. Der Preis ist markiert. Nehmen wir diese Botschaft sogar an. Wir werden den Index I
anhängen,
der wieder unser Zähler ist, in
welcher Zeile wir uns befinden. Wir werden alle Preise
durchlaufen. Und wann immer der Preis 11 ist, senden
wir
diese zusätzliche Nachricht hier in unser
unmittelbares Fenster. In der Zwischenzeit schalte ich
diese andere Nachricht
einfach aus , damit wir hier
nicht zu verwirrt werden. Und nur für unsere Zwecke wähle
ich wieder
eine Zelle aus, damit wir sehen, mit welcher Zeile
wir arbeiten. Es gab mir eine Nachricht hier. Wenn ich dachte, dass es hier
ein Problem gibt. Und das liegt wirklich nur daran, dass ich mich
nicht an
den Fuß erinnert habe, das Ende. Wenn ich genau hier habe ich das Wort. Wenn. Ich ziehe hier durch, wir schauen uns die erste Reihe an. Der Preis ist nicht 11, also sehen Sie, dass er
bis zum Ende
der Aussage überspringt . Führe diese Zeile aus. Arbeite uns nach unten. Okay, jetzt sind
wir hier drüben im Handy, was 11 sein wird. Wenn wir also unseren
Preis überprüfen, sind es 11. Wir haben eine Abrechnung eingegeben, der Preis ist markiert und wir sehen
Rom Reihe 512345. Da wir diese Daten kopieren, sind
sie tatsächlich in einem
Bitmuster. Also denke ich, das
wird Reihe zehn sein. Und jetzt haben wir einen Preis von 11, würden einsteigen und
jetzt sind wir in Reihe zehn. Jetzt fängst du
an zu sehen, wie
wir das schaffen werden. Jetzt wird in unserer
if-Aussage sagen, oder der Kurs ist gleich 16. Und tatsächlich werde ich das einfach den ganzen Weg
durchlaufen. Ich drücke F5, was dem Klicken auf
diesen Play-Button hier entspricht. Und wir werden das ganze Ding
durchlaufen. Welche Zeilen haben wir markiert? Wir haben 5610111516 markiert. Das sieht so aus, als
würde es stimmen. Also haben wir fünf und dann
gleich danach ist 16. Und dann
wird
sich dieses Muster immer wieder wiederholen . Sehen Sie, wir machen die Erkennungslogik, nach der
wir suchen, nämlich wir finden
jede einzelne Zeile heraus , dass der Preis 11 oder 16 ist, und wir erhalten hier den
Index dieser Zeile. Ich werde hier absichtlich einen Fehler
machen, ich gemacht habe
, als ich mit diesem Prozess
angefangen habe. Etwas sehr ähnliches,
nämlich die Reinigung von Reihen. Nachdem wir die Zeile markiert haben, möchten
wir diese gefundene Zeile nehmen, nämlich Zeile I. Sobald wir sie markiert haben, sage
ich eine Tabelle,
die Zeilen I auflistet. Und was wir
tun möchten, ist sie zu löschen. Hier gibt es keine Entdeckung. Das liegt daran, dass ich einen Tippfehler gemacht habe. Ich vermisse T hier drüben. Jetzt, da ich das richtige Objekt,
das ist Listenzeile, eingegeben habe, bekomme
ich jetzt diese Optionen was ich
damit machen kann, nämlich löschen. Mal sehen, was hier vor sich geht. Ich glaube nicht, dass das richtig funktionieren
wird. Lassen Sie mich das eigentlich klären. Ich glaube,
da ist etwas passiert, das habe ich nicht wirklich bemerkt. Fangen wir also noch einmal damit an. Wir schauen uns die erste Reihe an. Wir sind übersprungen. Zweitens, wir überspringen. Es sieht so aus, als hätte
ich eine Zeile gelöscht, denke ich, weil ich
den vorherigen Code
laufen ließ . Aber lasst uns einfach
nachverfolgen, wo wir hier sind. 50. Das ist es nicht. Jetzt haben wir Preis 11. Jetzt denke ich, dass wir unsere if-Aussage
eingeben werden. Weil ich eine Zeile lösche, ist
alles verschoben. Jetzt sind wir also in Reihe vier. Und dann werden wir
diese Zeile löschen, seit sie 11 ist. Und wenn ich es lösche, ist
diese Zeile weg. Und das Problem, das ich hier sehe, und Sie bemerken vielleicht
schon, dass wir uns in Reihe vier befinden. Aber als wir hier rübergehen, um
fünf zu rudern , hat sich alles nach oben verschoben. Und da sich alles nach oben
verschoben hat, der Streit hier drüben, ist
das 16 Dollar jetzt Zeile vier,
weil sich alles nach oben verschoben hat. Wenn ich jetzt renne, um den nächsten Preis zu
überprüfen, sind
wir bei 20 und unser Preis von 16 für Zeile vier
wird nicht bewertet. Dies sollte auch gelöscht werden. Aber da wir die
Zeile dafür gelöscht haben, geht oben und dann sind wir bereits in Zeile fünf
gegangen. Wir
überspringen diese eine Reihe. Jedes Mal, wenn wir eine Zeile löschen, überspringen
wir im Wesentlichen eine
Zeile von Informationen. Jetzt hinterlässt das eine 16 und es
zeigt sich hier wirklich, was gut ist, dass
es entlarvt. Das Problem ist, dass wir zwei Zeilen hintereinander löschen
sollen. Da wir
die Zeile
immer überspringen , nachdem wir eine gelöscht haben, zeigt sie an, dass die Regel nicht
korrekt ausgeführt wird. Also machen wir das
Gleiche hier wieder, wo wir uns Zeile A ansehen. Zeile acht wird gelöscht. 16 bewegt sich in Reihe acht. Und dann werden
wir in der nächsten Schleife bereits in Reihe neun
sein. Und so wird diese 16 nie ausgewertet, da
sie einen
nach oben steigt. Das ist also unser Problem. Eine sehr einfache Möglichkeit
, das zu lösen , ist, nachdem wir eine Zeile gelöscht
haben, können wir einfach sagen, dass ich mir minus eins
entspricht. Was das im Grunde bedeutet,
ist, dass wir löschen werden. In diesem Fall
löschen wir Zeile acht, aber dann werden wir mich
zurück bewegen , um der
Wert von sieben zu werden. Wenn wir dann durch
diese Linie kommen und i1 erhöhen, befinden
wir uns wieder in Reihe acht. Wenn wir also eine Zeile löschen, wissen
wir, dass alle Daten
, die wir noch
auswerten müssen , eine Zeile
verringern werden. Und wir werden
im Grunde einen Schritt sichern. Und dann werden wir erneut
Zeile acht auswerten ,
was 16 wäre. Mal sehen, ob das funktioniert. Ich höre die
ganze Sache auf. Fügen wir unsere 11 wieder nur um
unsere Informationen zurückzuspulen. Ich füge diese Daten hier nicht hinzu. Also werde ich einfach 11 für
unsere Zwecke hier
stellen , nur
für diesen Test. Also unterstützen wir hier, wir haben 1116 auf einmal. Probieren wir das also aus. Ich werde hier durchlaufen. Wir sind endlich am 11. Wir werden 11 löschen. Das sind vier und das Problem ist dass
wir
das nächste Mal die fünf hochspringen, wir werden
unseren Indexwert I sichern, eins. Also bin ich jetzt drei. Wenn es zur nächsten
Schleife geht, wird es vier. Jetzt sind wir am 16. wieder hier. Und dann nennen wir es 16
und wir löschen es. Also haben wir für
und dann wieder markiert , denn 11 war Reihe vier und dann 16 war auch eine Reihe vier und
beide wurden gelöscht. Jetzt sind wir immer noch auf vier denn jedes Mal
, wenn
wir eine Zeile löschen, sichern wir einen Index. Und das große daran
ist, dass wir uns mit dem Thema
eines komplizierteren Algorithmus befassen . Und hier wird das Wachstum wirklich sein ,
wenn wir
Automatisierung und
Programmierung lernen und Programmieren im Allgemeinen ist ein Großteil
des Tutorials in diesem Kurs lernt die verschiedenen Funktionen
, die wir ausführen können. Die sehr spezifischen Codezeilen. Aber der komplizierte
Teil und woher die wahre Macht kommt,
ist, wie wir Algorithmen
entwickeln können ,
wie wir
die Aktionen dieses Codes zusammenfassen können, um das auszuführen,
was wir wollen. Also lasst uns das alles ausführen. Wir werden das
beenden. Und hier ist ein anderes Problem. Wir haben hier erfolgreich
alle Preise von
1116 gelöscht , aber wir haben einen Fehler getroffen. Mal sehen, was dieser Fehler ist. Obwohl es so aussieht, als hätten wir alles richtig
abgeschlossen. Wir haben einen Fehler,
weil ich 16 bin, also suchen wir nach Zeile 16. Aber wenn wir
all dies hier hervorheben, können
wir sehen, dass wir
nur 15 Reihen haben. liegt daran, dass wir
diese Schleife bis zum
Ende der Zeilenanzahl ausführen , die 25 war, wenn Sie sich
an unser letztes Video erinnern. Aber da wir Zeilen löschen, sinkt
die Anzahl der
Zeilen. Aber dieses Ding
denkt immer noch, dass diese Schleife von eins auf 25
laufen soll . Und wenn wir Zeilen löschen, schrumpft und schrumpft
diese Tabelle. Und wo diese
Pads Fleisch haben und
einen Fehler verursachen , denkt es, dass sie die 25 laufen
müssen, sie erreicht 16. Aber wir haben so viele
Zeilen gelöscht, dass es keine Zeile 16 gibt. Also lasst uns einfach
damit aufhören und wir werden das ganz
anders
machen. Dies war also die
Lösung, um das Problem der Zeilenindizierung zu lösen. Und dies wurde eine Lösung erreicht. Ich zeige dir, wie
ich das normalerweise mache. Nur damit ich mich nicht mit diesen Daten
anlegen muss. Ich werde diese Regel ändern. Wir werden die
Preise löschen, bei denen der Preis
20 beträgt , um später
zu diesen Daten passen , damit wir andere Übungen
machen können. Aber im Moment werde ich
dies ändern, um zu löschen, was dem Sprung entspricht. Preise, die 20 sind. Jetzt gibt es Tests, die hier
etwas kleiner sind. Wir werden uns die Daten weiter
ansehen. Dann der Code gleichzeitig. Anstatt
rückwärts zu erhöhen, werden
wir dieses
Problem hier auf einfache und
elegantere Weise lösen. Und es wird auch alle Probleme
lösen bei denen wir alle Zeilen
durchlaufen, aber die Zeilenanzahl nimmt ab. Anstatt von einer
zur Zählung aller Zeilen zu wechseln. Im Grunde genommen gehen wir von einem aus
und gehen die Liste herunter, werden
wir dies rückgängig machen. Wir können tatsächlich mit I beginnen, ist
gleich der höchsten Zahl. In diesem Fall haben
wir 15 Reihen. Wenn wir das noch einmal ausführen, wird
die Anzahl der Zeilen 15 betragen. Ich nehme das tatsächlich und setze es am Anfang. Also bin ich in diesem Fall gleich 15 eins, weil wir
rückwärts 15 runter zählen werden. Wir können das nicht wirklich tun und
das wird einen Fehler verursachen, ich glaube, Lass uns versuchen, das auszuführen. Siehst du, wir sind gerade bis
zum Ende übersprungen ,
keine von dieser Rampe. Das liegt daran, dass wir
explizit sagen müssen , wie
wir Schritte machen werden. Als Teil dieser
For-Schleifen mit dem Index können
wir Schritt minus eins hinzufügen. Und das sagt
, dass
wir in jeder Schleife rückwärts treten werden. Wir werden den Wert von einem
rückwärts treten. Jetzt führen wir das aus und
wir fangen bei Zeile 15. Und dann wählen
wir es aus. Jetzt fangen wir den ganzen Weg
hier unten an und wir werden genau
dasselbe tun. Wir testen die Zeile
und dann löschen wir. Wir müssen also unsere
Rolle hier ändern, wo der Preis darauf hinweist, nur weil wir
nicht dieselben Daten haben. Und wir sehen, dass wir hier überspringen. Jetzt ist unser Preis 20, da wir
von unten nach oben gehen, treten
wir hier ein, wir haben Route 14
markiert. Jetzt ist der nette Teil daran dem wir
beide Probleme auf einmal verkaufen ,
bei
dem wir
beide Probleme auf einmal verkaufen, wenn ich das lösche, 50 wird nach oben gehen, aber wir haben diese Zeile bereits
überprüft. Und wir wissen, dass es keine der Zeilen ist, die wir kennzeichnen möchten. Und wenn ich
das lösche, ist das echt 14. Wir haben kein Problem, dass die Daten unter der von uns
gelöschten Zeile nach oben verschoben wurden. Und wenn wir von Reihe 14 absteigen, müssen
wir die Schiene 14 nicht noch einmal
überprüfen. Stattdessen müssen wir zu 13 gehen. Grundsätzlich ist diese
Anpassung, die wir zur
Lösung dieses Problems vorgenommen haben ,
nicht mehr erforderlich. Wenn wir nun
die nächste Schleife durchlaufen, Zeile 14, gehen wir zu Zeile 13. Und das werden wir noch einmal
überprüfen. Und wir sehen, dass es 20 sind. Und dann wird
diese Zeile gelöscht. Aber wenn es dann von 13 auf 12
geht, wir
hier oben sein und wir
überprüfen immer noch unsere Zeilen
in der Sequenz, obwohl sich die Daten
darunter bewegen, da wir uns
von unten nach bewegen top, wir sind nicht davon
betroffen, dass die Daten unter den gelöschten
Zeilen bewegen. Das ist bis 2020. Und da wir dann rückwärts
gehen, werden
wir bei einem Halt machen. Und wieder
werden wir nicht nach unten gehen, wo sich Dinge ändern
und uns Probleme bereiten. Stattdessen gehen wir nach oben wo die Daten solide sind,
bis wir sie löschen. Und so wird das jetzt
weiter funktionieren und es wird
kein Problem auftreten, bei dem wir, wenn wir alle Daten
durchlaufen , einen Fehler getroffen haben
, weil unsere Zeilenanzahl, lasst uns das ändern
und wir löschen das. Und jetzt sind wir an
dieser sehr einfachen
Liste nur unserer übrig gebliebenen
Zeilen, die wir fehlerfrei
durchgemacht haben.
57. Excercise – Bestimmte Zeilen Lvl2: Jetzt, da wir gesehen haben, wie wir die Zeilen aufräumen
können, möchte
ich hier nur
eine Demo geben, wie kompliziert wir diese Regeln
wirklich
anwenden können , wenn wir sie
zusammenlegen. Auch hier denke ich, dass wir
sehr kompliziert werden, je nachdem wo ich erwarte, dass Sie zu diesem Zeitpunkt in
unseren Lektionen sein werden. Aber ich möchte dies
als Video verwenden, in dem ich einfach
demonstriere , wie leistungsstark diese Automatisierung beginnen
kann. Sie sich also keine Sorgen, dass Sie zu viel
mitverfolgen. Es ist eher ein Proof of Concept. Also habe ich diese Daten hierher genommen
und hier weitere Daten hinzugefügt. Stellen Sie einfach ein paar zufällige Sachen
ein, ein paar Zahlen, mit denen wir
versuchen können, aufzuräumen und einige komplizierte
Regeln zu setzen. Etwas, was ich hier
machen
möchte, ist, dass ich mir nur einen
Blick darauf werfen möchte und wir
das nicht wirklich in unseren Daten verwenden werden. Oft werden wir diesen Datensatz nicht
haben. Aber lasst uns etwas tun wie unseren Preis und wir werden ihn hier mit unserer
Menge multiplizieren. Und ich lege das nur als Referenz
hierher , bevor wir
mit dieser Übung beginnen. Wenn ich diese Zelle hierher ziehe, werden
wir
für all diese Zeilen sehen, ich mache
sie speziell nicht in die Tabelle,
weil wir nur als Referenz
unsere Menge mal unseren Preis nehmen und am Ende haben wir all
diese Zahlen hier drüben. Jetzt, da unsere Zahlen hier drüben, machen
wir uns eine
Übung aus. Wir werden sagen,
Löschzeilen, in denen Menge, Preis ein Vielfaches, Fünf ist. Also haben wir das. Werfen wir einen
Blick auf die Dinge , die ein Vielfaches von fünf wären. Grundsätzlich bedeutet das, wenn man die Zahl durch fünf
teilt, dass man eine ganze Zahl bekommt. Also werde ich
das hier ändern und keinen
Dezimalpunkt wie diesen. Wenn wir hierher kommen, können
wir durchgehen und
sehen, ob es nicht der Fall ist, mal sehen, wir
werden Zeilen löschen die ein Vielfaches von fünf sind. Wie wäre es, wenn wir Zeilen löschen, die kein Vielfaches von fünf
sind? Kein Vielfaches von fünf. Das bedeutet also, dass dieser hier dies
nur als Referenz hervorheben wird. Wir sehen also, dass diese Zeilen hier keine Vielfachen von fünf sind. Also werde ich das nicht
weiter machen. Aber wir sehen nur , dass, wenn es kein
Vielfaches von fünf ist, wenn Sie
Menge und Preis multiplizieren , dies die Zeilen sind, die
wir loswerden möchten. Also
verstecke ich die jetzt einfach. Wir sehen sie uns vielleicht nicht noch einmal an. Ich wollte Ihnen nur
eine Vorstellung davon geben , was
passieren wird, was für
uns hier auf der Benutzeroberfläche unsichtbar sein wird . Aber das ist die Regel, die
wir machen werden. Wir kommen zurück zu
unserem VBA-Code. Wir haben bereits den Code, den wir in der letzten Lektion
geschrieben haben, die die führende ist,
unsere Preisflagge von 20. Stattdessen werden wir hier etwas mehr Logik
hinzufügen. Ich sage „Preis“. Wir werden sagen, dass Quantität gleich ist. Wir müssen
unsere Variable hier deklarieren, dim Quantität, wie wir sie lang oder doppelt
nennen könnten. Ob es sich um eine Dezimalzahl handelt oder nicht, wir haben keine Dezimalzahlen verwendet, aber für den Fall, dass
wir es doppelt
nennen ,
müssen wir den Index
unserer Mengenspalte kennen , wenn wir der Logik
folgen
die wir vorher benutzt haben. Wir werden also sagen, dass der
Mengenspaltenindex gleich ist. Wir können einfach aus
dieser Zeile unterhalb der Tabelle nehmen , in der Spalten aufgeführt sind. Quantität, eigentlich
das ganze Wort heraus. also daran, dass ich ihn
gefragt habe, wann er
das Wort Dim hier geschrieben hat . Also erklären wir es gerade noch. Wir erklären es hier nicht. Entschuldigung, wir
setzen nur einen Wert oder deklarieren ihn hier nicht. Mengenspaltenindex sollte also sein, Preis sollte drei betragen. Wenn Sie diese Informationen
hier verwenden , wo die Menge gleich ist. Und wir werden
diese Informationen hier mitnehmen. Und dann werden
wir anstelle des
Preisspaltenindex nur nach dem Index der Mengenzählungen
suchen. Also kriegen wir
den Preis, wir kriegen die Menge. Und dann werden wir danach
suchen, dass wir es einfach Produkt nennen, was die
Multiplikation der beiden ist. Wir nennen das ein Double. Auch. Möglicherweise stellen Sie fest
, dass ich
mehrere Variablen in einer Zeile deklarieren kann . Das mache ich also hier. Sie können es mit
Cava trennen und ich
muss den Dim Call Out nicht mehr benutzen. Und ich kann mehrere
Variablen mit einer Zeile deklarieren. Das ist es, was du mich hier machen
siehst. Das Produkt ist also ein Double. Ich werde sagen, dass das Produkt dem Preis mal der Menge
entspricht. Was wir uns jetzt
angeschaut haben, als wir
früher beschrieben haben, ist weder der
Preis noch die Menge. Wir möchten sehen, ob das Produkt, das die
Multiplikation der beiden
ist, durch fünf teilbar ist. Du kannst das suchen. Dies ist eigentlich
ein anderer Begriff
, der Mod Five ist, überprüft
, ob es sich um ein Vielfaches von fünf handelt oder
nicht, im Grunde
dasselbe tut, was wir vorher manuell gemacht haben. Was sieht, dass
wenn man es teilt, gibt es einen Rest gleich 0. Das kriegt also
den Rest. Wenn Sie das Ding
links durch den
Wert auf der rechten Seite teilen . Wenn wir das durchmachen, probieren
wir das aus. Wir heben die
ersten paar Zeilen hervor, damit wir einen Blick darauf werfen
können, ob unsere
Positionsvariable für Erwartungen hier nicht definiert ist. Das liegt daran, dass ich diese Variable nicht
deklariert habe. Also komme ich her. Und so haben wir jetzt unseren
Preisspaltenindex und unsere Mengenspalte konvex. Lass uns das laufen und sehen,
ob es reibungslos läuft. Unser erster Versuch hier, oh, ich habe vergessen, dass wir
von unten nach oben gehen. Was im Grunde
bedeutet, dass es für uns
schwer sein wird zu sehen,
was hier vor sich geht. Also lasst uns unsere
Regel sehr schnell machen. Nur damit wir aus
der anderen Richtung sehen können, von unten nach oben, welche
Reihen gehen werden. Schnappen wir uns einfach ein paar hier. Wir wollen also, dass Vielfache von
fünf bleiben werden. Alle diese Zeilen
werden also gelöscht. Und dann erwarten wir, dass
diese Zeilen ebenfalls gelöscht
werden, da sie
keine Vielfachen von 5335 Tausend sind. Werfen wir einen Blick auf
dieses Produkt mod 549. Wir sehen diese 49 hier, während wir uns unsere Produkte ansehen. Das funktioniert also richtig. Und dann überspringen wir es. Eigentlich hat das umgekehrt geschrieben. Mod Five ist gleich 0
sagt hier geben. Wenn es sich um ein Vielfaches handelt, wollten
wir diejenigen löschen, die kein Vielfaches von fünf
sind. Also lasst uns es von
gleich zwei ändern ist es nicht. Fangen wir hier von vorne an.
Ich höre damit auf. Lass uns das laufen lassen. Wir sind sieben
Mal wieder hier sieben ist 49. Product Mod Five ist
kein Vielfaches von fünf. Und jetzt sind wir hier drin. Wir haben Zeile 36 markiert und dann löschen
wir sie. Oder noch einmal Produkt, 76,
löschen, löschen, löschen. Und dann erreichen wir jetzt
unsere erste Reihe, in der wir erwarten, dass unser Produkt hier ein
Vielfaches von 533 ist. Und dann springen wir aus. Also
überspringen wir diese Zeilen hier, hängen eine andere Route auf
und löschen sie. Und ich werde einfach spielen und all das durchlaufen. Sehen Sie, wir haben unsere
Zeilen gelöscht, in denen das Produkt
der Menge und des Preises
kein Vielfaches von fünf ist. Ich wollte dies nur
als Demo zeigen , wie man
diese Regeln zusammen schichten kann. Und natürlich können die
Prozesse, die wir programmieren
können , viel komplizierter werden
als diese, wie wir es brauchen.
58. 2.12 Daten in Bewegung hinzufügen Zeile mit ListObject: In unseren letzten Videos haben wir unsere
Namentabellen und unser Listenobjekt durchgegangen. Dies war also ein kleiner Umweg von dem, was wir zuvor
erstellen, nämlich dieses Kaufformular, das Daten von
einem Eingabeformular in eine
Datentabelle hier verschiebt . Jetzt, da wir uns mit der Interaktion mit
diesem Listenobjekt
vertraut gemacht haben , bauen
wir dies wieder in unser Kaufformular ein und
sehen, wie wir sicherstellen können , dass unser Kaufformular
weiterhin Daten hinzufügt von dieser Registerkarte bis zu unserer
Datentabelle hier drüben. Lassen Sie uns das zuerst bereinigen und
etwas kleiner machen, damit wir
die Daten einfacher sehen können. Ich klicke mit der rechten Maustaste
hier, lösche Zeilen und wir erstellen nur eine kleinere Tabelle damit wir das nicht
alles auf einmal sehen müssen. Jetzt kommen wir wieder her. Lassen Sie uns hier ein paar Zahlen ändern, nur damit wir uns etwas
anderes ansehen und sehen
können, ob wir es dem anderen Tab hinzufügen können. Zeile wurde hinzugefügt. Wir kommen hierher
und wir sehen
, dass der Code , den wir zuvor für
diesen Button geschrieben haben ,
immer noch hier funktioniert. Das ist also interessant
, weil wir zu unserem Code für den Button
zurückkehren. Ich klicke auf die Schaltfläche
Entwickler und Code anzeigen. Dies ist der Code, der ausgeführt wird,
wenn wir auf diese Schaltfläche klicken. Und wir haben
diese Subroutine überhaupt nicht aktualisiert. Basierend auf allen Aktualisierungen, die wir bezüglich
unseres Listenobjekts vorgenommen haben. Wir haben unsere Validierung
von den vorherigen Videos und wir haben unsere Add-Line-Logik
aus den vorherigen Videos. Wenn Sie sich diese ansehen, werden
Sie sich daran erinnern, dass
die Funktionsweise nicht das Listenobjekt verwendet, das wir in
den letzten Lektionen durchgegangen sind. Aber wir verwenden eine linke obere Zelle der Daten,
die als
Tabellenkäufe bezeichnet werden, und verwenden
diese als
Anker, damit wir beide Seiten gleichzeitig
sehen können. Hier. Wir benutzen das als Anker. Wir zählen
hier drüben
nur eine große Zahl für unsere Schleife weil wir nicht wissen,
wie groß diese Daten sind. Und wie wir bei
unserem Listenobjekt gesehen
haben, müssen wir das nicht mehr tun,
wenn wir das Listenobjekt verwenden. Und wir zählen den ganzen Weg nach unten, bis wir
unser nächstes Leerzeichen sehen, das genau hier ist. Und wenn wir unser nächstes Leerzeichen sehen, haben wir das
als unsere nächste neue Zeile markiert. Und dann fügen wir unsere Informationen
in die nächste neue Zeile ein. Die ganze Logik, die wir
vorher hatten, funktioniert also immer noch, aber es ist die alte Logik. Es nutzt keinen
der Vorteile dieses neuen Listenobjekts
, das wir erstellt haben, diese Namentabelle auf
dem Excel-Blatt. Und wir verwenden diesen
Anker immer noch und zählen nach unten, finden die nächste neue Zeile und fügen
dann die Informationen hinzu. Eine Sache, die ich Ihnen
zeigen möchte, ist, ob wir dieses
Listenobjekt falsch benannte Tabelle
erstellt hätten . Zunächst hätten wir diese Ankerzelle, die
als Tabellenkäufe bezeichnet wird, nicht . Und wir würden diesen Prozess nicht
machen , bei dem wir die Reihen
herunterzählen. Und wenn wir
mit Spalten arbeiten die Spalten
nach rechts
zählen, basierend auf diesem Anker. Wenn wir also zu
Formeln und dann Name Manager hierher kommen , sehen
wir, dass wir
Tabellenkäufe haben , und das ist
dieser benannte Bereich hier. Hier ist unser benanntes Kabel, unser Listenobjekt hier drüben. Lassen Sie uns dies löschen, weil
wir viele Fälle mit diesem Namen,
der Tabelle,
begonnen
hätten , anstatt
diesen Ankerprozess oben links zu verwenden. Jetzt, da wir
diese bessere Methode kennen, kommen
wir hierher
und löschen diese. Ja. Wenn wir jetzt
in diese Zelle klicken, sehen
Sie, dass sie nicht mehr als Tabellenkäufe
bezeichnet wird. Wir werden
erwarten, dass dieser Prozess nicht mehr funktioniert,
denn wie wir gerade gesehen haben, beruht er auf
der Verwendung dieses benannten Bereichs. Wenn wir also darauf klicken, denke ich, dass
es nicht herausfinden kann , was das jetzt
ist, das nicht mehr
existiert. Wir sehen also, dass das genau dort
passiert ist. Und jetzt funktioniert unser Absenden Button zum Hinzufügen zu den Daten nicht
mehr. Unsere bisherige Logik, die sich
hier darauf stützte, gilt also nicht mehr. Schauen wir uns also an, was
wir tun müssen, damit dies mit unserem
Listenobjekt funktioniert. Also können wir einfach den ganzen
Code hier rüber nehmen und
fangen wir einfach von vorne an. Also werden wir all dies löschen und wir brauchen eine neue Logik
, da wir
dieses Listenobjekt aus
unserer vorherigen Übung verwenden , denken
Sie daran, dass wir es eine Tabelle nennen
möchten. Und wir möchten
die Variable deklarieren, die für dieses
Tabellenobjekt
steht, hier drüben. Also sagen wir Tabelle
als Listenobjekt. Dann werden wir gleich stellen. Wir müssen
unsere Arbeitsblätter aufrufen. Objekte im Namen
unserer Namentabelle hier drüben TBL gekauft. Ich glaube. Wir können hierher zurückkehren und bestätigen, indem wir dies
hervorheben zu unseren Tabelleneinstellungen
gehen. Und Leute kaufen
Linien und bestätigen das. Jetzt, da wir unsere Tabelle hier haben, anstatt die
for-Schleife, die
ganz nach unten scrollte und die nächste leere Zeile gefunden hat. Und Sie
haben gesehen, dass Sie, wenn Sie Tausende von Zeilen haben, Tausende von
Zeilen nach
unten scrollen und die
nächste leere Zelle finden würden . Und wir haben einen
Platzhalter von 99 Tausend platziert, genauso wie eine große Zahl. Stattdessen kann ich etwas tun. Wie diese Tabelle, die Zeilen auflistet. Probieren wir das also aus. Diese eine Codezeile wird
nur wissen, wo sich die nächste neue Zeile befindet, und
fügt dort eine neue Zeile hinzu. Und ich habe ihm nicht gesagt, welche
Inhalte da drin sind. Aber weil wir eine
Formatierung in dieser Tabelle haben, werden
Sie feststellen, dass die Tabelle eine neue Zeile
erweitert die in der
Formatierung der Tabelle
angezeigt wird, obwohl wir ihr
nicht gesagt haben was Inhalte, die dort hineingelegt werden sollen. Also werde ich hier einen Zeilenumbruch machen,
weil wir uns auf diesen Code konzentrieren
werden viel auf diesen Code konzentrieren
werden, damit
ich ihn beim
Testen einfach ausführen werde und
es wird
überspringen hier zu unserem neuen Code. Also haben wir eine neue Zeile mit
einer einfachen Sache wie diesem hinzugefügt. Und dies ersetzt unsere
gesamte Vier-Schleife, gesamten Prozess
, den wir hatten
, nach unten zu
scrollen und nach einer neuen Reihe und Marketing zu
suchen. Welche Nummer hat unsere neue Zeile. Als Nächstes wollen wir
herausfinden, wie wir Inhalte
aus diesem Formular tatsächlich hineinlegen können. Jetzt, da wir eine neue Zeile haben, erstelle
ich
ein anderes Objekt. Und wir haben ein Listenzeilenobjekt. Ich nenne es
L rho, Listens row. Und Sie sehen genau
wie das Listenobjekt und alle diese anderen Variablen haben einen variablen Typ oder Objekttyp. Es gibt ein Listenzeilenobjekt. Und jetzt, wenn ich erstelle liegt es nur daran, dass ich hier im
Break-Modus bin. Also stoppe ich das
Makro und den Prozess. Also wollen wir dieses Ding
und dieses Listenzeilenobjekt nehmen, wir möchten die
neue Zeile werden, die wir hinzufügen. Also werde ich sagen, set L rho entspricht der neuen Zeile
, die erstellt wird. Dies wird also eine neue Zeile ausführen
und erstellen. Und während es dies tut, wird, sobald es
diese neue Zeile erstellt hat, diese neue
Zeile als dieses Objekt festgelegt, die Zeilenvariable, die
wir gerade erstellt haben. Wir werden sehen, wie das funktioniert. Denn wenn ich sage, L
rho jetzt arrangiert, habe ich ausgewählt,
werde ich das ausführen. Sie sehen, dass wir nach dieser
Zeile eine neue Zeile erstellen, und hier sind wir mit einer neuen Zeile. Und wenn ich das ausführe
, was L rho select ist, sehen
Sie L rho, R object ist jetzt diese neue
Zeile, die wir erstellt haben. Jetzt können wir anfangen,
etwas mit dieser Reihe zu machen. Und Sie sagen Bereich, genau wie wir es in unserer
letzten Übung getan haben, als wir die Werte
bestimmter Zellen auf dieser Route
überprüft haben. Wenn ich sage, dass der
Punktwert des Bereichs 1 gleich ist, füge
ich jetzt Informationen
in diese Tabelle ein. Und so können
wir,
genau wie in unseren letzten Lektionen, auf
die Werte jeder
Zelle in einer Zeile verweisen genau wie in unseren letzten Lektionen, . Nur anstatt nur den Wert zu
lesen. Und
das letzte Mal haben wir die Daten
bereinigt , indem wir den Wert
gelesen haben. Wir können
dieses Konzept auch verwenden , um
Daten in diese Zelle zu legen. Bei dieser Logik können Sie
also sehen, wie wir
diese Konzepte kombinieren und die Daten aus
unserem Formular in die neue
Zeile
verschieben können diese Konzepte kombinieren und die Daten aus
unserem Formular in die neue
Zeile
verschieben , die wir erstellen. Beginnen wir diesen Prozess,
wenn ich Dimensionselement sage. Und ich
werde einfach
Variablen für jedes der
Felder im Formular erstellen ,
wir rufen Quantität
zusammen mit einem Double auf . Ich hab das Wort vergessen wie hier. Wir werden diese
Variablen hier deklarieren. Verwenden Sie unsere Bereichsnamen. Dieser Wert. Unsere Menge ist Quantität. Dieser Wert. Lass mich einfach sicherstellen, dass ich dort den richtigen Namen
habe. Das wird der Preis gebildet. Ich schätze hier nur, aber
wenn wir die Dinge richtig benennen, wird
es diesem
Muster für einen Preis folgen. Und jetzt, wie wir gesehen haben, können
wir dann Inhalte mit diesem Bereichsindex in die Zeile einfügen. Wenn ich das nehme und wir
Artikel in unsere erste Spalte legen, Menge in einer Sekunde und
Preis und unseren dritten, wird
es so aussehen, 23. Und hier drüben gebe ich ihm keine
Schnur. Stattdessen werden wir ihm die Variablen
übergeben
, die wir hier als Zwischenhändler verwendet haben, Menge, Preis. Und dann haben wir hier einen
Zeitstempel
, den wir nicht
aus dem Benutzerformular erhalten. Wir erhalten den Zeitstempel
nur aus unserem VBA-Code selbst. Wir sagen also VBA, eine integrierte VBA-Funktion, die uns unseren Zeitstempel den Moment gibt, in dem dieser Code ausgeführt wird. Probieren wir das also aus. Ich
werde F5 drücken, um zu laufen. Als Fehler dort, weil ich bei F5 einen Tippfehler
gemacht habe, sind wir dorthin gesprungen, wo
wir unseren Haltepunkt platziert und ich werde F8 verwenden,
um den Code zu durchlaufen. Jetzt deklarieren wir
unsere Variablen. Artikel, Menge ist fünf, Preise acht oder eine neue Zeile
hinzufügen. Wir brauchen das nicht wirklich, aber wir wählen die Zeile aus
, die wir für diese Demo verwenden. Und dann ist unser erster Platz
in dieser Zeile der Artikel, Menge als Preis,
als Zeitstempel. Und die Zeile wurde hinzugefügt. Also brauchen wir das nicht, was es nur ausgewählt hat, damit wir
es sehen können. Mal sehen, ich werde
diese Linie beenden und dann lass uns unseren Knopf noch einmal
testen. Wir klicken auf Absenden. Ich
habe immer noch meinen Bruchpunkt hier, also hält es
an dieser Linie an. Also schalte ich
das aus, indem ich F9 klicke. Ich hätte hier auch klicken
können, um den
Haltepunkt ein- und auszuschalten. Ich muss fertig hier
rüberlaufen. Und es heißt, die Zeile
wurde hinzugefügt. Das ist schon wieder hoch. Nur um zu sehen, dass sich
etwas geändert hat. Hier. Sie sehen, dass wir unseren Daten mithilfe
dieses Listenobjekts eine neue Zeile
hinzufügen können unseren Daten mithilfe
dieses Listenobjekts ohne dass ein Prozess so kompliziert wie zuvor, dass wir auf das Listenobjekt
verzichtet haben. Eine andere Sache aus unserer
vorherigen Lektion, die ich erwähnt
habe, war, dass ich diese
Zahlen hier nicht gerne verwende. Weil das Problem,
wie wir zuvor gesehen haben,
darin besteht, dass es auch nicht funktionieren wird,
wenn ich hier eine weitere Spalte hinzufüge . Also treffe ich F5
und führe das einfach aus. Eine neue Zeile wurde hinzugefügt und Sie sehen, dass alles
falsch ausgerichtet ist. Jetzt ging mein Preis in die dritte Spalte und mein Zeitstempel
ging in meine vierte Spalte. Aber das funktioniert nicht mehr
richtig. Um
dieses Problem zu lösen, werden wir
das Gleiche tun , was wir
in den letzten Lektionen gemacht haben, aber wir werden
es hier einfach in unsere Form einbauen. Ich zeige dir den langen
Weg, den wir beim letzten Mal gemacht haben. Und dann bauen wir das
direkt in den Code ein. Aber sagen wir auch Demenz. Mengenindex
sowie langer Zeitstempelspaltenindex. Also werden wir diese Variablen
verwenden. Das ist nur ein
Sprungbrett, um hier
zum Endergebnis zu gelangen . Wenn ich sage,
nenne ich Index nicht gleich. Und dann haben wir unseren Tisch und wir verwenden unsere Listen-Pfunde, und wir können
diese namentlich nennen. Und die Liste der Spalten nach
Namen hat eine Indexnummer. Jetzt können wir diesen
Prozess verwenden, um herauszufinden ,
mit welcher Spalte wir arbeiten, basierend auf dem tatsächlichen Namen. Also werden wir
die Menge falsch machen. Wir machen Menge,
Preiszeitstempel. Und das wollen wir mit
dem eigentlichen Aufruf
auf unserem Tisch hier abgleichen . Das ist also die Artikelmenge. Wir haben Preis im Zeitstempel. Und dann, anstatt diese Zahl hier
zu setzen, 1234, können wir diesen Artikel namens Index
aufstellen. Jetzt finden wir tatsächlich
heraus , mit welcher Kolumne wir hier arbeiten
wollen. Ohne die Nummer direkt eingeben
zu müssen. Der Code selbst
wird
herausfinden , wo die Spalte auf dem Namen
basiert. Wir geben es für die Kolumne weiter. Also lasst uns das hier durchlaufen. Und Sie sehen, dass unsere
Artikelspalte hier eine ist. Mengenspalten
zur Preisspalte vier, da wir diese
Junk-Spalte haben, die wir hinzugefügt haben, und dann die
Zeitstempelspalten fünf. Jetzt sind diese Zahlen
nicht fest codiert. Dass unser Prozess hier
herausfindet, wo sich jede Spalte befindet, während
sie den Prozess durchführt. Und jetzt siehst du,
dass alles wieder richtig funktioniert. Und es wurde an
die neue Spalte angepasst, die wir hinzugefügt haben, ohne
zurückkommen und den Code aktualisieren zu müssen. Siehst du hier. Der Vorteil davon
ist, dass
wir die Spaltenindizes nicht mehr
aktualisieren und ändern
müssen, wenn ich
hierher komme und diese Spalte lösche und . Wir können das ausführen und wir haben
immer noch eine neue Zeile, die genau hier hinzugefügt
wird. Was ich oft mache, ist
Zeit zu sparen und all dies nicht mit
diesen Variablen zu tun ,
die die Indexnummer speichern. Sie können diese Informationen direkt in diese Klammern eintragen. Und es macht die Codezeile etwas
schwieriger zu betrachten, da wir diese
wirklich komplizierten Zeilen
mit vielen
verschachtelten Informationen haben . Nach einer Weile
gewöhnt man sich einfach daran, sich das anzusehen. Und es gibt einige Möglichkeiten,
dies ein bisschen einfacher zu machen, aber das spart die Zeit,
die wir zum Erstellen
dieser Variablen benötigt haben. Hier. Wir machen einfach
genau das Gleiche nur wir verwenden
diese nicht in der Mitte, um die Werte nach unten zu
übergeben. Ich
benutze diese Befehle einfach direkt dort, wo ich sie verwenden
möchte. Probieren Sie das aus. Klicken Sie auf „11 einreichen“, und
es gibt unsere neue Linie.
59. 3.1 Quoting – Einführung: Hallo allerseits. Also wollte ich
das Projekt, an dem wir
hier arbeiten, in unseren Beispielen
ändern . Das Projekt, an
dem wir gearbeitet haben, bevor es ein
grundlegender Kauf war. Und dann möchte ich
es in etwas verwandeln, über das ich viel Vertrautheit
habe und dass wir alle
möglichen Funktionen
aufbauen können , während wir unsere Lektionen
durchlaufen. Ich möchte das in einen Schöpfer
umwandeln. Und dann können wir viele
verschiedene Prozesse
aus dieser Idee eines Tools erstellen verschiedene Prozesse
aus dieser Idee eines , das
einem
Unternehmen hilft, Angebote zu erstellen. Um das zu tun,
wollte ich nur
dieses eine Video drehen, um den Anfang zu gestalten,
bevor wir auf einen der tatsächlichen
VBA-Automatisierungscodes
einsteigen . Also drucken wir sie aus, wie ein schneller Krater aussehen könnte. Und ich fange hier von
ganz vorne an. Sie sehen also, dass wir ein Buch
mit einem leeren Excel-Blatt haben. Und wir werden von dort aus gehen
und wir werden einfach einige
der Dinge durchgehen , die wir in unseren früheren
Tutorials hier
behandelt haben . Also werden wir das
speichern und wir wissen, dass wir
Makros da drin haben werden. Also lasst uns fortfahren und diese Datei dort
speichern, wo
wir sie speichern werden. Und wir möchten
dies als XLS speichern,
eine Makroaktivierte Arbeitsmappe weil wir wissen, dass
wir Makros hineinlegen werden. Wir setzen ein Etikett an die Spitze. Und stellen wir uns einfach vor,
welche Eingaben jemand
haben würde , während er ein Zitat
erstellt. Sie haben also vielleicht so
etwas wie einen Kunden. Etwas anderes, das wir
haben könnten, ist Jack Name mit einer Person,
mit der wir sprechen , die das Angebot angefordert hat. In der Regel können Sie
etwas tun, um eine E-Mail
von jemandem als
Angebotsanfrage zu erhalten , dann haben Sie möglicherweise etwas wie die Einzelposten, die auf dem Angebot
gekauft werden. Also haben wir hier Einzelposten. Und du wirst
deine Zeilennummer haben. Und du wirst
deine Artikelnummer haben. Und du wirst eine Beschreibung haben. Menge Der Einzelpreis wird den Einzelpreis angeben. Und wir haben Ihren
erweiterten Preis, der den
Gesamtpreis für diese Linie ist. Und so wird
das eher ein Tisch sein. Und für ein Angebot können
Sie
pro Angebot mehr als einen Einzelposten kaufen. Hier oben können wir also auch
eine Angebotsnummer hinzufügen, da wir sagen, dass die
Nummer unser erstes Zitat ist. Und Sie kaufen so
etwas wie Produkt A Produkt B, Sie kaufen
fünf davon, zehn davon. Also haben wir es vorher gelernt. Dann können wir dies
in eine Namentabelle umwandeln. Also werden wir das als Tabelle
formatieren. Eine weitere Verknüpfung, die Sie tun
könnten, ist Control T. Wir erstellen hier auch eine
Tabelle. Und Sie können sagen, dass meine Tabelle
Überschriften hat und ich klicke, Okay, und Sie sehen, dass sie unsere
Zeilentabelle in einer tatsächlichen
Namentabelle erstellt hat, unser Listenobjekt, das
wir in unserem VBA-Code verwenden werden. Lassen Sie uns das Aussehen
ein wenig verbessern. Bleiben wir also bei dem
Basisthema, das ich vorher hatte. Also muss ich nicht so genau
über die Farben nachdenken. Wir machen hier einfach Schwarz und
Weiß für unsere Felder. Bleibt bei diesem
Thema für den Tisch. Also machen wir schwarze Header. Und ein netter Teil an diesen Tischen ist, dass Sie einfach
verschiedene Farben wählen können. Und es wird es für dich thematisieren. Lassen Sie uns dieses
Formular ein wenig
besser aussehen und wir werden
die Rasterlinien hier entfernen. Ich werde hier drüben
ein paar Grenzen schaffen, was
es irgendwie so aussehen lässt. Und jetzt haben wir etwas
, das wie
eine Grundform aussieht ,
die dem Kaufformular ähnelt, an dem wir
gearbeitet haben , bevor
wir
dieses neue Projekt für die
Erstellung eines Angebots gestalten werden. Also werde ich das
hier einfach beenden und wir werden im nächsten Video
weitermachen.
60. 3.2 Ordner erstellen: Okay, da wir nun
ein grundlegendes Angebotsformular haben , das wir ausgearbeitet haben, stellen wir
uns vor, was
passieren könnte, wenn ein Unternehmen eine Angebotsanfrage
von einem seiner Kunden
erhält. Sie erhalten möglicherweise
eine Angebotsanfrage per E-Mail, und dann werden
all diese zusätzlichen Dateien geliefert. Oder vielleicht möchten Sie einfach
die E-Mail selbst speichern , die von etwas
wie Microsoft Outlook stammen
könnte. Welche Art von Bleiben Sie bei
den Microsoft-Produkten hier für unsere Demos. Also geben wir Zitat Nummer eins ein. Angenommen, wir verfolgen unsere Angebote mit einer
Angebotsnummer hier. Und vielleicht möchten wir so etwas
wie einen Ordner erstellen. Genau hier haben wir unsere Co-Creator-Datei, an der
ich gerade arbeite. Und du hast vielleicht
so etwas wie Akten. Wir erstellen hier einen neuen Ordner. Und wir sagen Zitat 000001. Und wir erhalten unsere
ersten Anfragen , wenn das System gestartet wird. Und vielleicht möchten wir
unsere Anfrage nach Angebotsdateien ziehen und sie hier ablegen, was auch immer unser Kunde uns sendet, das sind Informationen über das
Angebot, das er anfordert. Die erste Funktion, die ich hier erstellen
möchte, ist eine Möglichkeit, diese Ordner automatisch zu
erstellen. Werde etwas tun,
wo wir zum Beispiel hier Zitat
Nummer zwei eingeben, auf unserem zweiten Zitat stehen. Und dann erstellen wir eine Schaltfläche „Ordner
erstellen ,
damit wir diese Ordner nicht manuell
hier in diesem Ordnersystem erstellen müssen diese Ordner nicht manuell
hier in diesem Ordnersystem erstellen . Also lasst uns anfangen
, das wird hier reinkommen. Wir machen einen Button und wir
rufen diesen Button Erstellen auf. Wenn wir jetzt
zu unseren Makros kommen, haben
wir nichts, denn dies ist eine saubere Arbeitsmappe, die wir gerade im letzten Video
angefangen haben. Wir haben also keine
Module oder Makros aufgezeichnet. Fügen wir ein neues Makro ein oder
fügen wir ein neues Modul ein, was ein Abschnitt ist, in
dem wir einige Makros erstellen können. Und wir kategorisieren das. Wir werden diese
Dateiverwaltung als Modulnamen nennen. Fangen wir hier mit einer neuen
Subroutine an. Und wir speichern das für eine Minute und beschreiben,
was das bewirkt. Um Dateien zu speichern. Dies ist nur eine gute Praxis, indem Sie einen Kommentar abgeben,
um
detailliert zu beschreiben , was jede Subroutine
oder Funktion tun könnte, insbesondere wenn es nicht
so intuitiv ist. Also möchte ich das nur zeigen, obwohl dieser Name
ziemlich beschreibend ist. Also mache ich zuerst einfach so
etwas wie Erstellen zu sagen. Und fügen wir diese Schaltfläche an dieses Makro
an, das
wir gerade erstellt haben. Und weil wir diese Subroutine
erstellen, haben
wir diesen großartigen Zitatordner. Und jetzt habe ich
diesen Button zugewiesen , um
mit dieser Subroutine zu arbeiten, und wir öffnen diese Nachricht und wir machen noch
nichts anderes. Also erstellen wir
unseren Angebotsordner, in diesem Fall verwenden wir
diese Nummer hier. Erstellen wir also eine Variable
, die
diese Angebotsnummer speichert .
Nennen Sie es Zitat Nr. Wie. Und wir werden es
so lange sagen. Und lass uns das
von der Schnittstelle holen. Jetzt, da wir diese Variable
deklariert haben, können
Sie sagen, dass er gleich Bereich ist. Und wir müssen
diese Zelle hier rüber bringen. Diese Zelle ist also vorher, aber vielleicht erinnern Sie sich aus unseren vorherigen Lektionen, dass
dies keine gute Praxis ist. Wir könnten das machen. Wenn wir jedoch Dinge
verschieben oder Zeilen einfügen, Feld für
die Anführungsnummer
möglicherweise nicht mehr B4. Also
nennen wir dieses Zitat Nr. Wenn Sie jetzt
den Mauszeiger über diese Zelle bewegen, können
Sie sehen, dass es sich um einen benannten Bereich handelt, genannt
Anführungsnummer. Also können wir das tun, aber
lasst uns das einfach neu anordnen. Wir werden
dieses Ding in Schritten bauen. So kann ich
jedes Konzept weiter demonstrieren, während wir gehen. Ich ändere das ein wenig,
damit wir mehr von
dem grünen
Codeordner für Zitate sehen können . Und ich stelle nur
die Zeichenfolge zusammen , um unsere Botschaft zu verbessern, damit
wir sehen können, was los ist. Wenn ich jetzt darauf klicke, haben
wir einen
Ordner erstellt und ich habe dort
einen Tippfehler gemacht , den ich für die Angebotsnummer
eingeben wollte. Und wenn ich
diesen Pelzmantel Nummer
zwei betreibe und du siehst, wo hier
erfolgreich der Wert
aus unserer Schnittstelle gezogen wird. Jetzt möchten wir hier
drüben einen Ordner
im Verzeichnis erstellen . In diesem Fall gibt es
verschiedene Dinge, die wir
tun können , um dies ein wenig
intelligenter zu machen. Aber ich beginne
mit etwas
Grundlegenderem , wenn wir
unsere Konzepte hier aufbauen. Nehmen wir an, wir
möchten eine Variable
für den Pfad
des Ordners erstellen für den Pfad
des , in dem wir den neuen Ordner erstellen möchten
. Das ist also noch kein neuer Ordner. Wir möchten ihm sagen
, wo wir diesen Ordner
erstellen möchten ,
der sich hier befindet. Ähnlich wie zu wissen, wo Sie hier anfangen
möchten, bevor Sie mit der rechten Maustaste klicken und einen neuen Ordner
starten. Wenn wir es so machen würden. Also wollen wir
diesen Weg genau hier finden. Sag Ordnerpfad als String. Und dann erklären wir
diesen Ordnerpfad. Und im Moment
gehe ich nur zu hartem Code, was wir später
ändern könnten. Und ich werde das einfach kopieren
und einfügen, das ich von diesem Pfad hier oben kopiert habe. Jetzt haben wir unseren Ordnerpfad. Wir möchten herausfinden, wie
unser neuer Ordnername lautet. Also machen wir all die Dinge , die wir manuell tun müssen. Wir wissen, in welchem Ordner wir jetzt beginnen
müssen und wir müssen herausfinden, wie
der Name unseres Ordners lautet. Wenn es zum Beispiel zwei wären, wollen
wir diese Notation, aber natürlich
würde sich auch eine ändern. Wir können also Ordnernamen sagen. Wir können einen neuen Ordnernamen sagen, beschreibende Zeichenfolge
sein. Und ich sage, dass der neue
Ordnername gleich ist. Und dann
ist unsere Notation hier
, die wir links sehen , Anführungsnummer und dann 00000, wir verwenden
hier sechs Ziffern und dann zwei. Natürlich werden
wir das nicht wirklich tun. Dies muss eine Variable sein. Also möchten wir vielleicht
so etwas machen. Wir wissen, dass wir unsere
Angebotsnummer hier oben haben. Aber wir haben dieses
Problem, dass
wir hier eine zusätzliche 0
haben werden, wenn wir unsere
Angebotsnummer von zehn erreichen. Wie können wir diese sechsstellige Zahl anpassen, wenn wir mehr
Ziffern in unserer Angebotsnummer erhalten. Obwohl das vorerst funktionieren
wird, bis wir bis zehn sind, testen wir das
einfach aus. Und so werden wir uns später
damit befassen. Verschiebt unser
Nachrichtenfeld wieder weiter nach unten und erstellt einen neuen Ordner. Und wir sagen
hier unseren
neuen Ordnernamen , um ihn zu testen. Und ich werde es laufen lassen. Wir werden sehen, Angebotsordner zu erstellen. Wir haben unsere Nullen hier. Und das liegt daran, dass
wir das leer gelassen haben. Nehmen wir an, wir
sollten es hier tun. Und wenn ich auf dieses
Zitat Nummer zwei klicke. Jetzt haben wir
unseren Ordnernamen erstellt, aber wir haben dieses Problem
, dass
wir uns nicht richtig anpassen, wenn dies zehn ist. Wir wollten eine
sechsstellige Zahl und jetzt haben
wir diese auf sieben
Ziffern verschoben. Was wir also tun können, ist dies zu
entfernen und wir möchten
nur
die Angebotsnummer hier anhängen. Wenn wir das machen, sehen wir zehn. Und wir müssen zwingen,
dass dies sechsstellig wird. Also können wir diese
Formatfunktion verwenden. Viele Male. Dies sind integrierte
Funktionen als Teil von VBA. Und wenn ich also VBA
und dann Punkt tippe ,
siehst du, dass ich viele
integrierte Funktionen bekomme , die nur Teil von VBA sind. Einer von ihnen ist das Format hier. Und während ich formatiere, sehen
wir, dass wir unseren
Ausdruck haben, der unsere Zahl ist, und dann haben
wir den zweiten Parameter
, der hier in Klammern steht, die Möglichkeit, die Formel zu
erzwingen. Wenn ich also sechs Nullen einlege, werde ich wissen, dass
das gewünschte Format eine Zahl mit sechs Ziffern
ist, was auch immer hier drin ist. So kann ich dir zum Beispiel hier
unten im
vorherigen Fenster zeigen , ich mache einen Debug-Print
und sage 123123. Also machen wir hier sechs Ziffern. Ich vermisse meine Formatfunktion. Also möchte ich hier Format eingeben. Und wenn ich dann die Eingabetaste drücke,
siehst du, dass dies den
hier
übernommen hat und es dann
im sechsten Ziffernformat geschafft hat. Und dann ist der große Unterschied
hier, wenn ich zehn tippe, und wenn ich dann die Eingabetaste klicke
oder die Eingabetaste drücke, haben
wir die Zahl zehn, aber wieder in das
sechste Ziffernformat gezwungen. Jetzt können wir das machen. Und das Gleiche, was wir hier
gerade demonstriert haben,
gilt, wenn wir Angebotsnummer haben und wir zehn
im sechststelligen Format haben. Und wenn wir dann bei zwei wären, hätten
wir dieses
sechsstellige Format immer noch hier. Jetzt, da wir unseren neuen Ordnernamen und unseren Ordnerpfad haben, in dem
wir diesen neuen Ordner erstellen werden. Vielleicht erinnern Sie sich aus
unserem vorherigen Video, wir diesen Befehl make
directory haben
, der einen neuen Ordner
erstellen wird. Und dann haben wir das geöffnet und dies ist der Weg, den wir brauchen. Konstruieren wir diese neue
Variable, bevor wir diese verwenden. Wir haben also unseren neuen Ordnernamen, aber machen wir einen neuen, nur um alles klar zu machen. Neuer Ordner. Wenn ich dieses Tool erstellen würde, habe ich vielleicht nicht all diese Stepping-Stone-Variablen , um langsam alles aufzubauen. Ich mag dieses Zeug
mit weniger Codezeilen kombinieren, aber weil wir hier
eine Lernstunde machen, ist
es klarer,
all diese Sprungbrett zu erstellen ,
damit wir sehen, was los ist. Wir möchten, dass unser neuer
Ordnerpfad hier unserem Ordnerpfad
entspricht und diesen
mit unserem neuen Ordner kombiniert. Und ich weiß bereits, dass
es hier ein Problem gibt. Zeigen wir also, dass ich absichtlich
etwas hier draußen lasse. Wenn wir also am
Ende einen Debug-Druck machen, können
wir sogar unser Nachrichtenfeld
verwenden, können
wir sogar unser Nachrichtenfeld
verwenden dieses Ding weiter nach unten zu verschieben. Angebotsordner wird erstellt Und wir machen
das zum neuen Ordnerpfad. Ich lege hier einen neuen Doppelpunkt ein. Und wenn wir dies ausführen, sehen
Sie als Erstellen
unseres neuen Angebotsordners, wir haben unsere neue Variable, das ist der Ordnerpfad auf der linken Seite, kombiniert mit einem neuen
Ordner, den wir erstellen. Und was uns aufgefallen ist, ist, dass wir hier einen Backslash
verpassen. Wenn wir also hierher kommen, um den
Ordner einen zu zitieren , den wir manuell
erstellt haben, haben
wir diesen umgekehrten Schrägstrich
, der fehlt. Und das liegt daran, dass ich, wenn ich hier einen Ordnerpfad
erstelle, keinen umgekehrten Schrägstrich eingefügt
habe. Und jetzt, da wir diesen Backslash
haben, haben
wir unseren Ordnernamen
, der ihn nicht hat. Wir hätten hier
zwei Möglichkeiten haben können. Wir können
es entweder so lassen und
den umgekehrten Schrägstrich hier drüben weil wir diese
zusammenhängen werden. Oder die Option, ich denke,
es ist etwas klarer den umgekehrten Schrägstrich
auf der linken Seite zu setzen, aber wir haben hier beide
Optionen, solange das Endergebnis den umgekehrten Schrägstrich
hat. Wenn ich also darauf klicke, haben
wir jetzt den neuen Pfad des Ordners, den
wir erstellen möchten. Jetzt, da wir das haben, können
wir unser command
make directory verwenden. Und wir möchten
dieses neue Telefon
oder
die vollständige Pfadzeichenfolge verwenden , in der wir erstellt haben Es sollte ein neues Verzeichnis
mit diesem vollständigen Pfad erstellen , den wir gerade mit
unserem obigen Code
erstellt haben . Erstellen wir also einen neuen Ordner. Erstellen Sie hier einen neuen Ordner. Wir klicken auf Okay und sagen
dann alles. Aber wenn wir hier sichern, sehen
wir, dass wir jetzt den
Angebotsordner Nummer zwei haben. Nur der Übersichtlichkeit halber könnten wir sagen, Nachrichtenbox-Ordner erstellt
wurde. Wir machen das Gleiche. Neuer Ordner, vollständiger Pfad. Und wir können diese Nachricht sogar
entfernen. Also drücken wir diesen Knopf. Nehmen wir an, wir haben
Zitat Nummer drei. Wir klicken auf Ordner erstellen. Ein neuer Ordner wurde erstellt. Hier ist unser Nachrichtenfeld, das
bestätigt, dass alles fertig war. Und hier ist wieder unser neuer Ordner. Wir fassen hier einfach
eine Sache an. Nur ein bisschen aufräumen. Ich füge ein
VB-ELF-Zeichen hinzu, das ein Zeilenvorschub ist. Und das würde
diese Popup-Nachricht
nur ein bisschen sauberer aussehen lassen. Also werden wir uns in der nächsten Lektion tatsächlich
damit befassen. Ich trete auf einen Fehler, weil
es versucht,
einen Ordner für Zitat drei zu erstellen , aber dieser Ordner existiert bereits. Das werden wir in der nächsten Lektion erledigen
. Im Moment gehen wir einfach zum
Zitat For wird das ausführen. Und wir haben unsere Popup-Nachricht , die
jetzt ein bisschen besser aussieht , mit unserem Ordner
für ein Angebot, für
61. 3.2.2 Quote – Ordner prüfen und öffnen: In unserem letzten Video haben wir diesen Button mit
einer Funktion
erstellt , die
basierend auf unserer Angebotsnummer einen neuen Ordner erstellt. Also wenn ich
hier Zitat Nummer fünf sage und klicke auf Ordner erstellen. Sie können sehen, dass der
Ordner erstellt wurde. Wir klicken auf Okay und schauen
uns unseren Ordner hier an. Wenn ich diesen Ordner öffne, sehen
wir, dass wir hier einen Ordner
für Zitat fünf haben. Das Problem, das wir am Ende
des letzten Videos gesehen haben. Wenn ich noch einmal darauf klicke, haben
wir diesen Fehler hier. Dies bedeutet, dass
Zugriffsfehler für ein Feuer oder einen Pfad vorhanden sind. Dies wird jedoch ausgelöst, weil der Ordner
bereits existiert. Also klicke ich hier auf „Stopp“. Dies ist ein sehr ähnlicher Fehler dass wenn Sie dies manuell gemacht haben, wenn ich
hier einen neuen Ordner erstellt und Zitat 000005 gesagt habe
, der Ordner bereits existiert und Windows selbst diesen Fehler hier auslösen wird
. Also lösche ich das weiter
. Aber VBA
versucht im Wesentlichen,
diese Aktion auszuführen , und es wird
ein eigener Fehler angezeigt. Lasst uns das also aktualisieren, damit
wir diese Situation bewältigt haben. Wir haben diese Codezeile
aus dem letzten Video, bei dem es sich um die Codezeile handelt
, die einen neuen Ordner erstellt. Bevor wir also
einen neuen Ordner erstellen, aber wir wollen
im Wesentlichen prüfen ob dieser Ordner noch nicht
existiert. Wir können das tun, ist mit einer Funktion, die in VBA integriert ist, die HIER DIR für Verzeichnis
genannt wird. Und wir haben unseren Pfadnamen. Wir möchten also den Pfad eingeben
, den wir hier überprüfen, der in unserem Fall in
dieser Variablen enthalten ist, die als
neuer Ordner vollständiger Pfad bezeichnet wird. Und wenn wir diesen
Verzeichnisbefehl verwenden, verwenden
wir
den zweiten Parameter, der der Typ der Datei oder
des Pfads ist. Und wir werden das VB-Verzeichnis
verwenden da wir prüfen
, ob ein Ordner existiert. Und was wir
sagen werden ist, wenn es leer ist, wenn das Ergebnis der Überprüfung
dieses Pfads leer ist, bedeutet dies, dass der Ordner nicht
existiert. Also wenn es das ist, dann werde
ich nur sagen, dass der Ordner hier
nicht so üblich existiert. Das ist kein Code,
aber ich
vermarkte hier nur irgendwie unsere Abfolge
von Aktionen. Und ansonsten existiert der
Inhaber. Also haben wir diese Situation. Und wenn der Ordner nicht
existiert
, können wir
weitermachen und den neuen Ordner erstellen. Ansonsten. Lassen Sie uns vorerst einfach
dieses Meldungsfeld aufstellen, das
besagt, dass der Ordner bereits
unter dem folgenden Pfad vorhanden ist. Wir machen einen vb-Line-Feed
genau wie zuvor. Und wir verwenden hier den
neuen Ordnerpfad und teilen dem Benutzer mit, dass
wir den neuen Ordner
aufgrund dieses Problems nicht
erstellen werden . Also lass es uns jetzt versuchen. Ich werde F9 drücken, nur damit wir hier
aufhören und dann können wir den Code
durchgehen. Wenn ich also F5 treffe, hören wir hier auf. Wir haben unseren neuen Ordnerpfad. Alles ist konstruiert. Dann. Jetzt sehen Sie, da
der Ordner existiert, haben
wir Folder Five
, den
wir bereits bei einem
gesalzenen Fehler getroffen haben. Und jetzt erhalten wir
dieses Meldungsfeld, das besagt, dass
der Ordner bereits existiert. Wenn wir das dann auf sechs ändern, führen
wir das noch einmal aus. Ich treffe F5. Also führen wir diesen
Code bis zum Bruchpunkt aus ,
und jetzt existiert der
Ordner nicht. Und wir werden dieses neue Verzeichnis erstellen. Und so sollte an dieser Stelle der neue Ordner
bereits erstellt werden. Und hier ist Zitat Sechs. Und während wir es ausführen, erhalten wir unser normales Nachrichtenfeld
, das wir
auftauchen möchten , wenn dies ausgeführt wird, ohne dass wir
den Code durchlaufen. Wenn ich diesen Knopf drücke,
heißt es, dass wir uns im Unterbrechungsmodus weil wir uns immer noch in diesem Ausführungsmodus befinden, in dem
wir durchgehen. Ich stoppe das Makro und jetzt können
wir diesen Button wieder benutzen. Ordner ist bereits
im Pfad für Zitat sechs vorhanden. Sie können sehen, dass wir diese Nachricht tatsächlich
verdoppelt haben. Zeigen wir Ihnen also einfach diese
Sequenz, die ich nicht
repariert habe, wenn wir diese
Benachrichtigung erhalten haben, dass der
Ordner bereits existiert. Aber dann geht es hier
durch unser Verfahren weiter
und teilt uns mit, dass der Ordner erfolgreich erstellt
wurde. Wir möchten den Benutzer also nur
darüber informieren, dass der Ordner erfolgreich
erstellt wurde , wenn wir einen neuen Ordner
erstellen. Jetzt werden wir damit aufhören, werden das entfernen und
wir können es noch einmal versuchen. Es sagt uns, dass der Ordner
bereits existiert. Wenn wir das jetzt auf sieben
ändern, heißt
es, dass wir hier einen neuen Ordner sieben
erstellt haben . Ich mache einfach weiter und
lösche all diese Ordner aus. Wir erstellen hier viele
Junk-Ordner. Also fangen wir wieder mit einem und erstellen einen neuen Ordner. Und der Ordner für
Zitat eins existiert jetzt. Eine weitere Funktion, die wir hinzufügen
können, ist, anstatt uns
nur darüber zu informieren, dass der Ordner bereits
existiert und dass wir keinen neuen erstellen
können,
weil wir es nicht müssen. Wir können den
Ordner dann öffnen, falls er existiert. Ich vergesse, wie der Befehl
lautet, einen neuen Ordner zu öffnen. Also öffne ich
meinen Browser hier und
tippe etwas wie VBA, Open Folder Path. Wir kommen her und
schauen uns die Antwort an. Und wir haben unseren Code genau hier, der
unsere Regale nennt. Nehmen wir also diesen Code und wir
öffnen den Ordner hier. Und deshalb benutzen wir unseren Explore. Explore ist unser
Ordnerfenster hier drüben. Dies wird in Windows
unser Datei-Explorer genannt. Und dann ist hier der Weg, den
wir öffnen wollen. Und von unserem Beispiel aus hatten
sie diesen Weg. Aber wir möchten das wirklich
entfernen und wir können hier den vollständigen Pfad des neuen Ordners
verwenden. Mal sehen, ob das funktioniert. Lassen Sie uns
unseren Code noch einmal durchgehen, F5, und dann gehen wir durch den Ordner, der existiert,
weil wir ihn gerade erstellt haben. Dann haben wir unser Nachrichtenfeld, das
besagt, dass es bereits existiert. Und es führt diese Zeile aus
und Sie sehen, dass sie
unseren Ordnerpfad geöffnet hat, den wir zuvor erstellt
hatten Dies ist für
das hier gezeigte Zitat
eins. Also können wir einen sichern und wir
sehen, dass wir diesen Ordner geöffnet haben. Und wir können
diese Situation einrichten. Es öffnet nicht nur den Ordner, wenn der
Ordner bereits vorhanden ist, sondern da wir den Ordner
erstellen, warum öffnen wir ihn sowieso nicht, direkt nachdem wir den Ordner
erstellt haben, denn vermutlich werden
Sie es direkt nach dem
Erstellen des neuen verwenden. Testen wir das mal. Wir
werden auf Ordner erstellen klicken. Der Ordner existiert bereits. Dann erscheint der Ordner. Wenn wir dann ein
Zitat Nummer zwei machen, das ist eine Zahl, die noch
keinen Ordner hat. Der Ordner wurde erstellt. Und dann
erscheint hier automatisch der Ordner,
nachdem er erstellt wurde. Und wenn wir wieder
hierher kommen, sehen wir, dass wir unsere Ordner
für Zitat Nummer 12 haben. Nun, nur um dies zu bereinigen, weil wir
diese Funktion erstellt haben in der wir
den Ordner auch öffnen , wenn wir
ihn erstellen oder sogar wenn er existiert, ändern
wir diese Schaltfläche so, dass der Ordner „Schrägstrich öffnen“ erstellt wird. Es wird diesen
Button etwas
breiter machen , nur damit wir den vollständigen Befehl
lesen können. Und auf diese Weise
kann der Benutzer sehen, dass wir einen Ordner
erstellen oder öffnen.
62. 3.3.1 Quote – Quote hinzufügen: Mit Blick auf unser Angebots-Tool ist
die nächste Funktion, die ich erstellen
möchte, eine Möglichkeit für uns ,
Einzelposten zu diesem Angebot hinzuzufügen und zu verwalten. Sie haben also ein Zitat, Sie können Zitat Nummer zwei haben. Und dann könnten
Sie bei diesem Angebot ein oder mehrere Dinge kaufen, und das wären Einzelposten. Hier
zeigen wir zum Beispiel, dass wir Produkt a und Produkt B
kaufen würden Produkt a und Produkt B
kaufen Es gibt
also ein Angebot mehr als einen Einzelposten. Was wird hier erschaffen?
Bevor wir zur Automatisierung kommen, richten Sie
einfach wie diese Benutzeroberfläche aussehen
könnte. Also nennen wir das Add-Zeilen. Dies ist die Verwaltung unserer Einzelposten. Und dann
nennen wir das Mine. Dies nimmt die Formatierung an , da diese Spalte angezeigt wird. Excel glaubt, dass es weiß
, welches Format und wir wollen. Aber machen wir
das vorerst einfach normal. Tatsächlich machen wir hier einen
Zellenstil normal, damit Excel dies
nicht automatisch für uns
ändert. Wir sagen Artikel und
wir sagen Menge. Und das sind die Dinge, die
wir brauchen, um eine Zeile hinzuzufügen, aber wir
erstellen im Grunde nur ein Benutzerformular, das dieser Tabelle unten Zeilen hinzufügen
wird. Sagen wir zum Beispiel sogar
Einzelpreis, ich werde mehr hinzufügen, wenn
wir an sie denken. Ich kann dieses Format hier
verwenden und ich kopiere
es einfach , damit wir diese ähnliche Eingabe
haben. Und wir erstellen hier einen
neuen Button. Und wir werden es nennen. Ich klicke
hier einfach auf „Abbrechen“, damit wir noch
kein Makro haben , das
daran angehängt ist, da wir
dieses Makro noch nicht erstellt haben. Aber wir werden
diesen Button Artikel hinzufügen aufrufen. Als wir das
ausfüllen und zwischendurch unser
erstes Video dazu
habe ich beschlossen, dass wir
anfangen werden, Eis in unserem Geschäft hier zu verkaufen. Und wir sagen, dass
wir Vanille machen werden. Füge hier eine neue Zeile hinzu. Wir sagen, Einheiten sind Gallonen. Verkauft eine Gallone
Vanilleeis hier ist der Stückpreis 10$. Sagen wir mal. Wir verwandeln dies in ein
Währungsformat. Wenn wir dann auf
diese Schaltfläche Artikel hinzufügen klicken, möchten
wir diese Informationen verwenden und unserer Tabelle hier eine neue Zeile
hinzufügen. Wir richten das Formular für diese Funktion ein, die
wir haben werden. Und dies muss unsere nächste Zeile
erkennen und hier eine neue Zeile mit
den unterstützenden Informationen hinzufügen. Also
klicken wir im Wesentlichen auf diese Schaltfläche. Es muss wissen, dass
dies Zeile drei ist. Artikel, den wir hinzufügen, ist
Vanilleeis. Die Beschreibung
wird Vanilleeis sein. Eigentlich ändern wir
es vielleicht in so etwas, wo unsere Artikelnummer eins ist. Jetzt, da wir
unsere Artikel hier nur fortlaufende
Nummern zuweisen , eins durch das, was wir in unserem Artikel finden, eins sein. Vanille. Vanilleeis oder
Menge wird eins sein. Die Einheiten werden Gallonen sein, oder der Stückpreis wird zehn in
unserem erweiterten Preis sein , wird in diesem
Fall ebenfalls zehn betragen. Wenn wir zum Beispiel eine Menge
von zwei hatten, dann
ist unser erweiterter Preis unser Gesamtpreis, unser Stückpreis multipliziert
mit der Menge von 20 USD. In den folgenden Lektionen entwerfen
wir den Code, damit diese Schaltfläche
diese Aktion hier ausführen kann.
63. 3.3.2 Quote – Add Listenzeile hinzufügen Teil 1: Nach
unserem vorherigen Video in dem wir
das Formular auch hier eingerichtet haben, haben wir nun
irgendwann diese
Funktionalität, in wir Informationen
über die Zeile eingeben werden, die wir
unserer hinzufügen möchten Linienraster und klicken Sie auf
diese Schaltfläche Artikel hinzufügen. Lasst uns das aufbauen. Wir haben also unsere Module hier, eines für die Dateiverwaltung,
in die wir
unseren Code zum Öffnen
und Erstellen von Ordnern ablegen . Aber lasst uns die Dinge trennen. Also erstellen wir hier ein
neues Modul und nennen das
Leitungsmanagement. Also bleib bei diesem Thema. Aber wir werden hier andere Dinge im Zusammenhang mit der Verwaltung
dieses Zeilenrasters
haben, wir behalten unseren Code
vollständig in diesem Modul. Also lasst uns eine neue
Subroutine einrichten und wir nennen es. Einzelposten. Wird das ausrahmen. Und wir sagen, dass dies eine Tabelle mit zwei Zeilen des Einzelpostens
hinzufügen wird . Aus unserem vorherigen Video. Wir wissen, dass wir diese
Informationen verwenden und
sie dann einer neuen Zeile von
Informationen hinzufügen möchten sie dann einer neuen Zeile von
Informationen Es gibt eine Reihe von
Möglichkeiten, dies zu tun, aber
wir wollen dies tun,
besteht darin, dies zu einer Namentabelle zu machen. Und wir werden die Konzepte
verwenden
, die Sie möglicherweise im vorherigen Abschnitt gesehen haben , die
ich mit
dem Titel „Verschieben von Daten“ betitelt habe. Das ist also eine weitere Gruppe von Lektionen zum Verschieben von Daten. Und wir möchten
ein Listenobjekt verwenden, das
dies eine Namentabelle nennen wird. Und wir werden
viele der Eigenschaften verwenden, die eine Namentabelle sind,
um unsere Zeilen zu verwalten und
neue Zeilen hinzuzufügen und andere Funktionen auszuführen wir letztendlich verwenden werden. Wenn Sie sich nicht sicher sind,
was ich hier meine, können
Sie zurückgehen und sich die Lektionen
ansehen, die im Abschnitt „Verschieben von Daten“ mit
den Listenobjekten und Videonamen gekennzeichnet sind. Was wir
hier einrichten, ist
zu wissen, dass wir diese Informationen
in unser Raster aufnehmen müssen . Wir müssen diese Informationen in unseren Code aufnehmen, damit wir damit arbeiten
können. Lassen Sie uns also einige Variablen erstellen
, um diese Informationen zu speichern. Wir benötigen also eine
Variable namens Artikelnummer. Das wird eine Schnur sein. Wir brauchen
eine Menge. Vorerst. Wir werden sagen, dass das eine lange ist, was im Grunde
eine ganze Zahl ist. Und dann sind unsere Einheiten eine Schnur. Ich habe vergessen, dort ein Leerzeichen hinzuzufügen. Es sieht so aus, als hätte es es für mich
hinzugefügt. Dann habe ich den Stückpreis
, der Dollar und Cent ist. Also werden wir das zu einem Double
machen. Im Grunde genommen eine Zahl
, die Dezimalzahlen enthalten kann. Jetzt, da wir diese
vier Variablen eingerichtet haben, müssen
wir diese
von der Schnittstelle abrufen, genau wie zuvor
mit einer Angebotsnummer,
sagen, dass die Artikelnummer gleich und dann unseren Bereich
, der in dieser Fall ist B9. Da wir jedoch
die Zellenadresse nicht eingeben
und damit arbeiten möchten , möchten
wir
diesen Zellen Namen geben,
damit sie definiert werden, auch
wenn wir Dinge ändern. Also rufen wir diese
Zellenpostennummer an. Wir nennen diese
eine Artikelmenge. Wir nennen das eine Item-Einheiten. Wir nennen diesen Einzelpreis für einen
Artikel. Jetzt haben wir ein bisschen Benennungsthema erstellt, bei dem Dinge in diesem Abschnitt
mit dem Wort item beginnen. Und es sind ziemlich
beschreibende Namen hier. Die Artikelnummer ist also die Artikelnummer. Dieser Wert, Menge
entspricht dem Bereich. Menge des Artikels Einheiten sind
gleich Bereichsartikeleinheiten. Und der Stückpreis
entspricht dem Range-Item. Preis pro Einheit. Kein Wert. Ich glaube, wir haben die richtig verstanden. Ich habe hier in
Price einen Tippfehler gemacht und ich werde
diesen einfach ausführen,
obwohl wir eigentlich nichts anderes
tun als diese
Variablenwerte festzulegen,
es wird mir sagen, ob
etwas schief gelaufen ist. Und das ist nur ein kurzer Check um zu zeigen, dass es mir nicht gesagt hat. Es hat keinen
Fehler ausgelöst, um mir mitzuteilen , dass diese Namen
nicht erkannt wurden. Das ist also zumindest ein gutes Zeichen für den
Anfang. Was wir jetzt tun wollen, ist
diese Informationen hinzuzufügen , um hier unten eine Zeile zu
sein. Wenn Sie wieder
auf diese vergangenen Videos zurückblicken, werde
ich es hier nicht
noch einmal im Detail durchgehen, aber wir können dies hier verwenden, was ein Name ist, die Tabelle. Und wir werden
diese Tabellenzeilen nennen. Jetzt ist diese Tabelle ein Name
namens Tabellenzeilen. Und wir können dieses
Listenobjekt verwenden, um
Zeilen hinzuzufügen und verschiedene
Dinge zu
tun, die Sie mit einer Datentabelle tun würden . Dies bedeutet, einen anderen
Weg zu vermeiden, wie wir dies tun können, aber was etwas
schwieriger ist, wo wir nach unten scrollen müssten und
vielleicht eine Schleife verwenden müssen, um zu erkennen was die unterste
Zeile ist, damit wir wissen, wo unsere
Excel-Tabellenkalkulationszeilennummer unsere nächste Zeile hinzufügen soll. So können wir dies vermeiden, indem wir
diese Namenstabellenfunktion verwenden , die
wir jetzt Tabellenzeilen nennen. Die Art und Weise, wie ich
diese Tabelle verwenden kann
, ähnelt der Art, wie wir einen
Bereich mit einer Variablen deklarieren. Wir können Tabellenzeilen
als Listenobjekt sagen. Welches ist das VBA-Objekt für benannte Tabellen in
der Tabelle. Wir werden sagen, dass
Kabelleitungen gleich sind und wir haben
dieses Blatt eins hier. Was wir wirklich
tippen könnten, ist
Sheet1 , die Listenobjekte. Und dann sagen Sie eingebrachte Zeilen, was der Name unserer Tabelle ist. Das sollte also funktionieren,
nur um dir zu zeigen, dass
ich Tabellenzeilen mache
und wir werden das überprüfen. Ich sage „
Bereich“, der ausgewählt ist. Also haben wir unseren Tisch hier. Wir machen den
Bereich und
wählen ihn dann aus, um zu sehen, ob
wir das Richtige bekommen. Und während dies ausgeführt wird, sehen Sie
die allerletzte
Codezeile, die diese Tabelle
in der ausgewählten Tabelle gefunden hat. Eine andere Sache, die mir aber nicht
wirklich gefällt,
ist, dass hier Blatt
eins steht und wir hier einen
direkten Anruf haben. Und Sheet1 ist kein guter
Name, da wir
ein robustes Tool erstellen , dass dies
kein beschreibender Tabname ist. Vielleicht
ändere ich das in main. Und so haben wir
nichts
so Generisches wie Sheet1. Und jetzt, wo wir es gemacht haben, werden
wir sehen, ob das funktioniert. Ich führe das noch mal aus. Und Sie sehen, dass es
diese Namentabelle erhält und eine richtig
auswählt. Wir kennen also unsere Tabellenzeilen. List-Objekt ist die
Tabelle hier unten. Um Ihnen zu zeigen, kann
ich Tabellenzeilen,
diese Zeilenliste, diese Anzeige sagen . Und wenn diese Codezeile ausgeführt wird, mache
ich hier eine
Pause und führe sie aus. Wenn ich F8 drücke, wenn wir diese Codezeile
ausführen, weiß
es, wo sich der
Boden der Tabelle befindet, und es fügt eine neue Zeile hinzu. Jetzt gehe ich jetzt wieder zurück. Um die Dinge ein
bisschen einfacher zu machen, erstelle
ich eine Liste
von Zeilenobjekten, eine Liste von Rho. Das ist also ein neues Objekt hier. Und ich setze diese Listenzeile ein und kombiniere diese mit dem,
was ich gerade demonstriert habe. Im Wesentlichen wird dieser Code
hier eine neue Zeile hinzufügen. Aber genau zur gleichen Zeit wird
diese
Listenzeilenobjektvariable als die neue
Zeile festgelegt diese
Listenzeilenobjektvariable als die neue
Zeile , die ich erstelle. Jetzt habe ich diese
Situation, in der ich Listen Zeile
sagen kann , wählen. Und das ist nur noch einmal zur
Demonstration, wo ich hier
eine Pause machen werde, lauf. Diese Linie erstellt eine neue Zeile und erstellt diesen
Querverweis, bei dem L rho für die neue
Zeile steht, die erstellt wurde. Wenn ich es jetzt auswähle, führen
Sie diese Codezeile aus. Sie sehen unser L Rho-Objekt
hier ist diese Zeile. Jetzt höre ich
das hier auf. Und jetzt
haben wir ein Objekt, das für die neue Zeile
steht
, die wir gerade erstellt haben. Wir werden
dies verwenden, um
die Informationen in die
neue Zeile zu füllen , die wir erstellen. Hier können wir also sagen,
L rho diesen Bereich. Und wenn Sie sich die vergangene Lektion
ansehen, gehe
ich näher darauf ein. Aber im Grunde möchte ich, dass meine Artikelnummer hier oben in unsere zweite Spalte
geht,
was funktionieren würde, wenn ich sage, dass
dies der Artikelnummer entspricht,
was unsere Variable ist, die
wir hier oben deklariert haben. Also werden wir eine neue Zeile
erstellen. Und dann
sagen wir den zweiten Index. Welche dieser Zeile, der zweite Index oder die
zweite Zelle ist hier. Wir werden
die Artikelnummer platzieren. Lasst uns das einfach ausführen. Sie sehen, wir haben die
Artikelnummer in
unserer Variablen gespeichert und dann
eine neue Zeile erstellt , um den zweiten Index zu
beenden. Jetzt möchte ich das nicht
verwenden, und stattdessen möchte
ich die Spalte aus Gründen, die
in unserem vorherigen Video angegeben sind,
namentlich
herausfinden . Und ich werde
sagen, anstelle von zwei werde
ich eingebrachte
Zeilen sagen, die das Spaltenelement auflisten, da item
der Name dieser Spalte hier drüben ist. Und diese Spalte hat einen
Indexparameter, der die Spaltenanzahl des Spalte mit
dem Titel Item
zurückgibt. Das ist also das
Gleiche wie das Sagen. Der Vorteil ist jedoch, dass, wenn ich hier eine neue Spalte
hinzufüge
und sie verschoben würde, dies den
neuen Standort der Artikel zurückgeben würde. Es würde also nicht immer sagen, es wird dynamisch
herausfinden, wo sich die Elementspalte befindet. Testen wir das tatsächlich,
und wir führen das aus und Sie sehen, dass das Gleiche hier funktioniert hat. Ich
lösche diese Zeilen einfach damit wir am Ende
nicht vom Bildschirm verschwinden. Und wir
bauen das weiter auf. Jetzt, da wir dies gesehen haben, ist eine
einfache Möglichkeit, den Artikel hinzuzufügen. Vielleicht nicht so einfach, aber es ist eine Möglichkeit, den Artikel hinzuzufügen. Wir können zu
den anderen Feldern übergehen die wir bereits haben,
z. B. Wir nehmen das auf,
um es hier zu platzieren. Und das ist unser Spaltenname. Und wir können diesen
Trend fortsetzen, wo wir Einheiten und Stückpreis
sagen werden. Also hier haben wir Einheiten. Nehmen Sie das, platzieren Sie es hier,
wir erhalten den Wert der Einheiten. Wir nehmen den Stückpreis, über den wir vor dem Stückpreis scrollen müssen. Und jetzt, wenn wir dies ausführen, haben
wir all diese
Informationen genommen, gespeichert , unsere neue Zeile
erstellt und dann hier platziert. Also 1234 Elemente hier. Und ich werde
das nur in der Mitte ausgerichtet machen, also sieht es ein bisschen besser aus. Vielleicht mache ich
es hier sogar links. Dann. Jetzt haben wir diese
anderen Informationen hier, die wir noch nicht
ausgefüllt haben. Lasst uns also
jeden dieser einzeln durcharbeiten. Unser erweiterter Preis
stammt nicht aus dem Eingabefeld. Zumindest ist es das noch nicht. Aber vielleicht können wir das machen. Also lasst uns hier eine neue Zeile hinzufügen. Ich werde nur etwas Platz
schaffen und wir sagen den erweiterten Preis. Also können wir das live sehen. Ich
mache dies nur zu einer Kopie um diese Zellengrenzen zu formatieren und zu erhalten. Aber dann
wird dies eine Formel
in unserem erweiterten Preis sein , ist unsere Menge mal
unser Stückpreis. Und wir machen das zu einer Währung. Und das sind also 20 Dollar. Wenn wir also diese fünf machen, wird dies
multipliziert. Etwas, was ich hier machen möchte, ist wann immer ich eine
Formel in einer Zelle
habe, ich mache sie gerne grau. So kann der Benutzer
offensichtlich sehen, dass nicht in diese Zelle eingeben
sollte , die berechnet werden soll. Eine Kleinigkeit, die Sie hier
vielleicht bemerken, ist, wenn Sie Benannte Zellen erstellen, wie wir
es zuvor
im Video getan haben, dass anstatt verkaufen zu sagen, dass anstatt verkaufen zu sagen, die Namen verwendet werden, die
wir hier gegeben haben. Jetzt haben wir eine andere
Zelle und wir können
diesen Artikel als erweiterter Preis bezeichnen . Wir können das Gleiche
hier tun, aber wir erstellen eine neue,
neue Variable namens „Extended
Price“ als Doppel-Setup. Dasselbe ist gleich Bereich, Artikel, Endpreis. Dieser Wert. Wir können eine
andere Referenz erstellen wenn
wir diese
Informationen in die neue Zeile weitergeben Wir erstellen hier erweiterte Preise. Und unser Spaltenname für den
erweiterten Preis stammt von hier. Und hier
geben wir unseren Spaltennamen ein. Also lasst uns das laufen lassen. Wir sehen
Vanille, all das Zeug. Und wir haben in diesem Fall unseren erweiterten
Preis von 50 Dollar. Eigentlich speichere ich es
für das nächste separate Video in dem ich darüber nachgehe, wie wir einige der
unterstützenden Informationen
erstellen können . Weil wir einige
der Informationen aufnehmen und so erstellen möchten , dass der Benutzer sie nicht eingeben
muss. Wir können damit beginnen, etwas wie
eine Suche zu
erstellen , bei der die
Beschreibung beispielsweise in
den Einheiten eine Suche ist, die darauf
basiert, welches Element wir auswählen, damit der Benutzer es
nicht selbst eingeben muss.
64. 3.3.3 Quote – Nachschau von Artikeldaten: Jetzt
haben wir im letzten Video eine neue Zeile erstellt und die Informationen aus
unserem Formular „Zeilen hinzufügen“
in diese neue Zeile
abgelegt . Aber dann haben wir bemerkt, dass uns immer noch
einige Informationen fehlen. Wir haben also unseren erweiterten Preis
, den wir am
Ende unseres letzten Videos gemacht haben, aber wir haben immer noch
Beschreibung und Zeilennummer. Und ein anderes Feld
, das ich erwähnte waren die Einheiten, die
sich in Gallonen befinden. Etwas, was wir hier tun wollen ist, dass die Person keine
Gallonen eintippt und wir haben
noch keine Beschreibung des
Ortes da drin. Also lasst uns damit umgehen. Was ich tun möchte, ist es so zu machen , dass wenn eine Person ihren Artikel
auswählt, etwas wie
die Beschreibung und die Einheiten für jeden Artikel immer konsistent
sind. Und da es
eine direkte Beziehung gibt ,
dass
es immer
dieselbe schriftliche Beschreibung sein wird, wenn ich
zum Beispiel meinen Vanille-Artikel auswähle , wenn ich
zum Beispiel meinen Vanille-Artikel . Dann möchte ich nicht, dass
sich der Benutzer damit auseinandersetzen muss. Also könnte ich zum Beispiel eine Reihe hier
reinlegen. Wir nennen es eine Beschreibung. Und der unkomplizierte
Weg besteht darin,
das Gleiche zu tun , was wir
mit diesen anderen Bereichen gemacht haben. Aber dann muss der Benutzer die Beschreibung eingeben. Sie können inkonsistent sein und es ist nur eine zusätzliche
Büroarbeit für sie. Was wir dazu bringen werden
,
ist, es so zu machen, dass bei der
Auswahl des Artikels diese Informationen, die direkt mit
diesem Artikel in Verbindung stehen
können ,
automatisch ausgefüllt werden. So wie ich das mache, ist normalerweise, dass ich hier
einen zusätzlichen Tab erstelle. Und ich nenne es Unterstrich-Daten. Und es wird nur
unterstützende Informationen enthalten. Also werde ich hier oben unterstützende
Informationen sagen. Und wir machen einen Tisch. Ich erfinde es hier
und wir nennen es Item. Sagt Artikel Nummer eins. Artikel-Beschreibung Ich habe gerade das Wort
Beschreibung hier benutzt und wir sagen, was ich hier einrichte, ist eine DataTable, in der ich so etwas
sagen kann. Wo die Nummer, die wir
vorher benutzt haben, nämlich Vanille, eine Beschreibung haben
wird, die Eiscreme
besagt. Wie hier unten bin ich mir ziemlich
sicher, Eis zu Worten. Und dann haben wir unsere
Einheiten, die in Kleidern sind. Und nur als Beispiel könnten
wir hier
etwas anderes platzieren, das heißt, vielleicht
haben wir einen anderen Gegenstand, zu dem wir anrufen, wir nennen es Löffel, wo wir
Plastiklöffel verkaufen könnten das passt zu
unserem Eis, sagen
wir mal Plastiklöffel. Und wir werden sagen, dass
dies in allen
Einheiten verkauft wird, die es sich um Stücke handelt. Jetzt haben wir eine Tabelle, und
wie wir zuvor gezeigt haben, verwende
ich gerne diese benannte Tabelle. Also werde ich auf
Control und Tee drücken,
wodurch der Bereich, den ich
hervorgehoben hatte ,
zu einer Namentabelle wird. Ich werde also sagen, dass meine
Tabelle Header hat, weil wir Header in dem
Bereich haben, den ich hervorgehoben habe. Und jetzt haben wir diesen Tisch hier. Und ich nenne
diesen April-Artikel. Jetzt, da ich das habe, kann
ich
meine Gegenstände nehmen und so gestalten
, dass die Artikel, die wir in diesem Feld
auswählen, in diesem Feld
auswählen aus unseren
Gegenständen stammen
können, die hier sind. Das ist also keine
Makro- oder Automatisierungssache. Dies ist eine Excel-Funktion , die Sie
möglicherweise zuvor gesehen haben. Und wenn ich herkomme,
lass mich wieder hier rauf. Wenn ich zur Registerkarte Daten gehe, markiere
ich diese Zelle. Und dann habe ich hier
dieses Datenvalidierungsfeld. Also klicke ich das an. Es gibt eine Reihe
verschiedener Möglichkeiten die Informationen
in dieser Zelle
zu validieren. Und ich wähle die Liste aus. Und ich benutze das ständig. Und dies wird eine Dropdown-Liste
erstellen. Es gibt also ein paar Möglichkeiten, wie ich Informationen hier
einbringen kann. Ich kann so etwas tun wie Ja
sagen, Common know. Und das ist eine durch Kommas
getrennte Liste. Und sobald ich das tue, sehen
Sie, dass wir ein Dropdown-Menü erhalten, mit
dem ich Ja oder Nein wählen kann. Aber wir wollen nicht wirklich, dass
dies ja oder nein sagt. Was wir wollen,
ist, wenn ich das hervorhebe, werde
ich hierher kommen
und diese beiden hervorheben. Und du siehst, es zeigt unser Sortiment
, das ich gerade hervorgehoben habe. Dies ist die Art und Weise, wie die meisten Menschen dies in der Vergangenheit benutzt
haben. Wenn Sie
dieses Tool in Excel verwendet haben, wo wir Vanille und
Artikel zu unserem Löffel haben. Wir werden das tatsächlich ein bisschen
ändern weil dies ein
bisschen Tangente ist. Aber ein Problem, das
wir hier haben werden ist, wenn wir einen weiteren Gegenstand hinzufügen, Schokoladeneis in Gallonen
kommt, dann werden Sie feststellen, dass sich
dieses Feld nicht erweitert hat. Und das liegt daran, dass wir
diesen Bereich hier ausgewählt haben, nämlich nur diese beiden
Zellen, die ich hervorgehoben habe. So oft werden Sie
sehen, wie Leute so etwas tun wie das alles hervorheben. So wie wir unseren Daten weitere Zeilen
hinzufügen, fügen wir hier vier hinzu, fügen wir vier hinzu,
fügen hier vier, Erdbeere hinzu. Wir arbeiten uns nach oben. Wir haben dieses Feld, aber Sie haben
immer noch dieses Problem,
wo wir irgendwo geendet haben. So könntest du den
ganzen Weg nach unten hervorheben. Aber das ist meiner Meinung
nach nicht der beste Weg, dies zu tun. Stattdessen können wir diese
andere Notation hier verwenden, wo
ich,
anstatt diesen Bereich zu haben
, den wir hier einen Bereich
auswählen mussten, indirekt sagen werde. Dann kann ich die
Namen verwenden, die wir gegeben haben, die Tabelle und die Spalte. Wenn ich also im Rec sage, könnte
ich TBL-Elemente sagen, die der Name der Tabelle ist, diese Namentabelle,
die wir hier festgelegt haben. Dann kann
ich in diesen Klammern den Spaltennamen eingeben. Ich habe den Pfeil
in dieser Art von, diese Formel wirkt
ein wenig albern. Wenn Sie die Pfeiltasten drücken, wird ein anderer Bereich ausgewählt. Aber ich kann sagen, dass die
Spalte die Artikelnummer ist. Also indirekt, ich habe meinen Tabellennamen hier und dann den Namen meiner
spezifischen Spalte. Und dann wird das wissen, dass ich über diesen
Informationsbereich
spreche, der in
der Tabelle und dann in
der spezifischen Spalte enthalten ist . Also klicke ich auf Okay. Dann wirst du sehen,
dass das immer noch
genauso funktioniert wie zuvor. Alles, was wir, wir mussten keinen
bestimmten Bereich aufstellen und ich kann hier etwas
tun, wie fünf hinzufügen. Mal sehen, lasst uns noch einen
einfallen lassen. Würde es hier in solche
Butterpekannuss stecken. Und dann haben wir jetzt
unsere andere Auswahl. Dies ist also bisher eher
ein Excel-Trick als ein Automatisierungstricks. Aber jetzt werden wir hier noch
ein paar Formeln hinzufügen. Jetzt können wir eine
x-Lookup-Formel verwenden. Und in den früheren
Abschnitten dieses Kurses sollten
wir mehr Videos
zu diesen verschiedenen Themen haben. Konkret verwenden
wir
sie jetzt nur für dieses eigentliche
Projekt hier. Und so können wir eine x-Lookup verwenden , bei der wir unseren Artikel
nachschlagen werden. Das werden wir
in unserer Spalte mit der Artikelnummer nachschlagen. Und dann werden
wir in unserem dritten Parameter unsere Beschreibungsspalte zurückgeben
. Und wenn es hier
keine Übereinstimmung gibt, sagen
wir nicht gefunden. Und eine coole Sache ist
, dass wenn wir
ein X-Lookup gegen
unsere benannten Tabellen verwenden , anstatt eine Reihe
von Bereichen zu haben, die wie unsere Zellkoordinaten schwer zu
lesen sind . Stattdessen sehen Sie, dass es erkennt
, dass wir über
unsere Tabelle und die Spalte
dieser bestimmten Tabelle sprechen . Dies sind also
fortgesetzte Vorteile der Verwendung benannter Bereiche und benannter
Tabellen, anstatt nur Zellkoordinaten wie
A1 bis C zehn oder
ähnliches zu
verwenden . Wie ich Ihnen
zuvor gezeigt habe, möchte ich alle Zellen
herstellen, die
ein Formelgrau haben , damit die Leute wissen , dass Sie diese Formel nicht tippen
sollten. Am Ende eines solchen
Projekts können
Sie die Zellen immer
schützen,
aber das ist nur die
Notation, die ich gerne alles sehr sichtbar
halte. Und jetzt, wenn wir unseren Artikel
ändern, wird hier eine Suche
in der Tabelle durchgeführt. Und du siehst hier,
dass wir einen Treffer gefunden haben, aber er ist leer, also zeigt
es 0 an. Also können wir hier ein paar
Beschreibungen hinzufügen. Mach das ein bisschen breiter. Und dann können wir
das Gleiche tun, obwohl ich
hier Gallonen für unser vorheriges Video eingetippt habe, können
wir dies auch zum Nachschlagen machen. In der Tat kann ich
diese Formel, die wir hier haben, sogar nehmen. Und es ist genau das Gleiche. Nur anstatt
unsere Beschreibung zurückzugeben, möchten
wir
Einheiten zurückgeben und Sie sehen, dass sie sogar weiß, welche
Spalten sich hier befinden. Da wir also eine Namentabelle
verwenden, weiß
sie, was unsere
Spalten sind, und sie
versucht uns dabei zu helfen, diese
automatisch zu füllen. Also hier sind unsere Einheiten. Und wenn ich hierher komme
und wir zum Löffel gehen
, der der einzige
mit verschiedenen Einheiten ist. Sie sehen, dass sich die Einheiten in Stücke
ändern. Und dann
können wir zusätzlich zu
den Einheiten den Preis als Nächstes tun,
weil wir den Preis nicht kennen
oder ihn
nachholen werden , wenn wir eine Zeile hinzufügen. Stattdessen ist der Preis etwas, das
ich vergessen habe, hier einzubringen wo wir es einfach können,
ich denke, wir sind
diese Zahlen hier gemeint und dann die Hälfte des Preises, den
wir auch nachschlagen werden. Und natürlich
erfinde ich hier drüben ganz Zahlen. Wir setzen hier ein paar Preise ein und wir werden
genau das Gleiche tun. Wir nehmen unsere Suche an und
kriegen unseren Preis. Und anstatt unsere Einheiten
zurückzugeben, können
Sie es jetzt
die Texte sehen, die wir eine Preisspalte
hatten
, die ich gerade hinzugefügt habe. Das Gleiche hier. Und jetzt haben wir
die Büroarbeit, die der
Benutzer tun muss, um
ein Element auszuwählen,
wirklich reduziert die Büroarbeit, die der
Benutzer tun muss, um
ein Element auszuwählen , damit er diese Informationen nicht
kennen muss , die im Grau sind,
die alle von unserem im Wesentlichen unsere Datenbank, die gerade nur eine weitere
Excel-Registerkarte
ist. Wenn jemand diese
Informationen richtig
verwaltet, wird er immer dieselben Informationen
abrufen. Also geh zurück. Sie haben Nella, wir haben Schokolade und unsere Informationen werden
aktualisiert, während wir gehen. Also pausieren wir das Video hier, und im nächsten Video aktualisieren
wir
unser Makro „Element hinzufügen“, das diese neuen
Informationen verwendet und eine neue Zeile hinzufügen
wird. Und wir müssen uns auch mit
der Anzahl der Zeilennummern befassen und sicherstellen, dass wir diese in eine inkrementelle
Zeilennummer
füllen, wenn wir Zeilen hinzufügen.
65. 3.3.4 Quote – Grundlegende Zeile hinzufügen: Wo wir
im letzten Video aufgehört
haben, hatten wir diese Suche
erstellt bei der wir
unseren Artikel hier ausfüllen, diese zusätzlichen
unterstützenden Informationen damit wir sie
zu dem hinzufügen können , was wir brauchen unsere neue
Zeile unserer Zeilentabelle. Jetzt müssen wir
unser Makro „Element hinzufügen“ aktualisieren, das diese Schaltfläche meiner Meinung nach noch
nicht einmal angehängt ist. Damit es sich um
diese neuen
Informationen handelt , die wir
jetzt für den Artikel gezogen haben. Als erstes können wir
mit der rechten Maustaste klicken und diese Schaltfläche unserem
Makro von AD-Einzelposten
zuweisen. Wenn Sie sich jetzt erinnern,
wo wir aufgehört haben, klicke
ich auf Einzelposten hinzufügen
hier haben wir unsere neue Zeile, aber wir haben keine
Informationen wie unsere Beschreibung und
unsere Zeilennummer. Jep. Also lasst uns zuerst mit
der einfachen 1 umgehen, ich werde hier ein
paar Zeilen löschen. Nur damit wir
die Tabelle einfacher sehen können. Und wir müssen unsere Beschreibung
eintragen, die wir jetzt
mit diesem Feld hier haben, und wir haben sie noch nicht genannt. Wenn wir also bei unserer
Benennung von früher bleiben, nennen
wir es Artikelbeschreibung, und ich lasse die
Beschreibung hier einfach kurz. Schnapp dir das eine neue
Variable hier drüben. Wir sagen Beschreibung
als String. Leg es hier rüber. Beschreibung entspricht Bereich,
Artikelbeschreibung, diesem Wert. Und dann dasselbe, was wir
für diese anderen Bereiche getan haben. Wir werden
unsere Beschreibung in die Beschreibungsspalte einfügen. Wir haben also unsere Spalte hier, die aus
dieser Spaltenüberschrift stammt. Das werden wir dort einfügen. Und dann ist die Beschreibung
hier oben , was wir in
den Wert dieser Zelle eingefügt haben. Jetzt führen wir das durch. Los geht's. Jetzt haben wir unsere Beschreibung,
die wieder auf unserer Registerkarte „Daten“
nachgeschlagen wird, unserer Registerkarte „Daten“
nachgeschlagen ohne etwas
tun zu müssen, wenn der Benutzer das Element auswählt. Jetzt müssen
wir uns zuletzt
mit der Zeilennummer befassen . Sagen wir also, wir haben 234. Wir könnten davon ausgehen, dass die letzte Zeile hier
die höchste Zahl ist, aber das wird später Probleme
haben. Warum machen
wir das im Moment nicht und dann werden wir uns später mit
Problemen befassen. Das ist also am
einfachsten, dass wir uns hier nur die aktuellen
Zeilen ansehen und die letzte Nummer der Zeile
unten in der Tabelle und dann eine hinzufügen. Fangen wir damit an. Kommen wir hier rüber.
Wir werden unsere Zeilennummer hier herausfinden, nachdem
wir all die einfachen Sachen bekommen haben, die hier gerade
direkt von der Benutzeroberfläche gezogen
werden, die Zeilennummer sagen, dass es eine lange ist, wieder
eine ganze Zahl hat. Eigentlich brauchen wir unseren
Tisch, um es schaffen zu können. Also der Code, den wir verwenden werden
, der Find, wird
hier unten sein , weil wir unser
Tabellenobjekt bereits deklariert haben müssen. Also hier erklären wir unseren
Tisch, der hier ist. Und hier
fügen wir unsere neue Reihe hinzu. Also lasst es uns zwischendurch machen. Wir haben also unseren Tisch
, mit dem wir arbeiten können, aber wir haben
unsere neue Route noch nicht hinzugefügt. Lassen Sie mich das hier runterziehen
, nur um alles zusammenzuhalten. Wir sagen die letzte
Zeilennummer solange. Und lasst uns herausfinden, wie die neueste Zeilennummer zuerst ist. Das steht in der letzten
Reihe unseres Tisches. Wie kriegen wir die
letzte Reihe unseres Tisches? Eigentlich Backup hier? Wenn wir also unsere Tabelle haben, die Tabellenzeilen ist, und wir haben hier unsere
Zeilenliste. Wir können unsere
Zeilenliste wie diese auswählen. Dieser Bereich wird also nicht ausgewählt. Ich mache hier eine
Pause und drücke F5. Und wenn ich dann F8 drücke, siehst du diese
ausgewählte Zeile eins. Und wenn ich dann eine
Zwei hier drin lege und F8 drücke, die ausgewählte Zeile zwei. Das ist also Reihe vier hier. Aber wir müssen hier
eine Nummer angeben, aber wir
müssen sie nicht fest codieren. Stattdessen können wir Kabelleitungen sagen,
die auflisten und wieder angestiegen sind. Stattdessen haben wir eine
Eigenschaft namens count, nämlich die Anzahl der Zeilen
, die in der Tabelle enthalten sind, die Anzahl
der Zeilen zurückgibt, was vier ist. Und das wird
auch die letzte Zeile sein, wie wir sagen, wir
wollen Zeile vier zurückgeben, was die
Gesamtzahl der Zeilen ist. Sie können hier sehen, wenn ich das nach oben
ziehe und F8 drücke, wählen
wir die letzte Zeile aus,
und das wird funktionieren. Nun, wir haben noch eine Reihe, sagen wir fünf Reihen als nächstes. Dass dies
zurückgeben wird, dass es
fünf Reihen gibt und uns die fünfte Reihe
bringen wird. Und von hier aus wählen
wir es gerade aus. Stattdessen können wir
den ersten Index hier
anstelle der gesamten Zeile ziehen . Und wenn ich
wieder hierher komme, schalte
ich diesen
Zeilenumbruch aus und drücke F8. Wir wählen die erste
Zelle dieser letzten Zeile aus. Wenn wir dies also miteinander kombinieren, können
wir sagen, dass unsere
neueste Zeilennummer der Wert dieser Zelle
ist, anstatt sie einfach auszuwählen. Und wir könnten noch weiter gehen. Ich weiß, dass diese
Codezeile sehr
lang wird und ändere diese, um
dasselbe zu verwenden, was wir
vorher gezeigt haben , wo wir nach der Listenspalte, dem
Index der Zeilennummerspalte
suchen . Aber ich lasse
es einfach als eins hier. Oft belasse ich es vielleicht
nur dann wenn es
die erste Spalte ist weil es so unwahrscheinlich ist, dass dies etwas
anderes als die erste Spalte sein wird, wir werden keine neuen Zellen
einfügen hier oder neue Kolumne hier. Das wird das
noch nach rechts schieben. Jetzt haben wir angeblich
unsere neueste Linie hier. Also dann können
wir unsere Zeilennummer sogar
neue Zeilennummer nennen. Mal sehen, wo der Break-Modus
hier ist, also stoppe ich alles. Es ist also einfacher, unseren Code zu bearbeiten. Wir rufen diese neue Zeilennummer an. Und dann
setzen wir hier eine neue Zeilennummer gleich Nummer plus eins. Also
probiere ich das hier draußen aus. Drücken wir hier F9, F5,
versehentlich F5. Und so siehst du, dass wir hier eine neue Zeile
hinzugefügt haben, aber wir haben
diese neue Nummer nicht verwendet. Wenn ich also F8 treffe, sehen
wir hier unsere neueste Zeilennummer 0. Ich vermassele die Dinge, weil ich versehentlich diese neue Zeile hinzugefügt habe. Dies ist einer unserer Fehler bei dem System, das
wir hier verwenden, obwohl wir
vorerst damit laufen werden, bis wir es verbessern. Aber wenn diese letzte Zeile
versehentlich leer ist, ist die letzte
Zeilennummer 0, anstatt zu erkennen, dass es hier eine Vier
gibt und dies sollte fünf sein und unsere
neuen Zeilen werden sechs sein. Das ist also das Problem, das ich hier gerade
versehentlich erstellt habe. Also wenn ich hier bin und
diese Zeile lösche, führe
ich das aus, ich höre
hier auf und drücke F8. Und Sie sehen, dass die letzte
Zeilennummer vier ist. Und unsere neue Zeilennummer ist fünf. Also werde ich das jetzt beenden,
bevor wir Änderungen vornehmen. Und dann fügen wir
eine neue Zeile hinzu. Und dann ist das
Einzige, was wir
hier vermissen , dass ich
zu unserer Zeilennummer komme. Und wir werden das schaffen. Ich
kopiere es einfach und füge es von hier aus ein, damit du
sehen kannst, woher es kommt auch
von unserer
Spaltennummer in unserer Tabelle. Dies ist unsere Zeilennummer, und dann wird dies
die Variable sein , auf der wir
eine neue Zeile erstellt haben. Also werde ich diese Pause entfernen und
wir werden das hier machen. Wir kriegen unsere letzte Nummer Fünf. Und wir werden das ändern. Und jetzt bekommen wir unsere
letzte Nummer Sechs. Das wird also vorerst funktionieren. Aber wie wir bereits gesehen haben, in einer Situation, die ich
versehentlich geschaffen hat
dies
in einer Situation, die ich
versehentlich geschaffen habe, viele Löcher
darin, die Probleme verursachen können. Und wir werden das einstellen, während wir dieses Projekt
durchlaufen , damit
der Rasen nicht besser funktionieren kann.
66. 3.3.5 Quote – Zeile löschen – Zeile auffrischen: Am Ende unseres letzten Videos haben wir
unsere Schaltfläche „Zeile hinzufügen“ aktualisiert, die ich einfach hierher bewegen werde. Und wir haben uns ausgedacht, wie unsere nächste Zeilennummer
aussehen würde, wenn wir eine Nummer hinzufügen. Also haben wir herausgefunden, dass wir die inkrementelle nächste Zahl
bekommen. Und sofort merke ich, dass wir das Problem
sofort lösen werden , da ich sogar versucht mit dieser Zeilentabelle
zu arbeiten. Also denke ich, dass wir uns
jetzt damit befassen
müssen , dass ich diese Zeilen löschen werde, wenn
ich diese Tabelle bereinigen
und diese Daten einfach kleiner
machen möchte diese Zeilen löschen werde, wenn
ich diese Tabelle bereinigen
und diese Daten einfach kleiner
machen . Und meine Zeilen sind hier sofort
aus der Reihenfolge. Und das ist also ein Problem. Jetzt müsste ich hier manuell
reingehen und diese 212 ändern. Lassen Sie mich die Formatierung
hier ein wenig ändern. Und wir bringen all das
Zeug nach links. Wir räumen
das ein bisschen auf. Ich werde jedes Jahr ein paar
Zahlen ändern. Das ist nicht wichtig,
aber es wird mich
verrückt machen, wenn ich
es nicht ein bisschen repariere, nur ein bisschen OCD dort. Und wir haben dieses Problem
, bei dem die Zeilennummern nur funktionieren, wenn wir
diese perfekte Situation haben , in der
wir eine neue Zeile hinzufügen. Und da ich mich dann anpassen muss, ändern sich
meine Informationen nicht. Also lasst uns damit umgehen. Dass ich
eine Funktion erstellen
werde, die auch die Zeile löscht. Anstatt also nur eine Schaltfläche
zu haben, wir
beim Hinzufügen eines Elements möchten
wir
beim Hinzufügen eines Elements
eine Benutzeroberfläche erstellen. Der Benutzer muss also nicht das
tun, was ich getan habe, nämlich mit der rechten Maustaste auf die Zeile und lösche die Zeile,
um sie loszuwerden. Machen wir es als Teil dessen, was wir hier im Wesentlichen
nachahmen, was eine vollständige Anwendung ist. Und das bauen wir direkt
in unsere Benutzeroberfläche ein. Genau wie wir es getan haben. Element hinzufügen erstellt eine
Schaltfläche namens „Element löschen“. Und wir werden uns damit befassen,
wie man das baut. Und wir können dies sehr benutzerfreundlich gestalten, indem wir es einfach so gestalten, dass das ausgewählte
Element gelöscht wird. Wir sagen also „
Ausgewähltes Element löschen“. Und das ist eine wirklich
einfache Funktion. Diese Schaltfläche führt nur
diese Funktion aus, indem Sie mit der rechten Maustaste klicken
und die Zeile löschen. Aber es gibt viele Konzepte
, in die wir hier einbauen werden. Ich denke also, dass es sich
lohnt zu sehen, die
mit der alle interessanten
Konzepte zu sehen, die
mit der Erstellung dieser
einfachen Funktion verbunden sind , oder zumindest das, was an der Oberfläche
einfach ist. Teilen wir das also noch einmal auf,
damit wir alles sehen können. Und wir werden das tun ist unser
ausgewähltes Element hier zu löschen. Erstellen wir also eine neue
Subroutine, um damit umzugehen. Und genau das werden
wir am
Ende an den Button anhängen. Wir sagen also „Ausgewähltes Element
löschen“. Wir beschreiben es als
Lösche die ausgewählte Zeile aus dem Stapel der aktiven
Zelle. Wenn also die Person hierher
kommt, haben wir
drei Punkte und markieren diese zweite Reihe. Wir klicken auf Ausgewähltes Element
löschen, und dies ist die Zeile, die verschwinden
wird. Und dann ist das Problem, das
wir hier lösen ,
auch, dass
wir
unsere Zeilennummern neu berechnen werden, damit die
Leute diese Zeilen nicht manuell
löschen müssen und dann
dieses Problem mit
unseren Zeilennummern haben . Also
müssen wir zuerst sehen, was die ausgewählte Zelle ist. können wir also
mit aktiver Zelle machen. Wenn wir aktive
Zelle sagen, die ausgewählt ist, ist
das irgendwie redundant da die aktive Zelle bereits ausgewählt
ist. Aber sagen wir etwas anderes. Nehmen wir an, debuggen Sie die aktive
Zellpunktadresse. Also lasst uns das stattdessen machen. Weisen wir diesen Button hier
unserer neuen Subroutine zu und löschen das ausgewählte Element. Und wenn wir
darauf klicken, sollten wir sehen unser Debug-Print E6 sagt. Und das liegt daran, dass wir Zelle E6 ausgewählt
haben. Wenn ich also hier drüber klicke, haben
wir C 20, was die Zelle ist, die
wir ausgewählt haben. So können wir diesen Akt des Selbst
nutzen, welches Ende, das in VBA integriert ist. Stell dir vor, wir können hier sogar rudern. Wenn Sie also einen Bereich haben, ist die
aktive Zelle ein Bereichsobjekt. Wir haben auch unser Reiheneigentum. Wenn ich das mache,
siehst du, dass wir auf der Route 20 sind. Jetzt
können Sie eine Zeile am einfachsten löschen wenn wir unser Listenobjekt
aus meiner Listen-Zeilentabelle verwenden. Lassen Sie uns also
unser Listen-Zeilenobjekt noch einmal deklarieren, genau wie wir es hier oben getan haben. Und jetzt haben wir dieses
Listenobjekt, an dem wir arbeiten können. Wenn wir also auf Route 20
hier in der Tabelle sind, haben wir in unserem letzten Video gezeigt,
dass wir
dies tatsächlich tun können und die Liste der Zeilen sagen können,
um Dot diesen Bereich auszuwählen. Und wenn wir so
etwas gemacht haben, ist
dies unsere zweite Reihe. Aber wenn wir
unsere aktive Zelle verwenden, haben
wir unsere aktive Schiene 20 in der
Tabelle selbst. Also müssen wir Zeile 20
übersetzen, um Route zu
werden, weil wir diese integrierte Funktion
haben, aber wir wollen die
Nummer zwei daraus herausholen. In diesem Fall, wenn wir
auf dieser Route 20 sind
, könnten wir
unsere aktive Zellpunktzeile nehmen und
dann den Unterschied subtrahieren. Wenn wir also
zum Beispiel
bei 18 von hier abziehen, verwenden Sie einfach die
Informationen, die wir bereits gesammelt haben. Das wäre 20.
Du würdest 18 subtrahieren, und dann wärst du in Reihe zwei. Wenn Sie dann in Zeile 21
hier in der Tabelle und dann 18 subtrahieren, haben
Sie drei, und dann befinden
Sie sich in der dritten Liste. Es
nimmt also im Grunde nur den Unterschied zwischen hier nach hier hin. Sie können also
Ihre Arbeitsblattzeile
in die Listenzeile
dieser tatsächlichen Tabelle übersetzen . Das ist also eine gute Idee, abgesehen von der Tatsache, dass
wenn wir hier irgendwelche Zeilen hinzufügen, die wir wahrscheinlich durch
dieses Projekt durchlaufen werden, die Dinge
herumschieben werden und das dann nicht mehr
richtig funktioniert. Stattdessen
wollen wir 18 nicht fest codieren. Das ist
unserer Listenspaltenidee sehr ähnlich. Wir wollen 18 nicht fest codieren. Stattdessen können wir hier die
Zeile erhalten, die 18 ist, und wie viele Zeilen sind der Unterschied
zwischen dem Beginn
unserer ersten Zeile mit
dieser anderen Funktion. Also werde ich das sehr schnell kommentieren
. Und wir können Tabellenzeilen sagen, Punkt. Und unser List-Objekt hat eine Eigenschaft, die als Kopfzeilenrage bezeichnet
wird. Und wenn ich das auswähle, wirst
du sehen, dass es weiß,
welche Reihe heterozygot ist. Also machen wir das Gleiche hier. Wenn wir eine Zeile haben,
wird das zurückgeben, in welcher Zeile sich dieser Bereich befindet. Es findet also unseren Header
unserer Tabelle und
gibt dann die Zeilen zurück. Kann ich das drücken? Wir haben zu viel Zeug hier drin, also schaffe ich das raus
und wir haben 18 hier drüben. Was ich dir gezeigt habe, ist, wenn
ich diese 18 durch
etwas ersetzt habe , das
dynamisch dahin kommt wo der Hetero ist. Jetzt machen wir
das gleiche Konzept den Offset zwischen der Tabelle und
der Listenobjektzeile herauszufinden Tabelle und
der ,
nur dass er dynamisch ist. Wenn ich also hier F5 drücke, können
Sie sehen, dass wir diese dritte
Zeile hier
auswählen, und ich kann die
zweite Zeile unserer Tabelle hervorheben. Und es wird jetzt klar, dass
dies das Listenzeilenobjekt ist, auf dem ich mich befand. Jetzt wählen wir nur eine Zeile aus. Ich werde das hier
etwas breiter machen. Stattdessen können wir diesen Bereich
jetzt
nutzen , da wir wissen
, dass wir
die richtige Zeile auswählen und
einfach löschen sagen. Wenn ich jetzt
hier bin und darauf klicke, kannst
du sehen, dass es wusste, dass es die Zeile
war, die wir vorher
auswählen. Stattdessen führen wir den Befehl
delete dagegen aus. Wir können hier einen neuen Artikel hinzufügen. Und wir können diese Zeilen löschen. Sie sehen, dass wir unser Problem immer noch
haben , weil wir es noch nicht
angegangen haben. Aber zumindest löschen
wir
jetzt eine Zeile durch irgendeinen Code hier. Und das
gibt uns eine gewisse Kontrolle was wir im
Rahmen des Verfahrens tun können. Was passiert jetzt, wenn wir hier
hochklicken und auf Auswahl
löschen klicken? Wir haben hier einen Fehler getroffen. Und das liegt daran,
dass Sie bei all dieser Mathematik
sehen werden, dass es keine Listenzeile
gibt. Es wird so etwas wie
16 minus 18 sein, ist negativ zwei. Und dann ergibt das keinen
Sinn mehr. Daher ist es wichtig
für diese Funktion, die Arbeit, dass wir
eine Zelle innerhalb dieses Tabellenbereichs auswählen . Wir wollen hier vorsichtig sein
, weil wir Sachen löschen. Jedes Mal, wenn wir Dinge löschen, können
wir versehentlich unsere Tabelle
durcheinander bringen. Aber ich weiß, dass selbst wenn
wir in diesen Header klicken, es nicht funktionieren wird,
weil das 18 minus 18 gleich 0 ist . Und so gibt es
keine Liste von Zeile 0. Also hören wir hier auf. Bevor wir also
versucht haben, eine Zeile zu löschen , prüfen
wir dies. Wir müssen sicherstellen
, dass die Zelle, die wir auch
unten ausgewählt haben, nicht funktioniert. Wir müssen sicherstellen
, dass die von uns
ausgewählte Zelle in diesem Bereich liegt. Hier drüben. Es liegt speziell in den Daten der Tabelle. Unser Listenobjekt hat also wieder unser Hetero-Sortiment, sondern auch unser Datenkörperbereich. Und ich verwende einfach
wieder select , damit du
sehen kannst, was los ist. Ich werde
einen Haltepunkt erstellen, F5 und einen F-Glaubenslauf
treffen, nur diese Zeile und Sie sehen, dass sie
ausgewählt ist , der den
Datenkörperbereich enthält. Wenn ich hierher komme und F8 trete, weiß
es, wo die
Daten unserer Tabelle sind. Jetzt brauchen wir eine Funktion
, die
herausfindet , ob sich unsere
aktive Zelle hier befindet oder nicht. Also kenne ich
diese Funktion tatsächlich, aber du könntest zum Beispiel zu
Google gehen. Und ich würde
etwas wie VBA eingeben. Herman, wenn die aktive Zelle innerhalb eines bestimmten Bereichs
oder so ähnlich
ist. Und Sie sollten das Ergebnis
für den Befehl erhalten , den ich verwenden werde. Es ist ein bisschen ein
nicht intuitiver Befehl. Wir werden also sagen, wenn nicht, schneidet das aktive
Zellkomma und unseren Bereich,
nämlich Tabellenlinien, die
David mit zunehmendem Alter verkörpert. Nichts. Eigentlich möchte
ich also nicht nein sagen. Ich werde tatsächlich entfernen,
dass der Schnittpunkt nichts ist als Zellkörper der Lunge. Dies gibt also im Grunde einen Wert
zurück. Es gibt einen Bereich zurück, wenn sich dieser Bereich und dieser andere
Parameterbereich überlappen. Wenn es also eine Überlappung gibt, wird der Bereich zurückgegeben, sich überlappt, nichts, sagt, dass der nichts
zurückgibt. Wenn also Diese Funktion, die
die Überlappung findet , nichts zurückgibt, bedeutet
das, dass es keine Überlappung
gibt. Wenn es also keine Überschneidungen gibt, senden
wir ein Nachrichtenfeld. Der Benutzer, der sagt, dass die aktive Zelle nicht in den Tabellendaten enthalten
ist. Wählen Sie die Zelle aus. Und was wir dann tun
müssen, ist aufzuhören denn wir werden es ,
denn wir werden es im
Moment einfach
verlassen. Wir wollen nicht, dass diese Linie
läuft, wenn wir die Situation treffen. Stattdessen
werden wir etwas anderes sagen. Ein paar verschiedene Möglichkeiten, dies zu tun. Eine andere Möglichkeit, dies
zu tun, besteht darin den gesamten Prozess hier zu
beenden,
wenn wir diese Situation treffen. Aber stattdessen mache ich es einfach
im Haus hier. Wenn wir uns also nicht überschneiden, sendet
es diese Nachricht. Wenn wir uns dann überlappen, können wir fortfahren und unseren Löschbefehl
ausführen. Siehst du, wenn
ich hier draußen bin, kann ich
sie nicht ausführen, ich höre auf, damit wir hier anfangen
können. aktive Zelle befindet sich nicht
in den Tabellendaten. Bitte wählen Sie die
Zelle aus. Wenn wir jetzt wieder hierher
kommen, funktioniert es
jetzt. Und jetzt ist der Teil, der uns
ursprünglich dazu gebracht hat,
diese Funktion
zu erstellen , dass wir diese Zeilen hier behandeln müssen. Wenn wir also eine Zeile löschen, sollten
wir neu bewerten,
was unsere Zeilen sind. Lassen Sie uns also hier etwas Code erstellen und Zeilennummern
neu bewerten. Also könnten wir versuchen, uns
das anzuschauen und das herauszufinden. Stattdessen denke ich, dass
Sie einfach unsere
Zeilennummern löschen und ersetzen müssen,
und wir werden sie einfach von Grund auf neu erstellen
. Es ist ziemlich einfach
zu zählen, nur eins und aufwärts. Also lasst uns das machen. Lasst uns unsere Reihen durchlaufen. Also werden wir sagen, dass ich gleich 12 ist und dann unsere Anzahl an
Zeilen, Zeilen, gedankenlosen Zeilen. Jetzt verwenden wir
unsere Tabelleneigenschaft. Wir haben keine IN-Variable deklariert. Also werden wir
sagen, dass ich so lange ich. Also haben wir diese
Schleife erstellt, die eine bis zur
Anzahl der Zeilen
durchläuft . Es gibt nur
zwei. In diesem Fall. Wir werden
Tabellenzeilen sagen, diese Zeilen. Und dann ist dies wieder
die Zeile in der Tabelle. Und wir können unser Gegenion benutzen. Es wird also eins sein und dann Reihe zwei und dann Reihe drei. Und dann sagen wir „Reichweite“. Das erste Teil
des Bereichs ist also immer die
Zeilennummer auf der linken Seite, weil es
die erste Zelle in der Zeile ist. Dieser Wert ist gleich I. Also gehe ich 123 und dann wird es die Zeilen
beschriften. Also lasst uns das laufen lassen. Tatsächlich werde
ich dies in eine separate Subroutine
aufteilen, die wir in unseren
früheren Videos hatten, die wir eine Subroutine von einer
anderen Subroutine
nennen können . Nehmen wir an, Zeilennummern aktualisieren, wird dort eine neue
Subroutine erstellen. Wir
nehmen einfach das ganze Ding hier, schneiden und einfügen. Der einzige Haken hier ist , dass unser
Listenobjekt für Tabellenzeilen nicht deklariert ist. Also müssen wir es
in dieser separaten Sub-Routine noch einmal deklarieren . Und lasst uns das nochmal machen. Und jetzt können wir dies ausführen und die Zeilennummern
aktualisieren ohne das
Löschen einer Zeile auszuführen. Du siehst also, dass es das hier gerade
neu berechnet hat. Schlag das nochmal. Wenn ich hier
eine weitere Zeile hinzufüge,
123, funktioniert das. Wenn ich das alles kläre
, aktualisieren wir
unsere Zeilennummern. Und wenn wir dann
ein ausgewähltes Element löschen, haben
wir dieses Problem immer noch hier. Aber dann können wir diese
separate Subroutine aufrufen, die
die Zeilennummern ganz
am Ende unseres
Löschvorgangs aktualisieren wird . So können wir einen Einzelposten hinzufügen. Hier ist etwas Interessantes, mir ist nur klar, dass
wir unsere Linien durcheinander gebracht haben. Wir haben hinzugefügt, dass eine Zeile läuft, hey, die letzte ist drei, also muss Ihre nächste vier sein. Etwas, was wir tun
können, ist, dass wir das zu einer Subroutine
gemacht haben,
gut, dass wir es getan haben. Wir können dies noch einmal verwenden, auch wenn wir einen Einzelposten
hinzufügen. Hier ist also unser Artikel zum Hinzufügen. Und ganz am
Ende aktualisieren wir
die Zahlen noch einmal, nur um
sicherzustellen, dass sie korrekt sind, da dies ein sehr
kleines Stück Code ist, der ausgeführt werden muss. Wenn ich jetzt einen Einzelposten hinzufüge, es sogar alles neu bewertet, auch wenn wir etwas manuell durcheinander
bringen und unsere Zeilennummern neu berechnet werden,
damit sie korrekt sind. Wenn ich dann einige Zeilen löschen
möchte, kann ich diese auswählen. Und es berechnet sich
jedes Mal neu. Und Sie werden hier sehen, selbst wenn wir Vanille
als vierte Zeile hinzufügen, werden
wir
dies löschen und Sie können tatsächlich sehen, dass dies die
Zeile ist, die gelöscht wird. Aber die Zeilennummern
sind jetzt wieder korrekt. Okay. Eine letzte Sache, die ich Ihnen zeigen
möchte, als ich die Aufnahme
früher in diesem Video
überprüft habe, ist diese andere Art, die einfacher gewesen
wäre? Zu Beginn
des Videos haben
Sie vielleicht gedacht, haben
Sie vielleicht gedacht, warum klicken wir nicht einfach mit der rechten Maustaste
und löschen die Zeile? In diesem Fall
würden wir all
die Logik vermeiden , die wir tun mussten
, um
das spezifische Listenzeilenobjekt
der Tabelle zu bestimmen , wenn wir die gesamte Zeile
der Tabelle so
löschen konnten . Anstatt in die Liste gezielt in
die führende 0 hier zu gehen. Dies ist ein weiterer
magischer Teil der benannten Tabelle,
die wir hier haben, oder das
Listenzeilenobjekt ist, dass wenn wir mit der
Listenzeile oder dem Listenobjekt arbeiten, es genau weiß, dass wir sprechen über diese Reihe. Und das ist etwas, was Sie tun können, ist diese Trennung
zwischen genau
derselben Zeile hier zu haben , wo, wenn wir
dies in einer Tabelle löschen, dies
natürlich verschwinden
wird. Wenn wir jedoch mit
dem Listenobjekt
dieser Tabelle in der
Listenzeile arbeiten dem Listenobjekt
dieser Tabelle in der , ist Excel wirklich gut herausfinden
können
, dass wir nur mit unseren Daten
arbeiten innerhalb
dieses Bereichs, anstatt mit den Zeilen
oder Spalten der
gesamten Tabelle zu
arbeiten . Das ist also einer der
Gründe, warum wir mit unserem Listenobjekt
und unserer Namentabelle
arbeiten, ist dass Excel
wirklich gute Arbeit leistet und erkennt, dass dies speziell
unsere Daten hier sind. Und wir wollen uns nicht
bemühen, Dinge zu
beeinflussen , die sich außerhalb davon
befinden. Das war's also. Ich
wollte das nur am Ende
des Videos
als weitere Erklärung hinzufügen. Es gibt.
67. 3.4.1 Quote – 3.4.1: Okay, jetzt, da wir unsere Funktionen
abgeschlossen haben in denen wir unser
Angebot erstellen und Zeilen hinzufügen können, und wir können
ausgewählte Zeilen löschen und die grundlegenden Informationen
für unser Angebot hier
einrichten . Lassen Sie uns zu einer
echten Automatisierung übergehen. Ich bin sicher, dass wir hier eine
Reihe von Details vermissen, aber das werden wir später hinzufügen. Lassen Sie uns fortfahren und
in unseren Schritt eingehen dem wir eine neue
Schaltfläche hinzufügen, die unser
aktuelles Angebot abbrechen
wird hier unser
aktuelles Angebot abbrechen
wird, da wir noch kein Makro
haben. Ich füge diesen neuen
Button hinzu, sage „create“. Es gibt eine Reihe verschiedener
Möglichkeiten, wie wir ein Angebot machen können. Aber nur für den Anfang, weil wir gerade hauptsächlich in Excel
automatisieren, erstellen
wir unser Angebotsformular, da eine andere Excel-Datei später
die Möglichkeit hat,
dies zu aktualisieren und zu einer
Microsoft Word-Datei zu machen PDF und all diese
verschiedenen Möglichkeiten, wie wir Dokumente automatisch
generieren können. Aber um auf dem aufzubauen, was
wir bisher durchgegangen sind, werden
wir unsere Angebotsausgabe vorerst
in einer Excel-Datei erstellen. Lassen Sie uns dieses Angebot einrichten, damit
wir hier einen Kunden brauchen. Wir sagen
Eis-Eis-Großhandelstinte als
unseren Kundennamen. Und unser Kontaktname
wird etwas sein. Wir können es tun. Ein kurzer Name hier. Und schnappen wir uns
Clay O'Neill hier. Unser Kontaktname
wird also Ton auf Neil im
Eiscreme-Großhandel sein .
Denken Sie jetzt, dass es
einige Möglichkeiten gibt , dies zu tun,
obwohl
wir uns entschieden haben, unsere Ausgabevorlage in
Excel oder Output Quote zu erstellen . kann entweder aus einer Excel-Datei
vollständig von
Grund auf neu generiert werden . So könnten wir hier
eine neue Arbeitsmappe erstellen
und hier eine neue
Angebotsvorlage erstellen, komplett von Grund auf neu
und unseren Code erstellen lassen
,
wie ein Angebot aussehen könnte. Es wird also anfangen,
hier zu sagen und tatsächlich
Sachen zu tippen , und wir müssten
alle unsere Zellen und alles neu anordnen . Eine andere Möglichkeit, dies zu tun besteht darin,
dass der Code nicht viele Details erstellt, sondern stattdessen
ein Angebotsformular als
eigenständige Excel-Datei einrichten , und dann öffnen wir das und
füllen im Wesentlichen aus in den Rohlingen. Die Informationen, die wir aus unserem Angebot hier
haben, das einzige, was
sich ändert, sind im Grunde unser Inhalt in unserer Kopfzeile
und dann unsere Zeilen. Und so können wir eine
ganze Vorlage erstellen, die bereits in
dieser gespeicherten Excel-Datei auf
eine bestimmte Weise aussieht . Und unsere Makros öffnen einfach die Vorlage und bringen
die Informationen dann an
die richtige Stelle. Um anzufangen. Diese zweite Option
klingt viel einfacher. Also lasst uns weitermachen und
anfangen, diese Idee zu entwickeln. Also werde ich
das tatsächlich schließen. Wir kommen hier zu
unseren Angebotsakten. Hier befindet sich unsere
Haupt-Excel-Datei. Und vielleicht
lege ich es einfach hier in diesen Ordner und wir
erstellen eine neue Excel-Datei. Und das nennen wir. Ich verwende hier einen Unterstrich, um
ein Leerzeichen zu vermeiden. Wir werden das öffnen. Und das ist eine
brandneue leere Excel-Datei. Und wir machen dies zu
unserer Angebotsvorlage. Ich werde keinen sehr
guten machen, denn das ist nicht unbedingt die Idee
dieser Tutorials. Also werde ich hier eine
ziemlich grobe machen. Nehmen wir an, ein Zitat wird diese Art von
Ähnlichkeit hier
ausmachen. Wir sagen, vielleicht geben wir
unsere Angebotsnummer hier ein. Wir sagen Kundenkontakt. Und dann haben wir hier ein paar
Informationen darüber dass
unser Angebot
uns hier Stil macht, wir formatieren dies als Tabelle. Warum gehen wir nicht mit Grün, ich schätze, vielleicht gehen wir hier
mit einem grünen Thema. Wenn unsere Rasterlinien in Ihrer
Angebotsnummer hier rübergehen können , machen Sie diese Schriftart
stattdessen ein
bisschen größer, erstellen Sie hier einige Grenzen
. Ich bin hier. Okay, nun, fang einfach
damit an. Ich speichere diese
Vorlage und wir
müssen diese Vorlage so
einrichten, dass es für
uns relativ einfach
ist , Informationen
in diese Bereiche zu platzieren. So das gleiche Konzept,
über das ich hier oft gesprochen habe. Wir möchten es nicht einfach in Zelle B3
platzieren, obwohl wir
sogar in dieser Ausgabevorlage benannte Bereiche
erstellen können, damit wir mit
diesen Feldern
einfacher für Ihren Kunden arbeiten können Kontakt. Und wir nennen diesen Tisch. Tabellenzeilen
verwendeten tatsächlich seine Namens-Tabellenzeilen wieder. Ich weiß nicht
, ob das eine großartige Idee ist, aber es ist eigentlich eine ganz
andere Datei. Sie werden also sehen, wie wir mit
dem gleichen Namen
davonkommen können , und
wir werden damit arbeiten. Obwohl es sich um einen Namen handelt, den wir in unserer anderen Excel-Datei
verwendet haben , ist es vielleicht besser, Tabellenausgabezeilen
zu sagen, aber wir belassen es so und Sie werden später sehen, wie das im Code
umgegangen wird. Und hier oben ist auch ein Feld. Und wir machen diese Nummer. Okay, lasst uns vorerst
damit laufen.
68. 3.4.2 Quote – Excel Output 3.4.2: Okay, lasst uns vorerst
damit laufen. Ich hebe das auf. Und jetzt haben wir diesen
coolen Knopf hier drüben. Gehen wir zu unserem Code. Und wir teilen unseren Code hier
auf, wie wir es normalerweise tun. Und wir haben diesen
Button auf F5 klicken. Ich denke, das wurde generiert
, als ich den Button erstellt habe. Lassen Sie uns das tatsächlich zu einem
anderen Subroutinennamen machen. Und wir nennen das Generate. Und wir ändern dieses
Modul um einen Namen. Generieren Sie Dokumente. Auch hier, nur um
alles auf beschreibende Weise
zu biegen alles auf beschreibende Weise , um umsetzbar zu generieren,
sagen wir mit Excel. Okay, also haben wir unsere separate
Excel-Datei, die wir gerade als Vorlage
erstellt haben. Und deshalb müssen wir diese Datei
öffnen, um zu starten. Lassen Sie uns also ein
Arbeitsmappenobjekt festlegen, das für diese
Excel-Datei stehen wird , die wir geöffnet haben. Denn dann müssen
wir mit dieser Arbeitsmappe
interagieren. Wir sagen Arbeitsmappe, zitieren Sie als dieses Arbeitsmappenobjekt. Dies ist also eigentlich eine Objektvariable für
eine Excel-Arbeitsmappe, im Wesentlichen eine Excel-Datei. Und wir werden
sagen, set wb gleich ist. Und dann öffnen wir
eine Arbeitslast, von der ich denke
, dass es Arbeitsmappen sind. Du siehst tatsächlich, dass ich hier den Kontrollraum
auswähle. Und es hat automatisch ein S hinzugefügt ,
weil das das einzige
Schlüsselwort ist, heißt open. Und dann brauchen wir den Weg unserer Angebotsvorlage hier drüben. Lassen Sie uns also fortfahren und
diese Dimension als String erstellen. Was das braucht, um den
vollständigen Weg unseres Zitats zu sein. Was das bedeutet, ist
hier, unser Ordnerpfad. Und dann Backslash, unser
Dateiname hier drüben. Und ich füge diesen
Dateinamen hier hinzu. Und das ist der vollständige
Pfad dieser Datei. Ein einfacherer Weg, das zu erreichen. Es gibt Windows 11 hier. Sie können copy als Pfad verwenden. Und das ist auch der vollständige Weg. Das ist also wirklich einfach
dasselbe da drüben, aber das ist eine schnellere Möglichkeit, den vollständigen Pfad
jeder Excel-Datei
zu erhalten , wenn Sie in Ihrem
Datei-Explorer
navigieren. Jetzt ist die Arbeitsmappe, die
wir
öffnen werden, unsere Angebotsvorlage. Und wenn wir es öffnen, werden
wir
dieses WB-Angebot als
Arbeitsmappe festlegen , die wir öffnen. Und wir können das ausprobieren. Lasst uns Play drücken. Und du siehst unsere Vorlage gerade hier
geöffnet wurde. Als Beispiel können wir WB
sagen, Zitat close, da dieses Objekt für unsere Datei
steht
und Sie sehen können, ob ich F9 drücke, also hören wir hier auf, ich drücke F5. Das läuft also und
das ist jetzt geöffnet. Und wenn ich dann F8 drücke und
diese geschlossene Zeile ausführe , wird
diese Arbeitsmappe geschlossen. Sie sehen also jetzt, dass wir
dieses Arbeitsmappenobjekt haben, das diese
Datei sein wird und wir können damit arbeiten. Bevor wir
diesen Workshop schließen, wollten
wir
etwas damit machen. Wir wollen all
diese Informationen verschieben. Und eigentlich
wollen wir die Arbeitsmappe nicht einmal schließen, also kommentieren wir
das vorerst. Ich weiß nicht, ob wir das später
benutzen werden, aber wir werden es schaffen. Lasst uns jetzt weitermachen
und das machen. Und wir haben diese Arbeitsmappe geöffnet. Und jetzt können wir
über die Informationen nachdenken wir hier bevölkern müssen. Wir sehen also, dass wir
unsere Angebotsnummer haben, wir haben unseren Kunden - und Kontaktnamen.
Fangen wir damit an. Grundsätzlich sind die drei
Informationen da oben, sagen
wir Nummer als String, Kunde, als grau und Kontakt. Lasst uns das Zeug
von unserer Benutzeroberfläche holen. Hier auf der linken Seite ist
der Wert unseres Sortiments. Zitieren Sie die Nummer. Hier drüben. Wir haben diese beiden Zellen, die
wir noch nicht genannt haben. Also können wir hierher kommen und diesen Kundennamen
anrufen. Und wir sagen „Kontakt“. Der gute alte Ton O'Neill hier drüben. Und wir haben einen
Kunden gleich Reichweite. Punktwert des Kundennamens und unser Kontaktname ist gleich
rein, wenden Sie sich an den Wert. Eine Sache, die ich hier erwähnt ist, dass ich
diesen Bereich nur ausrufe. Aber etwas, das
ein bisschen verwirrend werden kann. Und ich denke, es geht uns vorerst gut, aber es kann sicherlich das Programm
selbst durcheinander
bringen , da
wir zwei Arbeitsmappen haben. Und wenn ich so
etwas wie Bereich,
Angebotsnummer sage , werden
wir das gleiche Problem
mit unserem Tabellennamen sehen. Wir haben hier die Angebotsnummer, aber wir haben hier auch die
Angebotsnummer. Auch. Es kann für uns und
sogar das Programm leicht sein,
verwirrt zu werden, über welche Reichweite
wir sprechen. Jetzt haben wir zwei Arbeitsmappen, insbesondere wenn sie Bereiche
benannt haben , die
sich überlappen. In diesem Fall befindet sich unser Code
in diesem Angebot, eine größere Excel-Datei hier
auf der linken Seite. Und deshalb denke ich, dass es
wissen wird , wo man
die Informationen bekommt. Ich kann weitermachen und
einen Breakpoint erstellen und
diesen ausführen, nur um ihn zu testen. Wenn ich F8 treffe. Eigentlich habe ich mich dort geirrt,
du siehst, dass es es nicht weiß. Sie sehen, dass diese
Angebotsnummer leer ist. Das liegt daran standardmäßig die aktive
Datei ist. In der aktiven Datei ist in diesem Fall die letzte, mit
der wir gearbeitet haben,
was bedeutet, dass wir diese Datei geöffnet haben. Diese Akte ist das
, was sie sich ansieht. Und jetzt erhält es den Wert
der Angebotsnummer
, der aus dieser Datei leer ist. Wir sehen also
direkt ein Problem darüber, wie der Code in Bezug auf die benannten Bereiche
verwirrt wird. Und mit
dieser Logik sehen
wir uns diese Datei an. Und es wird nicht einmal
wissen, was der Kundenname ist, da in dieser Datei
kein Bereich mit diesem
Namen vorhanden ist. Wenn ich also F a treffe, haben
wir einen Fehler. Wenn ich
diese ursprüngliche Excel-Datei nur aktiviere , in der
wir den Kundennamen haben, sehen
Sie, dass wir kein Problem mehr
haben. Der Begriff dafür ist
, dass wir
diese Anrufe hier nicht explizit verwenden,
was bedeutet, dass wir die
Details nicht angeben. Also versucht dieses Ding
zu erraten, was wir meinen und stößt auf Fehler. Um zu verdeutlichen, dass
wir
in unserer Angebotsvorlage nicht mit
benannten Bereichen nach diesen Namen arbeiten . Wir werden diese Arbeit schreiben, die nur ein weiteres
Arbeitsmappenobjekt ist, aber es bedeutet die Excel-Datei
, in der dieser Code lebt. Dies wird ausdrücklich sagen, dass wir in dieser Arbeitsmappe meinen, wenn
wir diese Namensbereiche
verwenden . Also lasst uns weitermachen und
das für jeden von diesen tun. Es gibt also keine Verwirrung. Also lasst uns nicht, lass uns das
nochmal machen. Wir haben tatsächlich das Problem , dass die Arbeitsmappe
nur eine Arbeitsmappenebene ist, die Dateiebene und die Arbeitsmappen tatsächlich
keine Bereiche enthalten. Stattdessen haben die
Arbeitsmappen Arbeitsblätter und dann haben die
Arbeitsblätter Bereiche in ihnen. Also muss ich klarstellen, dass das eigentlich dieses
Hauptblatt in unserer Arbeitsmappe bedeutet. Also kann ich
das dazu hinzufügen. Wir haben das hinzugefügt. Jetzt teilen wir sehr explizit den
Code mit
, wo sich unsere Bereiche befinden. Also haben wir
hier einen anderen Bereich getroffen , in dem ich vergessen habe, die S
zu legen. Es ist Laken, nicht billig Singular. Versuchen wir es also noch einmal.
Vielleicht mach ich es richtig. Und dann haben wir F8 getroffen. Dann bewegen wir den Mauszeiger darüber, wir können Angebotsnummern für
Kunden und Kontaktnamen sehen. Und wir bekommen die
Informationen richtig. Und jetzt kannst du hier einen
Kommentar abgeben. Informationen. Und jetzt können wir
diese explizite Referenz verwenden , in der wir ihm konkret
mitteilen, in
welcher Arbeitsmappe wir uns befinden, nämlich das WB-Zitat
, das wir hier eingerichtet haben. Wenn wir die
Vorlage öffnen, sagen wir Blätter. Wir können hier Blatt eins sagen. Oder wir könnten sagen, eines, was bedeutet, dass das erste Blatt, das das einzige Blatt
in dieser Vorlage ist, einfach
diesen Tipp ändern
wird, sagen wir Zitat. Das ist der einfachere
Weg. Und auf diese Weise verwenden wir
diese generischen Namen nicht. Also werden wir sagen, dass
es diesen Bereich zitiert. Und dann ist der Bereich in unserer Angebotsvorlage auch Angebotsnummer, Wert entspricht der Angebotsnummer. Testen wir das einfach,
um sicherzustellen, dass es funktioniert. Wenn ich nun FAA mache, das ist sogar Schritt durch, öffnen
wir unsere Datei, das öffnen
wir unsere Datei WB-Angebotsblatt, unser Angebot, und dann zitiere ich den
Zahlenwert. Wir führen das aus und du
siehst , dass es unsere
Nummer hier platziert hat. Wird sich ändern, wie das ein bisschen
aussieht. Ich mache ein Control X zum
Ausschneiden und Einfügen hier. Und dann wird der schöne Teil
über benannte Bereiche,
wie Sie sehen, als Referenz bezeichnet zusammen mit
unserem Ausschneiden und Einfügen
verschoben wird. Und dann kann ich
mit der rechten Maustaste klicken und
spezielle Formatierungen bezahlen , nur um der Formatierung
hier zu entsprechen. Also werde ich das klären. Ich klicke auf „Speichern“ und
lass uns das beenden. Stoppt unseren Laufmodus. Und wir wiederholen den
gleichen Vorgang für Angebotsnummer und dann zwei
Kunden, um einen Vertrag abzuschließen. Und dann
wollen wir hier unseren Kunden
, den wir kopieren und
einfügen und den Namen kontaktieren können. Das hat hier drüben gesetzt.
Wenn wir dies jetzt ausführen, sehen
Sie, dass diese Informationen in unsere
Angebotsvorlage gelangen. Und wir machen dieses Format
und ändern uns hier ein bisschen. Ich ändere diese Formatierung einfach hier
auf der linken Seite.
69. Quote Excel Output Lines Transfer: Jetzt müssen wir unsere Linien
bevölkern. Wenn wir diese vergleichen, können wir sehen dass unsere Informationen
und unsere beiden Tabellen vergleichsweise im Wesentlichen
die gleiche Beschreibung, Menge und Einzelpreis sind. Also habe ich hier eine Kolumne vergessen. Wir können links
Spalten einfügen,
und wir sagen Einheiten, und wir sagen Einheiten, Stückpreis und Positionssumme. So sehr ähnlich hier. nur zum Üben Lassen Sie mich nur zum Üben diese Einheiten entfernen
, die ich gerade hinzugefügt habe. Wir werden diese Spalte
löschen. Und für die Quantität
wird dies
miteinander kombiniert , nur um zu sehen, wie die
Dinge nicht genau gleich
sein müssen. Wir können etwas verarbeiten,
wenn wir Sachen bewegen, damit wir unsere Einheiten
direkt zu unserer Menge hinzufügen können. Ich zeige Ihnen nur, dass sie kein Eins-zu-Eins sein müssen, dass wir die
Daten manipulieren können, während wir sie hier hinzufügen. Nachdem wir
diese Daten verschoben haben, erstellen
wir einen weiteren
Abschnitt und wir sagen line und im Moment erstellen
wir Objekte, die für unsere Quelltabelle
stehen. Und dann machen wir
noch einen, der
für unseren Output steht hier drüben. Ich nenne
sie die Quelle
unserer Informationen und
unser Ziel, wo die
Informationen landen werden. Wie ich das machen kann, ist, dass
ich diese Listenobjekte erstelle mit
denen wir zuvor gearbeitet haben. Und ich nenne es
Tabellenzeilen , Quelle, Listenobjekt. Und dann
Tabellenzeilenziel. Jetzt stellen Sie sie ein,
ich werde sagen, stellen Sie Kabelleitungen Quelle ein. Wenn du dich erinnerst. Diese Namen, Tabellen in unseren Excel-Dateien
haben denselben Namen. Aber wir können so
etwas tun wie sagen, diese Arbeitsmappe, die sie gemacht hat. Dann können
wir wie zuvor unsere Listenobjekte sagen
und namentlich Kabelleitungen. In der Zwischenzeit werden wir festlegen, dass
unser Ziel für Tabellenpositionen gleich ist, nicht dass diese Arbeitsmappe WB-Angebotsblätter sein
wird. Sie sehen also, obwohl wir hier dieselben Tabellennamen
haben, weil wir
in zwei Dateien arbeiten. Wir können sehr explizit sein,
mit
welchen Dateien gearbeitet haben , damit der Code
weiß, welcher welcher ist. Und jetzt
haben wir in unserem Code zwei verschiedene Tabellen. Eine, die die Quelle ist und dann eine, die das Ziel ist. Wir werden also
alle Informationen aus
dieser Quelltabelle in
unsere Zieltabelle verschieben . Also
müssen wir
jede Zeile in unserer Quelltabelle durchlaufen . Also lasst uns weitermachen und das machen. Denn ich ist gleich eins zu
Tabellenzeilen, Quellpunktzahl. Um die Dinge einfacher zu machen, arbeiten
wir
jeweils eine Reihe nach dem anderen. Erstellen wir also Objekte
sogar für die Zeilen. die gleiche Weise wie wir
es gemacht haben, werden die Tabellen L rho machen, was unsere Listenzeile für
unsere Quellinformationen als
Listenroute ist unsere Quellinformationen als , und
wir sagen L route, Ziel dieser Zeile auch. Du wirst sehen, wie wir das hier
benutzen. Während wir unsere Quelle festlegen, werden wir, während
wir jeden Tisch durchlaufen, L rho sagen. Unsere Quellzeile wird also, wenn wir jede
Zeile durchlaufen, eine
Tabellenzeilenquelle sein , die die Zeilen auflistet. Wenn wir also durch Zeile eins gehen, haben
wir unsere Quellzeile. Wir werden uns das ansehen. Und dann
wird unsere Zielreihe die erste
Reihe hier sein. Und wenn wir uns hier Reihe zwei
ansehen, werden
wir hier eine
neue Reihe erstellen. Es ist etwas, das ich Ihnen vorher
gezeigt habe, ist Excel schlau genug, dass wenn ich neue Zeilen dieser Tabelle hinzufüge, wissen
wird, wie dieser Text nach unten
gedrückt wird. Selbst wenn wir eine
oder 100 Zeilen haben, wird
es wissen, dass alle Informationen nach
unten
schieben , wenn wir mit
dieser Tabelle hier arbeiten. Wenn wir also hier durchschauen, werden
wir unsere Reihe einstellen. Und dann erstellen wir
eine neue Zeile. L rho Ziel setzen entspricht dem Ziel der
Kabelleitung,
diese Liste geht nach unten, was wir verwenden, wenn wir
den Anzeigenzeilenfonds erstellen kann die
Funktion Artikel hinzufügen für diese Tabelle verwenden. Und wie können wir das aufstellen. Eigentlich werde ich hier
einige zusätzliche Variablen erstellen , nur um die Dinge klarer zu machen. Es wird mehr Code geben, aber es wird
klarer machen, was
passiert , wenn wir
all diese Variablen erstellen werden. Die Zeilennummer ist eine
Zeichenfolge, Element als String. In der Tat, da es sich
nur um eine Ausgabe handelt, wird es einfach alles machen
, um es einfach zu halten. Ich weiß, dass die Summe
davon Zahlen sind, aber wir werden sie vorerst nur
alle Strings machen. Mal sehen, ob wir die
Dinge auf diese Weise vereinfachen können. Als Keyword hier drüben kann
ich Menge als Ring,
Einheit, Preis und erweiterter Preis sagen . Also lasst uns das alles einstellen. Jetzt, da wir unsere
Quellenzeile von Informationen haben, möchten
wir diese Informationen aufnehmen und in unsere Variablen einfügen. Sagen wir also, meine Nummer ist gleich Hier ist unsere Reihe. Zeilenquelle. Wir könnten sagen, 12345, da wir jetzt einige Male
durchgegangen sind, wollen
wir
unsere Zahlen nicht verwenden , falls sich
unsere Spalten ändern. Also werden wir
diese Methode verwenden, bei der wir unsere Kabelleitungsquelle
haben. Wir werden den Index
unserer Listenspalte
herausfinden , wenn Sie
den Namen der Listenspalte angeben. Wenn sich diese Indizes für unsere Spalten
bewegen und wir Spalten
einfügen oder löschen, werden dies im laufenden Betrieb
dynamisch herausfinden. Und so werden wir den Zeilennummern-Index
sagen
, der im Wesentlichen einen sagt. Wir werden diesen
Indexwert unserer Zeile erhalten. Das wird also einen zurückgeben. Es ist also im Wesentlichen die
erste Zelle unserer Reihe. Und wenn wir diese nächste eingeben
, wird
es klarer sein, dass
wir sagen, dass das Element gleich ist, und wir können
diese gesamte
Informationszeile nehmen und dies ändern ,
um unsere
Spaltenüberschrift hier zu sein Entschuldigung, unser Spaltenüberschriftenelement. Und das wird zurückkehren, weil
es unsere zweite Kolumne ist. Und wir kriegen die zweite
Spalte dieser Zeile. Und wir werden das weiter
kopieren. Tatsächlich kopiere ich
diese Zeile hier drüben. Und wir sagen Beschreibung
Mengeneinheiten, Preis und erweiterter Preis. Beschreibung Mengeneinheiten,
Preis, erweiterter Preis. Und wir müssen unsere Kolumne
aktualisieren. Unsere Beschreibung stammt also aus unserer Spaltenüberschrift
der Beschreibung. Ich werde
die Informationen einfach weiter verschieben , indem ich so kopiere
und einfüge. Obwohl es einfach
zu tippen ist, wird
es Ihnen klar machen woher ich
diese Werte bekomme. Einheiten stammen aus diesem Header. Der Preiskopf geht in
die Stückpreisvariable ein. Und dann
wird unser erweiterter Kurs so weiter verlängert, geht in unsere
Aktienkursvariable. Und jetzt haben wir alles für diese Zeile in diesen Variablen. Und wir haben diese neue Zeile
zu unserer Zieltabelle hinzugefügt, die in der Lage sein
sollte, sich das hier
anzusehen. Und dann werden
wir für unseren
Zieltisch im Wesentlichen das Gegenteil tun. Genau wie wir hier Informationen
von einer Zelle in der
Reihe
bekommen . Wir werden tatsächlich Informationen
in unser L Rho-Ziel geben. Wir haben unser Sortiment, wir haben unseren Spaltennamen
namens Zeilennummer. Dann legen wir
diesen Wert fest. All dieser Code
bedeutet im Grunde diese Zelle hier drüben. Und wir werden
festlegen, dass wir die Zeilennummer haben, die wir
von unserer Quelle erhalten haben. Und dann machen wir das Gleiche
für unsere Artikelbeschreibung. Mengeneinheiten, die eigentlich keine Einheiten
sein werden, da wir diese beiden
Felder miteinander
kombinieren, Stückpreis und erweiterter Preis. Und wir haben tatsächlich
eine Spalte weniger in dieser Ausgabe, da wir Menge in Einheiten
zusammengefasst haben, wo wir das
planen. Also lassen Sie uns das hier kopieren, was ist ein Punkt, den ich einfach eintippen
werde. Ich bekomme das von
diesen Spaltenüberschriften, aber ohne mit
all meinen Fenstergrößen herumzuspielen ,
werde ich Beschreibung,
Menge,
Stückpreis sagen Menge,
Stückpreis . Und Preis. Wir verwenden hier den Wortzeilenpreis anstelle des erweiterten Preises. Oh, eigentlich verwenden wir den Gesamtpreis der
Linie. Und dann sieht es
so aus, als hätte ich mich versehentlich über eine zusätzliche Reihe
bewegt. Also hier drüben
haben wir 1234567 Zeilen. Und dann haben wir hier,
da wir sie kombinieren, sechs Monate. Das sieht also ungefähr richtig aus. Und dann
haben wir bei unserer Ausgabe die Zeilennummer hier. Wir haben Artikel hier drüben. Beschreibung als unsere
variable Menge. Hier
kombinieren wir unsere Menge in Einheiten. Wir werden also
Quantität und einen leeren Raum sagen. Und dann setzen wir unsere
Einheiten ein und du wirst sehen
, wie sich das zu einer kombinierten Saite
zusammenfügt. Und dann haben wir unseren
Stückpreis hier drüben. Und dann haben wir unseren
verlängerten Preis hier drüben. Es gibt also eine Menge Code hier, aber ich denke, es ist ein bisschen klarer, was passiert. Obwohl es länger gedauert hat, bekamen
wir
alle Informationen aus unserer Quellzeile und
legten sie dann in unsere
neue Zielreihe. Und dann wird das alle Zeilen
durchlaufen. Lasst uns das tatsächlich durchgehen. Das ist also das Beste, was
ich hier drüben machen kann. Versuchen wir
dies auszuführen und ich benutze F8, damit sie sich Zeile für Zeile
durch diese arbeiten können. Also haben wir unsere Datei geöffnet, wir haben unsere Tabellenverweise,
Quelle und Ziel festgelegt. Und sofort stoßen wir ein Problem damit, unsere Zeilen hier zu
durchlaufen. Und das liegt daran, dass ich
diesen Zählparameter habe, aber ich habe vergessen, das zu schreiben. Was wir zählen, ist die Punktzahl
unserer Listenzeilen. Also habe ich einfach die
Liste Rosenberg vergessen. Ich sage weiter F8. Jetzt haben wir unseren Streit hier drüben. Wir kriegen unsere Nummer eins hier
drüben, unsere Einzelposten. Jetzt bekommen wir die
Informationen aus dieser einen Reihe. Jetzt haben wir hier eine neue Zeile von
Informationen hinzugefügt. Wir hatten tatsächlich eine
leere Zeile hier drüben. Das klar ist. Und wir fügen die Informationen
in dieses Raster ein. Nun heißt es, dass wir ein Problem mit dieser
Informationszeile haben. Lassen Sie uns hier unseren
Gesamtpreis der Linie überprüfen. Und unser Problem hier ist
, dass es heißt, dass wir keine Spalte haben, die
als Linie Gesamtpreis bezeichnet wird, obwohl wir hier
eine sehen. Und das liegt daran, dass wir
hier
mit unserem Zieltisch arbeiten . Und ich habe vergessen, dies in unseren Zieltisch
zu ändern. Es sucht also nach
einer Spalte namens Line Total price in
unserer Quelltabelle. Es gibt also viele
kleine Details hier durcheinander bringen
müssen. Lasst uns weitermachen und
das alles in Ordnung bringen. Also nehme ich dieses ganze Wort, damit
ich darauf doppelklicken
und all
dies aktualisieren kann und all
dies aktualisieren , um über
unsere Zieltabelle zu sprechen. Also werde ich das größer
machen. Etwas, das wir vergessen haben
, als wir
hierher kommen , ist, dass es
bereits eine leere Reihe gab. Bevor wir dies tun, müssen
wir
diese Tabelle vollständig klären. Wir möchten also sicherstellen, dass diese
Tabelle keine Informationen enthält. Ich lösche alle
diese Zeilen hier drüben. Das
Seltsame an diesen Tabellen ist, selbst wenn es keine Zeilen gibt, sieht
es so aus, als gäbe es eine Reihe. Sie können also den Unterschied
zwischen einer Tabelle mit
einer Zeile und 0 Zeilen nicht
visuell erkennen . Wie auch immer, lass uns
wieder hierher gehen. Lassen Sie uns diesen Schritt
durch unseren Code führen. Jetzt sehen Sie,
dass Informationen hier angezeigt werden. Sie sehen hier haben wir, wir haben
die Informationen
erfolgreich miteinander kombiniert , so dass unsere Menge in
Einheiten zusammen ist, in unserem Stückpreis wird leer
angezeigt. Und ich bin mir nicht sicher, warum das so ist. Und du siehst, dass
es hier keinen Einzelpreis gibt. Ich glaube, es ist der Stückpreis. Ja, ich
hatte versehentlich ein s da. Und wenn ich also
hierher komme und darauf klicke, war es
jetzt nur ein
Tippfehler in der Variablen. Der Einzelpreis wurde nicht richtig
ausgefüllt. Und dann
sollten wir jetzt durchlaufen, bis die nächste Reihe
von unserer Quelle kommt. Dann wird
diese Informationen jetzt mit einer anderen Zeile
in unsere
Zieltabelle eingefügt. Der Hauptunterschied
hier ist, dass wir auf Linie zwei stehen und zehn
Gallonen statt fünf haben, die wir hier an
unserer Quelle überprüfen
können , dass wir
bei zehn Gallonen sind. Ich werde auf Play gehen, nur um
das den ganzen Weg durchzulaufen. Und Sie sehen jetzt, dass wir alle unsere Informationen
aus unserer Quelltabelle haben, hierher in unsere
Zieltabelle
verschoben wurden.
70. 3.4.4 Quote – Excel-Datei speichern: Jetzt, da wir das haben, und jetzt haben wir unsere Vorlage im Wesentlichen
ausgefüllt. Dies ist ein sehr einfaches Zitat. Es würde mehr als
das bei einem normalen Angebot geben, aber wir verwenden
dies einfach für die Demo. Und was wir tun müssen, ist diese Datei einfach als unsere Ausgabe zu
speichern. Sagen wir WB-Zitat. Und wir können Save As sagen weil wir dies nicht
über unsere Vorlage speichern
möchten . Wir haben unsere Vorlage genommen, die leer beginnen
sollte, und wir werden
diese als neuen Namen speichern. Wo wir das speichern können, haben wir tatsächlich
einen Angebotsordner erstellt. In diesem Fall
arbeiten wir also an Zitat Nummer zwei. Wir sollten
unser Angebot wahrscheinlich in diesem
Ordner speichern , um ein Angebot an zu erhalten. Anstatt sich mit
all dem von Grund auf neu auseinandersetzen zu müssen. Denken Sie daran, dass wir dieses Tool
erstellt haben , das einen
Pfad unseres Angebotsordners erstellt. Wir haben also unseren Ordnerpfad
, der den Ordner ist, in dem sich alle
Angebotsordner befinden. Dann haben wir diese
Logik hier drüben, einschließlich
unserer Angebotsnummer, um unsere Angebotsnummer zu erhalten. Um dann
unseren Unterordnernamen erstellen
und unseren neuen
Ordnervollständigen Pfad zu erstellen. Also lasst uns das tatsächlich kopieren. Und ich habe ein Control
C gemacht, da wird hierher
zurückkommen , um Dokumente zu generieren. Und wir müssen
unsere neue Variable erstellen. Also sagen wir „Speichern“ auf dem jeweiligen. Ich füge
das hier ein. Wir erhalten unsere Angebotsnummer, die wir tatsächlich bereits haben, also brauchen wir das nicht mehr. Wir haben unseren Ordnerpfad
, der genau hier ist. Wir haben unseren neuen Ordnernamen. Eigentlich genannt. Erinnern Sie sich, ihr Name ist diese Variable zu
aktualisieren,
wir müssen Zitat arbeiten. Wir haben unsere
Angebotsnummer in ein
sechsstelliges Format verschoben , und wir
hängen diese zusammen. Und dann ist unser vollständiger Pfad unser Ordnerpfad plus
unser Angebotsordnernamen. Und wir können dies
unseren Ordner vollständigen Pfad nennen. Jetzt haben wir einen vollständigen Pfad des Ordners. Wir können sehen, dass die Funktion „Speichern als“ unseren Dateinamen aufnimmt
, der unser vollständiger Pfad des
Angebotsordners sein wird. Eine weitere Sache, die uns
fehlt, ist unser Dateiname. Das ist also eigentlich
nur ein Ordnerpfad. Wir haben uns
unseren neuen Dateinamen nicht ausgedacht. Wir speichern dies, da dies tatsächlich in einen vollständigen Dateipfad geändert wird. Fügen wir hier unseren
Angebotsdateinamen hinzu, und wir nennen es Zitat. Wir nennen das tatsächlich, lassen Sie uns unseren Ordnernamen wiederverwenden
, der hier zwei
mit sechs Ziffern sein wird. Und wir nennen es einen Ordner
mit dem Namen Output Dot XLSX, da es sich um eine Excel-Datei handelt. Das war also eine Menge, die wir hier
gemacht haben, ohne es zu überprüfen. Mal sehen, ob das funktioniert. Das letzte, was ich brauche, um diesen vollständigen Pfad zu
aktualisieren, dieses Zitat feuert den vollständigen Pfad, um das zu sein, was wir speichern, anstelle
des vollständigen Ordners, bei dem es sich um
die
Variable handelt, die wir geändert haben. Das war viel. Wenn Sie also mitmachen, können
Sie
diesen Code zeilenweise durchlaufen. Lassen Sie uns unsere Vorlage
löschen, unsere Zeilen löschen und alle unsere
Inhalte hier löschen. Und mal sehen, ob wir
das bei
diesem ersten Versuch hier zum Laufen bringen. Und bevor wir das tun,
öffnen wir die Angebotsvorlage. Um zu bestätigen, dass diese Angebotsvorlage
gerade leer ist, schließen wir sie. Komm her zu unserem Code. Und tatsächlich wird eine weitere
Sache hier hinzugefügt ein Meldungsfeld, das besagt, dass die
Datei gespeichert wurde. Wir machen einen weiteren vb-Zeilen-Feed. Und lassen Sie uns
unseren vollständigen Dateipfad
hier an unseren Benutzer ausgeben . Es bestätigt also, dass
wir die Datei erfolgreich gespeichert haben, falls
dies ordnungsgemäß funktioniert. Also mache ich weiter und
wir drücken hier Speichern, wo wir eher spielen werden. Du siehst, dass das alles bevölkert ist. Die Datei wurde unter
diesem Pfad hier gespeichert. Bisher sieht alles gut aus. Und wenn wir zu
unserem Angebot in den Unterordner gehen, haben wir
hier unsere Ausgabedatei. Wenn wir es öffnen, war gerade gefunden, dass es tatsächlich schon geöffnet
war. Also lasst es uns schließen. Grundsätzlich nie geschlossen,
nachdem es regeneriert wurde. Jetzt öffnen wir es. Wir sehen, dass wir
unser Angebot hier haben. Wenn wir wieder
zu unserer Vorlage kommen, sehen
wir, dass sie immer noch leer ist. Lassen Sie uns hier tatsächlich ein Zitat
Nummer drei erstellen. Lassen Sie uns eine
dieser Zeilen löschen und wir fügen hier
eine weitere Zeile hinzu. Lass uns etwas Erdbeere hinzufügen und ein wenig
aufrütteln. Wir fügen einen weiteren Einzelposten hinzu. Und lassen Sie uns unser
Angebot hier erstellen. Wir haben diesen Button eigentlich nie
an die Subroutine angehängt
, die wir erstellen. Also lasst es uns anhängen, um es zu erstellen. Angebot generieren ist
unsere Subroutine. Wir klicken auf diese
Vorlage erscheint. Wir haben hier tatsächlich ein Problem
für Speichern unter. Und ich
merke sofort, warum wir hier ein Sparproblem für Zitat drei
haben. Also schließen wir das hier drüben. Das liegt daran, dass
es
versucht, im Ordner „
Zitat drei“ zu speichern, aber wir haben noch keinen Ordner mit
Zitat drei. Lasst uns diese Vorlage öffnen. Es ist immer noch leer. Wir müssen auf Ordner erstellen klicken. Jetzt haben wir tatsächlich
ein Zitat drei Ordner. Nachdem wir nun einen Ordner mit einem
Zitat drei haben, erstellen
wir unser Angebot. Diese Informationen wurden ausgefüllt
Datei wurde gespeichert. Hier sind wir mit unserem Ordner „
Zitat drei“, doppelklicken darauf und
es gibt unsere Ausgabedatei. Wir haben dort ein kleines Problem gesehen
, nämlich wenn wir zu vier
gehen, hatten wir keinen
Ordner darin, versuchten zu speichern und
stieß auf einen Fehler. Also lasst uns das sehr
schnell schließen. Gehen wir zu unserer Subroutine,
um das Angebot zu generieren. Bevor wir überhaupt
den Angebotsfehler generieren. Prüfen Sie dies, um
sicherzustellen , dass wir
einen Angebotsordner haben. Mal sehen. Also müssen wir
nach diesem Ordner
mit all diesen
Informationen suchen . Bringen wir
dieses Zeug also tatsächlich an
die Spitze, weil wir es tun
wollen, bevor wir überhaupt anfangen, das Angebot zu
degenerieren, weil wir die Datei nicht erstellen
wollen und dann nicht in der Lage sind rette es. Gehen wir also hier rüber, Zitatdatei, vollständiger Pfad. Wir wollen tatsächlich ein
Sprungbrett, in dem wir
nur unseren Angebotsordner hätten nur unseren Angebotsordner ,
weil
wir danach suchen möchten. Wir möchten sehen, ob
dieser Ordner existiert. Wenn wir also vier machen, wollen wir
grundsätzlich prüfen, ob vier existieren. Lassen Sie uns das also trennen. Wir sagen Ordner,
vollständiger Pfad, String. Ordner, vollständiger Pfad ist genau das ohne unseren Dateinamen am Ende. Es ist also im Wesentlichen das. Und dann sind unsere Zitatdatei, vollständiger Pfad, Hände Dateiname. Jetzt verwenden wir unseren
Angebotsordner für Mathematik. Und dann hängen wir unseren
Dateinamen hier an. Und wir brauchten
dieses zusätzliche kaufmännische Und-Zeichen nicht. Wenn Sie also dem
folgen, was wir gerade getan haben, teilen
wir
dies im Grunde einfach in zwei Schritte auf. Wir haben also eine andere
Variable, die den vollständigen Pfad
unseres Ordners enthält ,
bevor wir
die vollständige Sache konstruieren , die unseren vollständigen Pfad
mit unserem Dateinamen
ausgeben wird . Nur um Ihnen zu zeigen,
ist das etwas verwirrend, besonders bei all diesen langen
Variablennamen, die ich erstellt habe. Lassen Sie uns diese einfach ausgeben. Also hier ist die Ausgabe
für den Ordner. Hier ist die Ausgabe für die Datei. Lassen Sie uns
diese Zeile für Zeile durchgehen. Sagt, dass wir hier eine
doppelte Erklärung haben. liegt daran, dass ich die
Anführungsnummer-Variable einen Pop verwende und sie noch nicht deklariert habe. Sagen wir also hier oben die Zitiernummer
als String. Wir werden es durchtreten. Hier ist unsere Angebotsmappe. Dies bedeutet, dass unsere
Angebotsnummer 0 ist. Warum ist das also? Das liegt daran, dass wir unsere
Angebotsnummer genau hier erhalten, die unter all dem
Code liegt, in dem wir ihn verwenden. Also nochmal müssen wir den Ausbruch
dieses Zeugs verschieben, also ordnen wir uns neu an. Jetzt bekommen wir also zuerst unsere
Angebotsnummer ,
damit wir zuerst
unsere Wege konstruieren. Lassen Sie uns irgendwie das Speichern von
Dateiordnern erstellen. Offen dafür. Ich kann anfangen, Daten zu füllen. Ich weiß, dass das
etwas verwirrend wird, aber wir werden
sicherstellen,
dass unsere Reihenfolge hier korrekt ist. Lasst uns jetzt aufhören. Wir treffen wieder
F8 und gehen durch. Jetzt unsere Zitatnummern,
eigentlich etwas. Und wenn wir dann den vollständigen Pfad des Ordners konstruieren ,
lassen Sie uns das klären. Hier ist unser Ordnerpfad. Hier ist unser Dateipfad
mit unserem Dateinamen dort. Und dann ist der Grund, warum wir
dies erstellt haben, dass wir etwas
verwenden können, das wir in unserer Unterroutine zum Erstellen
eines offenen Ordners
verwendet haben,
in der wir sagen werden , ob Verzeichnisordnerpfad, ganzer Pfad tatsächlich ist
db-Verzeichnis gleich leer, dann existiert der Unterordner nicht. Werfen wir nun
unsere Fehlermeldung aus. Generieren. Die Datei existiert nicht. tritt ein Fehler auf. Sogar beim Prozess
wird abgebrochen. Dann werden wir einfach dieses Endschlüsselwort
verwenden, das nur das gesamte Makro
in seinen Spuren
stoppt , wenn es auf diese Zeile trifft, wird
alles stoppen und nicht nach unten
weitergehen . Theoretisch haben wir
das alles herausgefunden. Wir haben Dinge neu angeordnet
, bei denen wir
alle Ordnernamen
und Dateinamen herausfinden alle Ordnernamen
und Dateinamen , damit wir überprüfen können ob der Unterordner existiert,
bevor wir fortfahren. Und wenn dort alles funktioniert, gehen
wir alles
durch, um eine Vorlage zu öffnen, die Informationen zu füllen
und dann unsere Datei zu speichern. Wir haben also eine ziemlich
aufgebaute Subroutine hier drüben. Sie können sehen, dass unser Tool
ziemlich intelligent
und kompliziert wird . Zusammen mit dem,
Lassen Sie uns ein Zitat erstellen, wird
tatsächlich auf vier steigen, wo wir noch
keinen Unterordner haben. wir also sicher, dass
wir diese Situation erfassen. Wir klicken auf Angebot erstellen,
kann keine Datei generieren, Unterordner existiert nicht. Machen wir das noch besser. Datei kann nicht generiert werden, ein
Ordner existiert nicht. Nehmen wir an, der folgende
Unterordner existiert nicht. Wir legen hier einen Doppelpunkt ein,
fügen einen Zeilenvorschub ein, wir setzen das ein, wonach
wir suchen, was hier ein vollständiger Pfad des
Float-Ordners ist. Wir werden diesen
Unterstrich-Zeichenraum verwenden. Unterstrich lässt uns zur nächsten Zeile
übergehen. Und das macht die
zweite
Fortsetzungszeile derselben Codezeile hier drüben. Das ist es, was dieser
Unterstrich-Charakter tun wird, ist dir zu sagen, dass du in der nächsten Zeile fortfahren
sollst. Wir werden sagen, kaufmännisches Und-Zeichen
und ein anderer Zeilenvorschub wird sagen, dass der Prozess abgebrochen wird. Mal sehen, wie das aussieht. Und wir werden sehen, wie das aussieht. Ich werde hier tatsächlich zwei Zeilen-Feeds
erstellen. Sie werden also die Lücke sehen
, wenn wir das ausführen. Wenn ich jetzt „Zitat erstellen“ sage, existiert
der folgende Ordner
nicht. Es teilt uns den Ordner mit
, nach dem er sucht. Und dann heißt es, der Prozess
wird abgebrochen. Und deshalb
haben wir hier zwei Räume. Jetzt. Wir erstellen unser Angebot für Ordner. Jetzt können wir
unsere Angebotsläufe erstellen. Diese Vorlagendatei
wurde gespeichert. Hier drin. Wir sehen Angebot für hat eine Ausgabe. Dann ist der letzte
Schliff, den wir darauf
setzen können , diese Datei geschlossen. Da wir die Datei speichern während wir sie schließen
, muss sie nicht geöffnet bleiben. Und jetzt werden wir
noch einmal betonen. Wir sagen fünf. Erstellen Sie das Angebot. Der Ordner existiert nicht. Lassen Sie uns den Ordner erstellen. Erstellen Sie das Angebot. Fünf hier. Sagt uns nur, dass die Datei gespeichert
wurde. Es schließt. Dann ist hier unsere
Ausgabe-Excel-Datei für Zitat fünf.
71. 3.5 Quote – automatische Outlook E-Mail: Jetzt
gehen wir auf, dass wir diese Schaltfläche
haben, auf der wir auf Angebot erstellen klicken
können, und es wird
unsere Excel-Vorlage öffnen und eine Angebotsausgabe als
separate
Excel-Datei
generieren und dann speichern es in seinen jeweiligen
Angebotsordner. Wir wollen mit unserem nächsten Schritt fortfahren. Jetzt, da Sie
im Excel-Angebot erstellt
haben, möchten
wir dies normalerweise an jemanden senden. Wir möchten es an die Person
zurücksenden , die unser
Angebot für unseren Shop hier angefordert hat. Also erstelle ich hier
einen neuen Button. Ich breche ab, damit wir das Makro
nicht auswählen
und „Neue Map
erstellen“ sagen müssen . Also lasst uns das benutzen. Gehen wir zu
unserem Code hier drüben, wir öffnen unseren
VBA-Editor und mal sehen, wir haben Generate Documents
Dateiverwaltung. Wir legen es einfach in Dokumente
generieren ein. Lassen Sie uns das also mit
unserem Code zusammenstellen , bevor wir einfach
das gleiche Modul hier teilen. Wir haben also nicht zu
viele Module und wir sagen, dass sie E-Mail generieren. Dann hebe das hier und wir haben unseren allgemeinen
E-Mail-Button hier drüben. Fügen wir unseren Button „
E-Mail generieren“ an unsere soeben erstellte
Subroutine „E-Mails generieren“ an, die derzeit
keinen Code enthält. Ich lege nur
ein Nachrichtenfeld ein, in dem es
heißt, E-Mails zu generieren. Ich klicke auf meinen Button und wir sagen
über die generierte E-Mail. Jetzt sind wir bereit, hier etwas Code
aus einer früheren Lektion
für Intro-Themen zu
schreiben , wir haben
eine Referenzbibliothek hinzugefügt. Also werden wir dieses
Pop-up und Microsoft Outlook machen. Also gehen wir hier zu
Tools, Referenzen. Und wir möchten
unsere Objektbibliothek hinzufügen , damit wir
Microsoft Outlook steuern können. Also wenn ich hier in
alphabetischer Reihenfolge
zu Microsoft scrolle . Also suchen wir nach
Microsoft Outlook. Hier. Wir sehen unsere Outlook
16-Objektbibliothek, das ist die neueste und
die einzige in diesem Fall Wenn es mehr als eine gibt, wähle ich immer die
höchste Zahl. Also unsere Outlook
16-Objektbibliothek, wir überprüfen sie und klicken auf, Okay, es wird unser Projekt
zurücksetzen, weil
ich mich im Ausführungsmodus befand. Das ist also okay. Wenn ich dann hierher komme und ich
eine Outlook-Nachricht erstellen werde. Wir möchten also
das Äquivalent zum
Erstellen einer neuen E-Mail
in Microsoft Outlook tun . Ich sage Dimension
O L für Outlook. Und ich sage, dass message
der Name unserer
Objektvariablen ist , die ich benote. Es wird Ausblick sagen. Und das existiert nur,
weil wir
die Objektbibliothek hinzugefügt haben , in der ich zu Tools und Referenzen
gegangen bin. Aber seit wir das getan haben,
haben wir dieses Outlook-Objekt. Und dann können
wir in unserer
Outlook-Objektbibliothek Outlook Mail-Element sagen. Männlicher Gegenstand ist eine Botschaft. Nachdem wir
unsere Outlook-Nachricht deklariert haben, müssen
wir sie als
tatsächliche Outlook-Nachricht festlegen. Wie immer bei
Objektvariablen deklarieren wir es und
müssen es dann als Objekt festlegen. Wir sagen, O L, O
L Nachricht entspricht Outlook-Anwendungspunkt Objekt erstellen. Wir erstellen
ein Outlook Mail-Element. Dies deklariert also
unseren Variablentyp. Und jetzt setzen wir unsere neue Variable als
neues Nachrichtenelement. Das ist also irgendwie ähnlich,
erinnert mich daran, wenn Sie ein
neues Arbeitsmappenobjekt erstellen, dann sagen Sie Dimensions-Arbeitsmappe,
Arbeitsmappe, und dann sagen Sie, dass Arbeitsmappe festlegen
gleich Arbeitsmappen ist, die hinzugefügt werden. Das haben wir schon mal gesehen. Dies ist das Äquivalent
von Arbeitsmappen, die nicht hinzugefügt werden. Dies erstellt eine
neue Outlook-Nachricht, setzt sie
jedoch gleichzeitig auf das von uns erstellte
Outlook-Elementobjekt , damit wir damit arbeiten können. Also entferne ich das. Und nur um
dies zu zeigen, können wir die
Outlook-Nachrichtenpunktanzeige sagen ,
und wir werden dies tun, um zu beginnen. Ich werde
dieses Meldungsfeld entfernen ,
weil wir
das einige Male sehen werden ,
wenn wir das testen. Okay, jetzt testen wir das aus. Also habe ich F8 gedrückt, wir erstellen unser
Nachrichtenobjekt und wir führen die Anzeigezeile aus und Sie sehen hier automatisch
eine E-Mail
erscheint. So einfach war es also. Wir haben jetzt eine Schaltfläche, die,
wenn Sie auf E-Mail erstellen klicken, automatisch erscheint Outlook automatisch erscheint und hier eine
Nachricht für Sie erstellt. Das spart
uns noch nicht zu viel Zeit. Fügen wir also noch ein paar
Funktionen hinzu. Wir haben also unsere
Anzeigebotschaft und wir können anfangen, einige Dinge
wie Objektnachricht
einzugeben . Dieses Thema
ist gleich das Thema. Wir können sagen, oh, eine Nachricht, dass der Körper gleich ist. Was wir hier
eigentlich tun sollten, ist eine Width-Anweisung zu
verwenden,
da Sie bereits
feststellen können , dass wir
unser Objekt ein paar
verschiedene Zeiten aufrufen werden . Also werden wir diese Wiederholung
hier
speichern, indem wir diese
in eine Width-Anweisung einwickeln. Und dann müssen wir immer wieder keine Nachricht
schreiben. Also wird unser Körper hier gehalten. Und wir fangen einfach damit an. Wenn ich jetzt auf Play klicke,
siehst du, dass es so einfach war. Jetzt senden wir
unsere E-Mail hier,
unsere Betreffzeilensteuer
in unserem Text. In diese Eigenschaften
über die E-Mail. Da wir also hier
etwas mit unserem Zitat machen, können
wir damit beginnen, dies
zu formulieren, wo wir unsere Anführungsnummer als String
sagen werden. Wie wir es in den
vorherigen Videos gemacht haben. Wir sagen, dass unsere Angebotsnummer
eine Angebotsnummer mit dem Namen Bereich ist. Und dann können wir die Angebotsnummer
sagen. Und wir werden sagen, dass wir jetzt
hier als unser Thema untersuchen und in unserem Körper
könnten wir sagen, dass etwas wie hier Zitat ist, unquote Nummer, für die
Ihre Anfragen, danke für Ihre Interessen. Also erstellen wir unsere Botschaft dort. Habe hier einen Fehler. Ich vermassele es wahrscheinlich, ja, Ampersands und Anführungszeichen. Wenn ich solche
Strings kombiniere, führen
wir dies normalerweise mit F5 aus und wir sehen jetzt, dass wir hier eine
echte automatisierte E-Mail erstellen. Und genau wie unsere
Angebotsvorlage behalten
wir das ziemlich grob. Das Ziel dieser Klasse ist es nicht , Ihnen zu zeigen, wie
Sie gute E-Mails schreiben, sondern diesen
E-Mail-Prozess zu automatisieren. Das Wichtigste, was
uns fehlt
, ist , dass uns
unsere Eigensinne fehlen. Wie wir also Anhänge hinzufügen können,
ist das Gleiche. können wir sagen. Anhänge. Denken Sie daran, dass dies das gleiche ist
wie die Eingabe von
OL-Nachrichtenpunkt-Anhängen , dieser Anzeige. Und dann
ist unsere Quelle unser Dateipfad. Also lassen wir
das vorerst leer. Wir kommen hier hoch und
erstellen eine neue Variable
namens Attachment als String. Wir werden einen Anhangspfad haben, der
gleich etwas hier drüben ist. Jetzt gehen wir zu
unseren Angebotsdateien. Nehmen wir an, wir waren hier im
Anführungsordner fünf. Und wenn du dich erinnerst, habe ich dir die Abkürzung
gezeigt. Wenn Sie mit der rechten Maustaste klicken und in Windows 11 als Pfad
kopieren angeben, haben wir den vollständigen
Pfad dieser Datei. Und wir können sagen, dass unser
Anhangspfad dies ist, und er enthält die
Anführungszeichen , wenn wir diese
Windows-Funktion verwenden. Dies ist also der Pfad
unserer Datei für Zitat fünf, ich habe gerade
eine zufällige Datei ausgewählt. Und natürlich müssen
wir das anpassbar machen. Aber jetzt können wir
unseren Anhangspfad nehmen ihn als Parameter in
unseren Befehl „Anhänge hinzufügen“
übergeben. Und lass uns F5 drücken
, um das zu versuchen. Raus. Da sind wir los. Wir haben hier eine Angebotsdatei
an unsere E-Mail angehängt. Nun ist das Problem, wenn
wir ein Angebot
für senden , möchten wir hier kein Zitat
fünf fest codieren lassen. Jetzt müssen wir
das dynamisch konstruieren. Und wenn wir das tun, können wir diese
Variable an diesen beiden Stellen ersetzen. Also lasst uns weitermachen und das machen. Nun, wir nennen es, wir
nennen es vollständigen Namen. Und unser Zitat, vollständige
Namensnotation ist Zitat. Und wie Sie sich vielleicht
von vorher erinnern, nehmen
wir
unser Zahlenformat an. Ich nehme
unsere Angebotsnummer erzwinge sie hier im
sechststelligen Format. Das sollte also unser
Zitat sein, vollständiger Name. Und wir werden das nehmen und diese beiden Spots damit
ersetzen. kaufmännisches Und-Zeichen. Dies ist hier immer ein bisschen
ein Denksport um
hier einfach mit
diesen kombinierten Strings zu arbeiten diesen kombinierten Strings und sicherzustellen, dass wir
unsere Sequenz richtig machen. Aber ich glaube, ich
hab's gerade genau dort verstanden. Natürlich wird ein
Fehler auftreten, wenn es nicht funktioniert. Also können wir immer zurückkommen und es
reparieren und wir werden das ausführen. Und jetzt Zitat Nummer vier. Und wir haben hier drüben die
Nummer vier angehängt , weil sich unser Dateipfad für
unseren Anhang geändert hat. Hier ist unser Zitat
, das wir aus
unserem vorherigen Video generiert haben. Und wir haben dies als Button „E-Mail
erstellen“. Und du siehst, dass dies automatisch
auftaucht. Hier drüben. Sie sehen, dass wir keine
automatisierte E-Mail darüber haben, an wen sie gesendet hat, sodass Sie sie an
die Person zurückgeben können , indem Sie
ihren Namen automatisch eingeben. Der nette Teil daran
, dies in
Outlook aufzutauchen , ist,
dass es in Ihrer gesendeten E-Mail-Box angezeigt wird und Sie all diese Funktionen
verwenden
, die in Outlook integriert sind. So können Sie irgendwie
weitermachen, wo dieses
Makro aufgehört hat, und Leute zu CC
hinzufügen. Es kennt dein Adressbuch und alles dergleichen danach, anstatt
all das in dein Makro codieren zu müssen. Aber was uns
hier fehlt, ist eine Kontakt-E-Mail. Nehmen wir an, wir schreiben
unsere Kontakt-E-Mail und hier kopiere und
füge dieses Format hier ein. Wir hatten hier bei IC W.com gespielt. Jetzt können wir diese
Zelle als Kontakt-E-Mail benennen. Und dann können wir wieder zu unserem Code kommen. Wir erstellen hier eine neue
Variable für Kontakt-E-Mail, da der
Frühling
unsere Kontakt-E-Mail als unseren Bereich dieser E-Mail abruft,
die wir gerade genannt haben. Und dann lege ich es in die Reihenfolge ein, in der wir unsere E-Mails
generell in zwei
gleich einer E-Mail senden oder eingeben . Und ich mache das sehr schnell
aufzuräumen. Und wenn wir jetzt wieder
hierher kommen und auf E-Mail erstellen klicken, haben
wir sogar unsere
E-Mail-Adresse hier. Das war's. Das ist vorerst eine einfache E-Mail. Wir können hier viele
verschiedene Funktionen hinzufügen. Es gibt verschiedene Möglichkeiten
, dies zu einer sehr benutzerdefinierten E-Mail mit Tabellen und allen
Informationen, die Sie jemals
in einem E-Mail-Text wünschen würden, zu machen. Und
das können wir auch automatisch kontrollieren. Aber hier ist nur ein grundlegender
Konzeptnachweis.
72. 3.6 Quote – Customer: In unserem letzten Video, in dem
wir aufgehört haben, war, dass wir diese Funktion erstellen, in der
wir einen E-Mail-Button haben. Wenn wir darauf klicken, wurde
diese E-Mail
automatisch mit dem Betrefftext und dem Anhang der
generierten Excel-Ausgabedatei generiert. Und wir haben unsere
Kontakt-E-Mail-Adresse von
unserer Kontakt-E-Mail hier
zu gutem alten Ton auf Neil automatisiert . In diesem Video wird
viel Automatisierung enthalten. Wir werden dieses Tool schnell
nachbessern , bei dem wir dasselbe für
die Kunden tun
werden, wie wir für Artikel hier drüben
gemacht haben. Im Moment sind wir dort eingerichtet, wo wir den NR-Kontaktnamen benötigen. Und das haben wir von einem Zufallsnamengenerator und unserer Kontakt-E-Mail übernommen,
die wir ebenfalls erfunden haben. Natürlich werden wir
weiterhin Informationen erfinden. Aber was wir tun könnten, ist
ähnlich wie unsere Artikel. Wir können ein wenig
DataTable aus unseren Kunden machen. Kundeninformationen hier,
es wird der Name des Kunden genannt. Wir können den Namen des Kontakts sagen. Und wir gehen hier
vorerst
davon aus , dass es einen Kontakt pro
Kunde gibt, der sagen wird, dass die
Kontakt-E-Mail dies in eine Tabelle verwandelt. Also Control T. Nochmal, meine Tabelle hat Header. Wir können diese Informationen nehmen, das ist unser
First-Line-Ton auf Neil hier. Wir haben Lehm bei Ice
Cream wholesale.com. ICH CW. Ich bin mir sicher, dass dies wahrscheinlich eine echte Website oder so ähnlich ist. Tut mir leid, wenn das du bist. Und füge jetzt ein
paar zusätzliche Zeilen hinzu. Das wird also der lustige Teil sein. Und so werden wir unseren
Kundennamen Connies Kegel, LLC und unseren Kontaktnamen haben, ich denke, es muss Connie sein. Wir lassen das vorerst leer. Wir werden wieder an den
Zufallsnamengenerator arbeiten und ein bisschen an einem
anderen hier. Es wird Eiscreme sein. Und dann brauchen wir
ein paar Kontaktnamen. Gehen wir also zu unserem vertrauenswürdigen Namensgenerator hier
drüben, den
wir zuvor benutzt haben. Wir holen uns einen Namen hier drüben. Also lasst uns sehen. Wir haben Clarissa Vargas und
sagen Connie Mack Schlagzeug. Connie auf Ccl.com. Nochmal, tut mir leid, wenn ich
deinen Website-Namen hier und
Marissa auf ICR view.com nehme . Okay, jetzt haben wir unsere
Kundeninformationen. Wir können das Gleiche tun, was wir für unsere Artikel hier
getan haben, nämlich dass wir gerade eine vLookup-Formel
verwendet haben. Also hier drüben unter
unserem Kontaktnamen. Bevor
wir das tun,
kommen wir zu unserem Kunden und ich habe vergessen,
diese Tabelle und diesen Namen zu nennen. Also müssen wir
unseren Kundennamen zu einem Dropdown-Menü machen . Also sagen wir
Tischkunden hier drüben. Wenn Sie sich daran erinnern, bevor wir dies zu einer Datenvalidierung gemacht haben, gingen Sie zur Liste und dann können wir
indirekt sagen und tatsächlich unsere Namen
verwenden. Also Kabelkunden. Und dann hier drüben
in unseren Klammern achte
ich darauf, unsere Pfeiltasten hier nicht zu
benutzen ,
denn in dieser
speziellen Formelleiste wird die
Verwendung unserer Pfeiltasten
links oder rechts versehentlich alle
auswählen diese Bereiche. In der Tat mache ich es nur
als Erinnerung daran, was
passieren wird , anstatt unseren Cursor zu
bewegen, beginnt
er Zellen auszuwählen. Klicken Sie also hier rein und wir
schreiben unseren Spaltennamen
, der Kundenname ist. Ich glaube. Wenn es falsch ist, wird
ein Fehler ausgelöst, was nicht der Fall ist. Jetzt haben wir also unseren Dropdown. Und dann
haben wir für unsere
unterstützenden Informationen wie Kontaktname und E-Mail wie Kontaktname und E-Mail eine zusätzliche Suche verwendet. Sagen wir also X Lookup, der Wert, den wir uns ansehen. Die Spalte, die
wir uns ansehen, die Informationen in,
die Spalte , in der wir
Informationen zurückgeben möchten. Und wenn es dann nicht gefunden wird, sagen
wir nicht. Wir machen dieses Grau,
da es sich um eine Formel handelt
und wir möchten,
dass der Benutzer weiß, dass er automatisch ausfüllt, diese Formel nimmt und sie
einfach für
Kontakt-E-Mail hier wiederholt. Wir aktualisieren den Kontaktnamen
auf das Rücksende-Array
, nämlich unsere Kontakt-E-Mail. Und jetzt können wir
unsere verschiedenen Kunden auswählen und
diese Informationen automatisch ausfüllen lassen. Und wenn ich hierher komme
und unsere E-Mail erstelle, können
wir sehen, dass unsere automatisierte
E-Mail an Connie geht. Während wir hier sind,
warum füllen wir nicht ein paar
Kleinigkeiten auf. Ich komme her und repariere diese
Knöpfe ein bisschen. Ich kann zu Shape Format gehen. Und da ich
all diese Tasten hervorgehoben habe ,
während ich die Kontrolle gedrückt , haben
wir diese Zeilen
nur einen kleinen Trick . Sie haben diese ausgerichtete Funktion
, bei der wir die Mitte ausrichten können. Sie sind also alle liniert und
verteilen sich dann horizontal, wodurch diese Schaltflächen gleichermaßen
platziert werden. Okay, das war's also
für dieses Video. Wir werden
in der nächsten weitermachen.
73. 3.5.2 Quote – Anhang überprüfen: Nun, wir erstellen hier
unsere E-Mail-Funktion, wo wir auf E-Mail erstellen klicken und diese Outlook-E-Mail
automatisch aufrufen. Ein Problem, von dem ich festgestellt habe, dass wir hier sehr schnell angehen
müssen,
ist, dass wir diesen Fehler erhalten, der
besagt, dass der Pfad nicht existiert,
wenn wir zum Angebot Nummer
sechs gehen und auf E-Mail erstellen klicken . Und das liegt daran, dass
wir noch
kein Angebot für Zitat
Nummer sechs erstellt haben. Sie sind also entweder
jetzt Ordner oder
natürlich ist jetzt Excel-Datei
oder eine Mischung aus beidem normalerweise. Wenn wir also hier
in unseren Ordner kommen, zitieren Sie Dateien, und wir sehen, dass wir keinen Ordner
für Zitat sechs haben. Wenn es nach
dem Pfad sucht , werden
wir die Excel-Datei anhängen. Es kann es nicht finden, und das ist der Fehler, auf den wir hier
stoßen. Das ist einfach zu beheben. Wir werden verwenden,
was wir im vorherigen Video
verwendet haben Dies ist nur ein Fehlerfang am Anfang
unserer Subroutine und löst einen Fehler aus, wenn die Datei nicht dort
gefunden wird, wo sie den Anhang erwartet
. Dies ist also ein wirklich
häufiges Thema, bei
dem Sie am Anfang
von Subroutinen alle Probleme abfangen und den Benutzer
benachrichtigen möchten , wenn etwas fehlt und der Prozess nicht läuft um erfolgreich
abzuschließen. Wie üblich wird es an die Spitze unserer
Subroutine kommen und beginnen, Code einzugeben, um
Fehler zu erkennen und den Benutzer darüber zu informieren ob dies passiert, und den Prozess zu
stoppen. Um dies zu tun,
benötigen wir tatsächlich den Anhangspfad. Also werde ich hier sichern
und komme tatsächlich hierher um den
Anhangspfad zu überprüfen nachdem wir ihn ausgedacht haben. Sie erinnern sich vielleicht, dass der Code
hier ist, wenn dann DIR
, der überprüft, ob
eine Datei oder ein Ordner vorhanden ist. In diesem Fall suchen wir einer Datei, die der
Anhang sein wird. Also werden wir „
Anhaftungspfad“ sagen. Und bevor ich glaube, haben wir das
VB-Verzeichnis verwendet , weil wir prüfen, ob
der Ordner existiert. Nun stattdessen, seit
was ist eine Akte? Wir werden
nur VB normal sagen, was wir
für eine Standarddatei verwenden. Und wenn es leer ist,
Klammern hier,
dann bedeutet das, dass die
Anhangsdatei nicht existiert. Jetzt werfen wir
eine Nachricht, die besagt, dass Datei nicht im
folgenden Pfad gefunden wird. Wir sagen VB-Line-Feed. Und dann zeigen wir
den Pfad des Benutzers damit er untersuchen kann
, was er wollte. Jedes Mal, wenn ich
etwas mit Pfaden mache, führe
ich dazu, den Pfad
zum Benutzer und die Nachricht anzuzeigen. Auf diese Weise können sie zu
diesem bestimmten Ordner navigieren und selbst
bestätigen,
was das Problem ist. Und dann, genau wie zuvor, drücke
ich versehentlich die Eingabetaste, also drücke ich Rückgängig und es kommt
zurück zum Pfadbereich des Anhangs. Das Problem ist also, dass
ich mich im Break-Modus befinde, deshalb taucht das
immer wieder auf. Also treffe ich auf Stop. Sie gehen hier zu unserer nächsten
Zeile mit diesem Unterstrich
und wir sagen, dass Sie
einen weiteren BB-Zeilenvorschub haben und ein weiterer
vb-Zeilenvorschub von Leaf wird Prozess sagen. Dann um sicherzustellen, dass
wir
den Prozess tatsächlich beenden und nicht
mit der Generierung unserer E-Mail fortfahren . Wir werden hier am Ende sein. Und eine Sache, die ich tun möchte, ist dass
diese Outlook-Nachricht
eine neue Botschaft ist. Weil wir unsere
Validierung hier machen. Ich möchte
unsere Outlook-Nachricht nicht erstellen auch wenn sie
im Hintergrund hängt , denn
wie wir zuvor gesehen haben, erscheint
sie erst dann, wenn wir
diese Anzeigezeile hier ausführen . Ich möchte keine Nachricht erstellen wenn wir auf
dieses Problem stoßen und
alles abrupt stoppen. Stattdessen nehme ich diese Linie und verschiebe sie hier runter. Also werden wir
im Grunde genommen Validierung sagen. Wenn ich wirklich explizit
sein wollte, sage
ich hier oben tatsächlich Daten. Wir haben unsere Validierung hier. Und dann erstellen Sie
E-Mail ist hier unten. Also haben wir es hier in diese
verschiedenen Abschnitte aufgeteilt. Wenn wir also einen
Validierungsfehler haben, haben
wir
unseren Prozess überhaupt nicht gestartet und haben möglicherweise einige Prozesse oder
eine Outlook-Nachricht, die im Hintergrund
hängt.
Probieren wir das mal aus. Ich klicke auf „E-Mail erstellen“. Sie sehen, dass die Angebotsdatei unter dem folgenden Pfad nicht
gefunden wird . Der Prozess wird gestoppt. Wenn wir nun das Angebot erstellen, Mal sehen wir, wir haben hier
ein Problem. Es heißt, ich sei nicht definiert. Und ehrlich gesagt, habe ich das schon einmal
bemerkt , als wir dieses Video
aufnehmen. Das war also vor ein paar Videos in denen mir aufgefallen ist, dass obwohl wir
Option Explicit hier haben, es uns nicht dazu gebracht hat, i zu erklären. Das war
also ein seltsames Szenario
, das ich einfach aufschiebe. Aber das Problem hier ist wir
die Variable I nicht deklariert haben. Also werden wir das lange
nennen,
was meiner Meinung nach mit diesem Problem umgehen sollte. Ich glaube, ich bin im Break-Modus. Also. Ich habe hier auf Stop gestoßen. Es erstellt ein Zitat. Und wir machen das
Gleiche hier , wo es einen Fehler findet. Zumindest
treffen wir keine VBA-Fehler. Der Benutzer, in diesem Fall wissen
wir, was los ist, aber wenn es ein anderer Benutzer war
, der
mit dem Code nicht vertraut war, bekommen
sie hier gute Pfeile , die ihnen sagen, was schief
läuft und
stoppt den Prozess. Es sagt uns also
, dass es keinen Unterordner für Zitat sechs gibt. Zyklisch erstellen Offener Ordner. Jetzt haben wir tatsächlich
den Ordner für Anführungszeichen sechs erstellt. Ich habe auf E-Mail erstellen geklickt. Wir haben immer noch dieses Problem, bei
dem die Ausgabe nicht existiert. Jetzt müssen wir also das Angebot
erstellen, das hier generiert wird. Die Datei wurde gespeichert. Wir klicken auf Okay, es
wurde automatisch gespeichert. Jetzt klicken wir endlich auf
E-Mail erstellen für Angebot sechs und wir haben alles bereit. Die E-Mail wurde also erfolgreich
automatisch generiert.
74. 3.8 Quote – Gesamtpreis hinzufügen: Eine kleine Sache, die ich mit diesem Video hinzufügen
wollte, das hoffentlich ziemlich schnell
sein sollte,
ist, dass ich vergessen habe, dass ich unseren Gesamtpreis hinzufügen
wollte. Wir haben also unseren erweiterten Preis für jede unserer
Zeilen auf dem Angebot. Aber in der Regel möchten
wir dem Kunden
hier
einen Endpreis mitteilen , den Gesamtpreis. Und das ist die Summe
dieser Zeilen hier drüben. Also
verwenden wir einfach eine Excel-Formel. Machen Sie das noch einmal grau. Und jetzt müssen wir dies
zu einer Angebotsvorlage hinzufügen. Wenn ich also herkomme, ändern
wir das in
Mantel Nummer Sieben. Ich kann das Angebot nicht erstellen , da ich noch keinen Ordner
habe. Lassen Sie uns also unseren Ordner mit
unserer netten Schaltfläche erstellen , die diesen Prozess
automatisiert. Dann klicken wir auf Angebot erstellen und generieren unsere Datei. Und es schloss tatsächlich
mit unserer Automatisierung hier. Also öffnen wir die
Vorlage und sehen , dass wir unseren
Endpreis nirgends haben. Lasst uns weitermachen und das hinzufügen. Ich denke, wir müssen
das in einer Vorlage einrichten. In unserer Tabelle hier drüben habe ich den Endpreis an die Spitze gesetzt, nur damit er gut sichtbar ist. Aber normalerweise für einen Output denke
ich, dass ein
typischerer Ort, an dem der Gesamtpreis hier am Ende
der Tabelle steht. Das ist also unser
Zitat Sieben Ausgabe. Dies ist nicht die eigentliche
Vorlage, die wir aus früheren Videos
verwendet haben , um mit dem Zitat zu beginnen. Das ist also aktiv,
was wir tun werden, aber ich möchte nur herausarbeiten
, wie das aussehen könnte. Im Grunde wollen wir,
dass das hier 310 sagt. Wenn es mit dem Generieren fertig ist. Und wir werden ein paar Kleinigkeiten tun wie Sie wahrscheinlich bemerken , dass dies hier nicht
im Format vorliegt. Also können wir das beheben. Jetzt wo
ich es merke, können
wir das
Gleiche hier tun. Wir möchten, dass unsere Zitate in etwa so
aussehen, nur um es ein
bisschen mehr aufzuräumen und
diese wichtige Information
hier hinzuzufügen . Lasst uns das schließen. Wormit wir wirklich arbeiten
möchten, ist unsere Angebotsvorlage. Damit beginnen wir also,
wenn wir ein Angebot generieren. Also
schauen wir uns das hier an. Das erste Problem, das wir
hier hatten , ist, dass wir vielleicht
nicht das erste Problem sind, aber das am einfachsten zu
lösende Problem ist, dass wir hier keine Zahlen
hatten. Und wir werden das
in Buchhaltungsformat setzen. Und jetzt, wenn ich hierher gehe und
versehentlich eine Zeile hinzugefügt habe, wenn ich hierher komme
und unsere Zeilen lösche, tippe ich hier ein
und füge eine neue hinzu. Sie sehen, dass die benannte
Tabelle hier tatsächlich
unsere Formatierung dieser Zellen beibehält unsere Formatierung dieser Zellen ,
auch wenn die
Tabelle gelöscht Wenn wir wieder
Zeilen hinzufügen, behält
sie die
Formatierungsschreibweise bei , die wir haben. Alles was wir tun müssen, ist,
dies zum Buchhaltungsformat zu machen. Und es wird
dort bleiben, wenn wir es bevölkern. Und tatsächlich klicke ich rechten Maustaste und stelle
sicher, dass wir unsere Zeilen löschen. Und dann versuch es
noch einmal. Mal sehen, ich speichere diese Vorlage
und wir versuchen zu scannen. Und wir haben
hier tatsächlich einen Fehler. Sie können sehen, dass die Datei
tatsächlich korrekt gespeichert wurde. Und wir haben unsere Formatierung
, die wir hier wollen. Ich schließe das. Wir haben immer noch dieses
Problem, dass wir diesen Fehler hier
getroffen haben. In einem anderen Video
zeige ich vielleicht die Details davon. Aber was ich denke,
passiert tatsächlich , weil es
mich
richtig dazu veranlasst hat zu fragen, ob ich die Datei speichern
wollte , und ich drücke Ja, und alles sah
so aus, als hätte es richtig funktioniert. Was meiner Meinung nach passiert
ist, ist, dass es sich um eine Besorgung handelt weil ich nur alle
meine Dateien auf meinem OneDrive speichere
, einem Cloud Sync-Ordner. Das ist ein ganz anderes Thema. Aber wir verursachen einige Probleme mit dem
Sinken unserer OneDrive-Clouds von Dateien, wodurch das System
glauben lässt, dass es
irgendwelche Dateiverwaltungskonflikte gibt. immer, wir werden fortsetzen, was
wir ursprünglich tun wollten, nämlich weiter an
unserer Vorlage zu arbeiten . Wir haben
unseren Gesamtpreis. Nun, was ich tun will,
ist hier runter zu kommen. Wenn ich den Gesamtpreis sage. Wir werden uns hier zu sehr Sorgen um die
Formatierung machen. Wir erstellen einen Namen für diesen Bereich, damit wir
die Informationen dort platzieren können. wir sicher, dass es sich um diesen Formatierungstyp der Buchhaltung handelt. Klar das aus. Und dann ist der
interessante Teil hier, glaube
ich, dass wir hier mit
unserer Namentabelle arbeiten. Wenn wir Zeilen einfügen, so wie wir diesen
Code ursprünglich geschrieben haben, werden diese Tabelle
Zeilen hinzugefügt, aber sie sollte wissen, dass diese Zeile hier nicht
überschrieben wird. Auch dies ist der
anhaltende Vorteil der Verwendung einer Namentabelle. Wir tippen nicht wirklich in diese Zellen ein und
überschreiben dieses Zeug, genauso wie wir
diese Notiz hier nicht außer Kraft setzen. Wenn wir dieses Zitat in
zehn Zeilen hinzufügen würden, wird
es wissen, dass dieser Bereich
alles nach unten schiebt. Und nochmal, genau
als Sprungbrett, lass uns
das Ding tatsächlich ausprobieren. Wir werden hier drüben noch
ein neues Angebot machen. Ich mache immer wieder neue. Und dann werden wir auch nicht auf diese Art von
OneDrive-Datei-Fehlermeldung
stoßen , die auftauchte. Und das können wir einfach vermeiden, wird hier ein neues
Angebot für ein Angebot erstellen. Und du kannst sehen, dass das aufgetaucht ist und sogar von
unserem Bildschirm hier drüben. Wir können es öffnen, damit es auf dem Bildschirm
bleibt. Es hat den Endpreis nach unten getrieben. Während wir daran arbeiten, gehen
wir zu unserem Code
hier, um das Angebot zu erstellen. Und wir können
diese Zeile, die die Angebotsdatei
schließt, sogar kommentieren . Weil wir daran arbeiten
werden. Wir können
es einfach manuell schließen, wann wir möchten, und wenn wir dies für
einen Benutzer freigegeben haben, können
Sie diese
Automatisierungsfunktionen erstellen, aber Sie können
diese kleinen
Lebensqualität hinzufügen Funktionen, die ihnen einen Klick
speichert. Aber für uns wollen wir so viel wie möglich
sehen, damit wir diese Datei nicht schließen, da wir
mit einer Vorlage arbeiten. Was wir jetzt
tun müssen, ist, auf diese Formel
zurückzukehren , die wir vorhatten. Und wir möchten sicherstellen, dass wir
bei
der Generierung des Angebots den Gesamtpreis
einbringen. Hier sollten wir also
einige Informationen darüber haben, wo wir
unsere Informationen aus unserer
Quelldatei in unsere
Zieldatei bringen unsere Informationen aus unserer
Quelldatei . Hier können wir also den
Gesamtpreis doppelt hinzufügen. In der Tat werden wir es wieder als String
machen, damit wir uns keine
Sorgen machen müssen, dass Typen nur
eine visuelle Ausgabe sind. Also denke ich, dass das funktionieren
wird. Es wird es
ändern, wenn es nötig ist. Nehmen Sie den Gesamtpreis
entspricht dieser Arbeit. Habe Bettlaken, die
reichen können und den Gesamtpreis haben. Und so bekommt das die Informationen aus dieser
Zelle gleich hier drüben. Eine Sache, die Sie nur
nachbessern müssen, da wir hier sind,
ist, dass wir dies
dreimal geschrieben haben, wie wir
in unserer anderen Lektion durchgegangen sind, dass wir hier eine
Breiten-Anweisung verwenden können. Wir brauchen diese Zeit hier nicht. Wir enden mit einer Aussage. Und dann um sicherzustellen, dass
unsere Formatierung lesbar ist. Und ich löse das aus, und das ist das Gleiche. Wir müssen diese
Informationen nicht immer und immer wieder eingeben. Ich weiß, dass es in diesem Fall tatsächlich
mehr Arbeit war, es zu reparieren, weil wir es zuerst
nicht gemacht haben. Aber das macht
alles viel sauberer. Nun, wir haben keine
doppelten Informationen. Wir können hier sogar das
Gleiche tun. Also schneide ich das, sagen wir damit, diese Informationen durch
Einzug
ersetzen . Und das ist ein bisschen
aufgeräumt. Wir müssen es nicht
absolut überall machen, aber ich möchte mich nur an die Gewohnheit
gewöhnen, das zu tun, wenn es für uns
sinnvoll ist. Also hier nehmen wir
unsere Informationen auf und fügen hier einen Gesamtpreis hinzu. wollen wir
jetzt zu unserem Output hinzufügen. Wir wollten rangieren, wir nannten das Gleiche, Kohlepreis hier, Wert ist gleich. Gehen wir jetzt
zu unserem Mitschöpfer zurück. Wir können hier noch ein weiteres
Zitat machen . Wir
erstellen unseren Ordner. Die Datei wurde erstellt oder der Ordner wurde erstellt. Eher. Ich erstelle mein Zitat, erscheint. Formatierung ist festgelegt. Wir haben unser Gesamtpreisfeld, das jetzt
automatisch ausgefüllt wird. Es hat alles in
der Formatierungsausgabe nach unten gedrückt , ist
genau wie das, was wir wollten. Wir schließen dies und Sie sehen
, dass es funktioniert hat,
die Zeile zu kommentieren ,
die die Datei schließen würde , und sie
blieb diesmal geöffnet. Und hier ist unsere Akte in
unserem jeweiligen Ordner.
75. 3.9.1 Quote – History Log – Start: Jetzt, da wir hier einen netten
anständigen
Anführungsgenerator haben ,
der die Funktionen beinhaltet ,
ein Angebot mit einigen grundlegenden Eingängen
schnell auszufüllen . etwas Butterpekannuss
hierher geworfen, habe das noch nicht benutzt. Wir fügen unseren Artikel hinzu und wir
können Ordner erstellen. Wir können ein Angebot erstellen. Das baut sich hier drüben auf. Wir lassen unsere Butter Linie werden, und wir können sogar unsere E-Mail
erstellen. Ich möchte das in
den nächsten Schritt überführen. Das nächste große Feature, das ein Unternehmen, das ein solches Tool
verwendet, möglicherweise möchte, besteht darin, von etwas zu gehen
, das nur
das Angebot generiert , und die
E-Mails, die gesendet
werden sollen um
all dies tatsächlich zu protokollieren Informationen. Nachdem Sie also viele Angebote
verschickt haben, sagen wir im Laufe
eines Viertels oder eines Jahres, haben
Sie alle Informationen über die Zitate, die
ausgegangen sind, damit Sie die Informationen
überprüfen können und haben mehr Daten
über Ihr Unternehmen. Und dann können wir
anfangen, auf
Dinge wie Datenanalysen einzugehen Dinge wie Datenanalysen herauszufinden, wie viele Angebote
an welche Kunden gesendet wurden. Irgendwann sogar Ihre
Gewinnrate, wie oft sie zu
Ordern und solchen Dingen werden. Für die nächste Serie werden
wir also mit dem Aufbau
einer Datenbank fortfahren , die
diese bereits
ausgefüllten Informationen
automatisch aufnimmt die
diese bereits
ausgefüllten Informationen und diese an
eine Datentabelle übermittelt , die wir können führen Sie Aufzeichnungen über
alles. Review später. Ich
arbeite mich langsam nach oben. Wir haben also eine Reihe verschiedener Möglichkeiten, wie wir das machen können. Die erste, die ich als nächstes
mache, ist das Speichern dieser Informationen
im selben Excel-Blatt. Und natürlich können wir uns
dann
zu verschiedenen Arten von Datenbanken hocharbeiten . Aber wir werden jetzt nicht darauf eingehen. Wir werden langsam die Robustheit
dieses Dings
aufbauen , während wir die langsamen Schritte unternehmen
, damit wir das gesamte
Training involviert wenn wir auf einem Tool wie
diesem aufbauen und immer
komplexer umgehen mit besserer und
besserer Automatisierung. Um loszulegen, erstellen
wir einen neuen Tab. Also rufe ich zum Beispiel
einfach dieses Angebotsprotokoll auf. Jetzt kommen wir zurück
und schauen uns
die Informationen an , die wir in unserem Angebotsprotokoll
wünschen. Wir haben Dinge wie
unsere Angebotsnummer oder Kunden oder Kontakt. Das scheint alle wichtigen
Informationen oder der Gesamtpreis zu sein. Planen wir diese Tabelle also irgendwie aus. Also nennen wir das,
unser Angebotsprotokoll
oben wird etwas
wie unsere Angebotsnummer haben. Wir haben unseren Kundennamen, wir haben unseren Kontaktnamen. Eigentlich werde
ich vorerst nicht einmal unseren Kontaktnamen
haben. Lassen Sie uns diese Daten einfach
so minimal wie möglich halten. können wir später hinzufügen. Aber wenn wir auf die Idee
von Datenbanken und
Datenstrukturen eingehen , werden
wir anfangen, die Idee
zu erkennen Daten nicht zu wiederholen. Also wenn wir hier Mantel Nummer
eins haben und wir
unseren Kundennamen
als Großhandelstinte haben . Ich denke, wenn wir anfangen würden, solche Daten
zu speichern, haben
wir tatsächlich einen Querverweis,
bei dem unser
Eiscreme-Großhandelstintenkunde nur einen Kontakt
hat und
das ist Clay O'Neill. Und damit wir diese Daten speichern, müssen
wir
den Kontaktnamen nicht
unbedingt genau hier speichern . Wir könnten, wenn es einen guten
Grund gibt, diese Zeit zu sparen. Wir könnten
jedoch immer
unseren Kundennamen anhand
dieser Daten nachschlagen unseren Kundennamen anhand , vorausgesetzt,
dass er stagniert. Also möchten wir das vielleicht später
ändern. Aber im Moment sind dies
eine Art redundante
Informationen, da es sich immer um diese
Eins-zu-Eins-Beziehung handelt. Wenn wir unseren Kundennamen haben, können
wir immer unsere Kontakte
nachschlagen. Unser Gesamtpreis hier. Wenn wir diese Informationen
in unserem Gesamtpreis haben, benötigen
wir diese
Informationen nicht, da es
nur ein Werkzeug ist , mit dem wir hier Zeilen
hinzufügen können. Und dann möchten Sie vielleicht
speichern, welche Leitungen
Sie hier haben. Aber wir
wollen eigentlich keine verrückte Kolumne wie diese machen . Sie können sich das irgendwie
ansehen und versuchen ,
unsere Datenstruktur zu durchdenken. Und stellen Sie sich vor,
es wird
schwierig sein , herauszufinden, wie wir
alle Informationen über
diese Zeilen hier platzieren können,
die eine einzige Zeile
mit alle Informationen über
diese Zeilen hier platzieren können, Informationen für ein einziges Zitat enthält. Wir haben auch ein Angebot und ein paar
weitere Informationen hier. Also lasst uns das vorerst beiseite legen. Für ein Angebot brauchen wir einfach so
etwas. Also klicke ich auf Control T. Damit wir das zu einer Tabelle erklären
können. Und wir haben hier einen Basistisch. Wenn Sie auf
gänglichere Softwaresysteme einsteigen die mittelgroß sind, verwenden die
größeren Unternehmen, z. B. ein ERP-System, das Sie möglicherweise mit diesem Begriff
vertraut sind, nämlich
Unternehmensressourcenplanung. Eine allgemeine Idee hier ist dass
wir diese Zeilen haben,
in denen wir diese Informationen
speichern müssen , und wir
haben diese Header-Informationen, ich
die Header-Info nenne, nämlich wenn
wir Zitat zehn haben, wir haben ein paar Sachen, die auf eine Datenzeile
passen, genau wie wir es hier erstellt haben. Dann haben wir auch diese anderen Informationen, die sich auf das Angebot Nummer zehn
beziehen, wo wir mehr als
eine Informationszeile benötigen. So haben wir zum Beispiel
hier drüben ein Zitat eins. Aber dann erstelle ich hier
einen neuen Tab, und wir nennen diese Zeilen lange Angebotszeilenprotokoll
hier für die Kopfzeile. Wenn Sie die Angebotsnummer sagen
und sagen wir, wir sind hier
auf Zitat eins. In der Tat
schauen wir uns Corp Ten an. Warum habe ich das nicht einfach sehr schnell
geändert. Es ist also derjenige, den wir derzeit tatsächlich auf unserer
Haupt-Registerkarte
haben. Also haben wir Zitat zehn, und dann haben wir diese
Informationen hier drüben. Ich kopiere das einfach aus einer E-Mail und
füge das hier ein. Sie können sehen, dass wir
unsere Positionsnummer, Artikel, Beschreibung, Menge, Einheiten, Einheit, Preis,
Standardpreis haben. Dass jede dieser Zeilen alle dem
Anführungszeichen Nummer zehn entspricht. Lassen Sie mich das in
ein Tabellenformat verwandeln , hier
machen wir Control T erneut, richten Sie das so ein. Und Sie können sehen,
dass wir zwei Tabellen
in den beiden Tabellen haben in den beiden Tabellen die die Informationen
enthalten, die wir
für Zitat Nummer
zehn wünschen , in diesem Fall, wo es eine
Sache gibt, bei der es nur eine Zeile gibt Informationen
für die Angebotsnummer. Und wir können sogar
unseren Gesamtpreis
hier als Referenz setzen , also 375. Aber dann wollen wir unsere Zeilen hier drin nicht
wiederholen. Dann mischen und
passen wir unsere Informationen irgendwie an. Sie können sehen, dass die Spalten
nicht so angeordnet sind,
dass wir
unsere Zeilen in eine Tabelle einfügen , die so eingerichtet ist. Aber dann haben wir eine separate Tabelle mit
unseren Informationen auf Zeilenebene,
nämlich Informationen, die
mehrere
Datenzeilen für den R1-Datensatz benötigen. In diesem Fall ist mehrere
Datenzeilen für den R1-Datensatz unser Datensatz unser Angebot
Zahl von zehn. Dies ist eine wirklich
gemeinsame Datenstruktur Sie in allen Unternehmen sehen werden. Und die Terminologie
, die ich normalerweise darin
sehe, dass ich mich selbst verwende, ist, dass dies als
Kopfebene gilt und dies dann als Angebotsstufe
angesehen wird. Und das spiegelt tatsächlich viele Ihrer Angebotsformate wider,
die ich hier öffnen werde. Sie sehen, dass unsere Benennung darauf zurückzuführen ist, dass unsere Kopfebene
hier oben liegt und dann unsere
Angebotspositionen
sind, oft sehr ähnlich für
Rechnungen und Bestellungen. Das hast du. Eine
Tabelle in der Mitte , bei der es sich um Ihre Zeileninformationen handelt, die in
Bezug auf diesen Datensatz eine Zeile oder
viel mehr als eine Zeile sein kann , aber Ihre Kopfzeile ist
nur eine
Information in
Bezug auf der Rekord. Hoffentlich ergibt das Sinn. Vielleicht haben Sie diese Idee bereits durch Ihr
Unternehmen oder Ihren Job in Kenntnis gesetzt, und vielleicht haben Sie es nicht getan, aber wenn Sie darauf stoßen, werden
Sie anfangen,
das gleiche Setup von
Kopfzeile in Zeilen. Deshalb haben wir
hier im Wesentlichen zwei Tabellen
erstellt , weil wir unsere Linien im Auge
behalten wollen. Es kann auch so sein,
dass Sie sich nicht um
Ihre Zeilen kümmern und Sie nur
diese Summe des Angebots wünschen. Das ist also auch möglich. Aber ich wollte das ansprechen
und wir werden beide gleichzeitig einrichten gleichzeitig weil sie
ähnliche Konzepte verwenden werden. Wenn wir hierher kommen und dies
tatsächlich bereinigen, genau wie bei unseren Angebotsprotokollen, haben
wir einige
redundante Informationen
, nämlich dass unsere Beschreibung immer dieselbe
ist. Wenn wir unseren Artikel kennen. Dies ist eigentlich eine
redundante Spalte die ich hier löschen kann, denn wenn wir
die Beschreibung dieser Zeile kennen müssen, können
wir immer unseren
Artikel nehmen und eine Suche durchführen,
die eine Eins-zu-Eins-Beziehung hat Ihrer Artikelnummer und
Ihrer Beschreibung. Wenn wir auf Daten zurückkommen, werden wir
tatsächlich sehen,
dass die Einheiten die gleichen sind. Dies sind also nur
redundantere Informationen , die wir jetzt nicht wirklich im Auge
behalten müssen ,
es sei denn, wir haben später einen
guten Grund und wir können diese immer wieder
hinzufügen. Jetzt haben wir unseren Stückpreis. Ich werde
das tatsächlich verlassen. Dies sind mehr Informationen, nicht unbedingt
über Automatisierung, sondern wie Unternehmen laufen könnten, aber ich denke, es lohnt
sich sowieso darauf einzugehen, ich werde
den Stückpreis verlassen, obwohl Mit der
Logik, die wir zuvor hatten, denke
ich, dass wir unseren Stückpreis
genau hier haben, was wir tun. Es besteht jedoch die Möglichkeit, dass sich der
Einzelpreis ändert. Es ist also
unwahrscheinlich, dass sich einige
dieser anderen Dinge oft ändern, aber Ihre Preise
werden möglicherweise ziemlich oft aktualisiert. Und dann wollen wir den tatsächlichen
Preis
erfassen, zu dem wir angegeben haben. Und wenn wir dann
hier reingehen und von
unserer Master-Tabelle den Preis für einen
dieser Artikel ändern . Wir möchten nicht, dass sich unsere Angebotspositionen, die eher ein
historisches Protokoll sind, ändern. Wir möchten, dass es sich an den
Preis erinnert, zu dem es angegeben wurde. Und dann haben wir hier unseren
erweiterten Preis
, den wir eigentlich nicht
brauchen, weil wir dies immer mit unserer
Menge im Stückpreis
berechnen können . Das
Wichtigste hier
ist, denke ich, dass ich mich mit der Speicherung von Daten befassen wollte, insbesondere Daten, die
möglicherweise zu
vielen Daten werden könnten . Das historische Protokoll wie dieses könnte zu Hunderten
oder Tausenden oder für riesige Unternehmen sogar Millionen von
Informationszeilen werden. Sie können solche Dinge tun um es
effizienter zu halten und keine Informationen zu
speichern, die Sie herausfinden
könnten
, wann Sie sie benötigen. Denn sonst hätten
wir hier zusätzliche Zeilen gehabt , die wir möglicherweise nicht benötigen. Und wenn Sie im
Laufe der Zeit
Hunderttausende von Informationszeilen erhalten haben
, wird dies ein
großer Unterschied im Speicher sein ,
der zum
Speichern dieser Informationen benötigt wird. Wir haben hier ein paar Grenzen nur von meinem Kopieren und Einfügen. Also werde ich tatsächlich hervorheben, dass dies zu Cell Style geht, macht es normal, was es
tatsächlich nur mit der automatischen
Formatierung der Tabelle übereinstimmt. Wir können hierher kommen. Wir machen den
Stückpreis in Dollar, Gesamtpreis auch in Dollar
pro Hälfte der Formatierung. Und wir haben diese
beiden Registerkarten irgendwie als unsere Datenbank eingerichtet, das wird
unsere Verlaufsprotokollierung sein sind Zitate, wenn wir sie senden. Das ist also nur der
Rahmen dessen, was wir verwenden werden, um unsere Informationen zu
speichern. In den nächsten Videos werden
wir auf den eigentlichen Code eingehen , der
diese Informationen verwalten wird.
76. 3.9.2 Quote – 3.9.2: Nachdem wir das Framing
auf unserem Excel-Blatt
eingerichtet haben, wie wir einige grundlegende Informationen
über die verschickten Angebote
speichern werden. Also haben wir unsere
Header-Informationen hier, in unseren Zeilen Informationen hier. Lassen Sie uns anfangen
, darüber
nachzudenken wie dies funktionell funktionieren
wird. Sagen wir also, wir
arbeiten mit 11 zusammen. Wir kreieren hier ein neues. Und ich erstelle meinen Ordner. Das ist unser Workflow hier. Übrigens,
irgendwann können wir
das alles zusammenbinden ,
wenn wir wollten, wir werden uns jetzt nicht die Mühe machen,
aber wir könnten es schaffen. Wenn Sie also ein Angebot erstellen, wird auch überprüft, ob kein Ordner
vorhanden ist, es wird der
Ordner für Sie erstellt. Sie müssen also sogar
auf weniger Schaltflächen klicken als die drei, die wir hier klicken müssen
, um schnell einen Ordner
und dann ein Angebot zu erstellen. Wir könnten sie kombinieren. Wir werden uns vorerst
damit befassen. Wenn Sie dann ein Angebot erstellen,
nachdem Sie alles eingerichtet
haben, lassen wir
die Dinge so, wie es vorerst ist. Dann klickst du auf E-Mail erstellen
, die die E-Mail erscheint. Der Haken hier ist, dass diese E-Mail erst
erlischt, wenn ich auf Senden klicke. Es ist
wirklich einfach,
diese E-Mail
automatisch zu versenden. Aber normalerweise habe ich das nicht getan , weil die meisten Benutzer
nicht
damit vertraut sind, dass E-Mails nur in
ihrem Namen herausfliegen , ohne dass sie sie zuerst
lesen. Und oft möchten
Sie vielleicht weitere Informationen
hinzufügen, ein paar Kleinigkeiten
bearbeiten oder jemand anderen hinzufügen. Es ist also schön, einfach aufzutauchen. Und wenn Ihnen
alles gefällt, klicken Sie auf Send
Yourself . Eigentlich
sehr schnell. Zeigen Sie Ihnen einfach, wenn Sie
vorbeikommen, um E-Mails zu erstellen, wo wir das Display hier eingeben, wir können
diese tatsächlich durch Senden ersetzen. Mit diesem Befehl wird die
E-Mail einfach erlischt, ohne zuerst
aufzutauchen und anzuzeigen. Also werden wir das nicht machen. Wir werden
es als Display belassen. Aber der Haken hier
ist, dass wir diese Informationen
in unsere Geschichte einloggen möchten diese Informationen
in unsere Geschichte einloggen nachdem wir wissen, dass sie an unseren Kunden
gegangen sind
und wir weitergemacht haben, weil wir
auf die Schaltfläche Senden
klicken müssen und
Ausblick darauf, dass es ausgeht. Wir können nicht feststellen, dass der Benutzer in Outlook auf die Schaltfläche
Senden geklickt hat. Wenn also eine Person
die E-Mail so erstellt, merkt sie
, dass sie einen Tippfehler oder
ähnliches
gemacht hat oder
dass sie die Art und Weise, wie dies eingerichtet ist, nicht gefällt
. Und dann schließen sie
die E-Mail ab. Sie sind vielleicht nicht fertig. Und vielleicht gehen sie am Ende des
Tages
von ihrem
Computer weg und
kommen dann morgen zurück, um hier an
diesem Zitat 11 zu arbeiten. Wir sind nicht bereit,
dies in unsere Geschichte einzuloggen. Was wir tun wollen, ist
das abgeschlossene Angebot protokolliert , wenn wir fertig sind. Also wollen wir keinen einloggen. Wir sind uns nicht sicher, ob es vollständig ist. Anstatt also die Zeit für unsere E-Mail
zu erstellen, wissen
wir nicht, ob die
Person eine E-Mail erstellt hat, nur um sie zu überprüfen, und es
wird einige Dinge ändern. Stattdessen werden
wir zumindest vorerst nur
einen ganz neuen Button erstellen. Ce, markiere als abgeschlossen. Diese als abgeschlossen markierte Schaltfläche
ist die Schaltfläche, auf ein Benutzer
am Ende seines
Vorgangs einfach drücken würde , um zu sagen:
Hey, ich bin hier komplett fertig. Und genau das wird
diese Informationen von hier
in unser Protokoll für unseren
Header und unsere Zeilen verschieben diese Informationen von hier . Jetzt erklären wir unseren
Workflow und wie er funktionieren wird. Fangen wir an, den
Code aufzuschreiben, der das tun wird. Lassen Sie uns
hier ein neues Modul für diese Informationen erstellen, wir werden Modul einfügen. Eine Sache, die Sie
hier vielleicht bemerken, ist, dass diese Dateien gerade
im Speicher geöffnet sind. Obwohl sie hier in
Excel sind, sind sie nicht geöffnet. Das könnten wir in einem anderen Video
ansprechen. Oder vielleicht lege ich es
früher in unsere Klasse ein, aber
das legen wir vorerst einfach beiseite. Das ist nicht wichtig. Wir werden
dieses Modul hier erstellen. Und wir nennen es Datenbank. Vorerst. Vielleicht benennen wir es um,
aber es wird nur
datenbankbezogene Dinge behandeln. Lassen Sie uns dies also
als Log-Datensatzverlauf einrichten. Jetzt können wir uns die Informationen
ansehen, die wir benötigen. Wir beginnen mit
unserem Header, was sehr einfach sein wird hier sehr einfach sein wird, weil wir nur
drei Informationen haben. Anhand einiger der Konzepte, die
wir bereits gezeigt haben, können
Sie sich wahrscheinlich vorstellen,
wie wir das schaffen können. Wir müssen nur
die Informationen
von hier abrufen und dann
eine neue Route zum
Status der Tabelle hinzufügen und diese Informationen
in diese neue Zeile einfügen. Es gibt nur
drei Informationen. Das sollte also überhaupt nicht so schlimm
sein. Selbst bei diesem Tool, was wir bereits behandelt haben, wird
dies
dem Prozess „Artikel hinzufügen“ sehr ähnlich sein. Also lasst uns hier rüber gehen. Lassen
Sie uns dies wie gewohnt einrichten und unseren Code in
unserer Benutzeroberfläche
aufteilen. Und wir brauchen Bootsnummer, Kundennamen, eine Schnur und den Gesamtpreis. Wie. Auch hier machen wir
das vorerst einfach zu einer Schnur weil wir
damit keine Mathematik machen. Es ist keine große Sache, dass wir Zahlen als Strings
verwenden. Wenn wir jetzt
etwas Mathematik mit dieser Nummer machen wollten, wollen
wir
genauer sein und es wahrscheinlich eine doppelte Anführungsnummer
nennen. Und wir haben das zu diesem Zeitpunkt eine
Menge Zeit gemacht, ist die Bereichsnummer. Wenn wir möchten,
dass es expliziter ist, können
wir sicherstellen
, dass wir
in unseren Blättern namens Name arbeiten . Wir verwenden hier eine Width-Anweisung. Wenn wir dann den
Zeitraum hierher legen, werden
wir wissen, dass wir explizit sagen, dass wir den Bereich
unseres Hauptblattwerts verwenden . Dann können wir sagen, dass
der Kunde braucht. Entspricht dem Bereich, dem
Kundennamen, diesem Wert und unserem Gesamtpreis entspricht unserer Spanne, die als
Gesamtkosten bezeichnet wird. Wenn ich jetzt F8 drücke und wir werden das
durchgehen, nur um
sicherzustellen, dass ich keine
Fehler gemacht habe. Wir haben 11
Kundennamen und Gesamtpreis. Lasst uns das also weiter aufbauen. Ich werde
hier einen Kommentar abgeben und sagen,
neue Route hinzufügen , um zu zitieren,
loggen Sie sich beliebt ein. Also müssen wir diese
Tabelle hier als Objekt ansprechen. Und dann fügen wir eine neue Zeile genau wie wir es in der Vergangenheit getan haben. Und während ich
das sage, merke ich, dass ich vergessen habe, diesen einen Namen zu
geben. Nennen wir diese Tabelle, Tabelle in unserem Log. Und während wir dabei sind, nennen
wir unsere
Zeilentabelle hier drüben. Tabelle. Nachdem wir hier einen guten
Namen für unsere Tabelle haben, erstellen
wir ein Objekt
oder Listenobjekte, also nennen wir es
Tabellenkopf als Listenobjekt. Legen Sie den Tabellenkopf gleich fest. Jetzt sind wir in einem anderen Blatt, also
sagen wir unsere Laken. Welches Logbuch? Wie haben wir
unser Blatt hier unten genannt. Wir sagen Listenobjekte. Und es wurde in
unserem Protokoll Zitat als
Name unserer Tabelle vorgelegt . Jetzt bereiten wir unser
Listen-Zeilenobjekt vor. Also erklären wir es
hier oben als Listenzeile. Und dann legen wir dieses
Listenobjekt als neue Zeile fest, wir einen Tabellenkopf
erstellen , wenn unser Listenobjekt
diese Liste wächst. Erstellen Sie also hier eine neue
Zeile und
deklarieren Sie sie dann als r l
Zeilenvariable, während wir es tun. Und jetzt, da wir
unsere Zeilenvariable haben, werde
ich es
so machen, bevor ich es repariere, was wir
vorher auch in dieser Reihe gemacht haben , das erste Element
ist unser Boot Nummer 23. Unser zweites Element und dann unser drittes
Element hier drüben wird
unser Kundenname
und unser Gesamtpreis sein. Also werden wir
unsere neue Reihe haben und dann 123. Und das war nur
als Demonstration. Wenn du
die anderen Videos gesehen hast, weißt
du, dass ich das
nicht machen will. Ich möchte tatsächlich
Tabellenüberschrift, diese Liste,
Spalte,
Angebotsnummer, diesen Index sagen . Benutze diese Notation hier drüben. Das benutzt unseren Spaltennamen. Anstatt
die Spaltennummer hier
auf diese Weise fest zu codieren . Aber ich habe das versehentlich
gelöscht, also mache ich ein Control
Z auf diese Weise. Wenn wir unsere Spalten
verschieben oder neue Spalten hinzufügen, müssen wir unsere Zahlen hier nicht
ändern. Und hier drüben
haben wir unseren Gesamtpreis. Probieren wir das also aus. Wir werden hier
ein Nachrichtenfeld am
Ende platzieren und sagen, dass Kopfzeileninformationen ein
Ausrufezeichen hinzugefügt wurden. Lasst uns nun unseren Button an
unser neues Makro binden, das ist Log-Datensatz zur Historie. Wir klicken das an. Wir haben hier einen Fehler. Werfen wir einen Blick darauf und haben ein Problem
mit dieser Zeile. Und sofort
merke ich, dass ich
das S hier auf Listenobjekten vergessen habe . Das muss also im Plural sein
, weil es eine Beule gibt. Es könnte
möglicherweise mehrere Listenobjekte geben. Und dann
sagen wir ihm, welches wir wollen, welches hier ist. Ich klicke auf Play, um die zum Protokoll hinzugefügten
Header-Informationen fortzusetzen. In. Hier haben wir unsere neuen Informationen zu dieser Tabelle
hinzugefügt. Nur um die Dinge etwas sauberer
aussehen zu lassen, entferne
ich die Rasterlinien, da wir diesen
Tisch bereits hier haben. Jetzt können wir es noch einmal versuchen. Und was wir
bemerken werden, denke ich,
ist, dass wir uns später
damit befassen werden, aber wir wollen wahrscheinlich nicht die Person dies tun kann und den Datensatz mehr als
einmal hinzufügt und dann freundlich ist
von doppelten Informationen. Also werden wir wahrscheinlich eine Art Fehler hinzufügen
, der irgendeine Weise
abfängt,
um später damit umzugehen. Also werde ich das Video
hier aufbrechen, und im nächsten wir unsere
Einzelposten zu unserem Verlaufsprotokoll für Zeilen
hinzu .
77. 3.9.3 Quote – Log Info: Nun, da wir unsere
Funktion haben, die
die Header-Informationen für
das Angebot hier
in unserer Header-Tabelle
protokollieren kann die Header-Informationen für , obwohl wir hier doppelte Datensätze hinzufügen können. Lasst uns als Nächstes unsere Zeilen machen. Wir machen dies in
derselben Formel, da wir
hier
natürlich keine zwei Schaltflächen
haben , die sagen, dass
Sie Ihre Zeilen protokollieren und dann Ihre Header
protokollieren. Das wird alles
auf einmal passieren. Also bauen wir
das hier drüben weiter. Und neue Zeile zum Hinzufügen oder
Loggen, nur um es zu klären. Und dann brechen wir
unseren Code ein wenig auf. Wir sagen, fügen Sie Zeilen hinzu, um das
Wiener Gesetz zu wählen und zu bevölkern. Das
werden wir
hier haben, um das einzurichten, genau wie wir hier
ein Objekt für unsere
Header-Tabelle haben . Jetzt
müssen wir dasselbe
für unsere Zeilentabelle tun . Und deshalb sprechen wir von
diesem Tisch hier drüben. Also sagen wir
Kabelleitungen als Listenobjekt. Wir haben schon eine Reihe von L. Ich schaue irgendwie
hier oben, während ich tippe. Wir können also wiederverwenden, dass aktivierbare Zeilen so
festgelegt werden, wo tatsächlich gleich Blätter sind. Nun, Wiens Gesetz, ich glaube, das nennen
wir dieses Arbeitsblatt,
das ist es, dass
Objekte zurück Tabelle auflisten, Zeilen Blog, ich glaube, war
der Name unserer Tabelle. Um nun unsere Informationen
hier hinzuzufügen, dieses Zeug,
lassen Sie mich das hier
größer machen, kommt von dieser Tabelle hier drüben. Um
die Informationen zu übertragen, erstellen
wir also ein Objekt für diese Tabelle, damit wir jede Zeile hier
durchlaufen können. Dies ist sehr ähnlich,
als wir
unsere Excel-Ausgabevorlage erstellt haben. Wir werden diese ganze Reihe
durchlaufen. Wir werden all diese Zeilen
durchlaufen
und diese Informationen dann hierher verschieben. In diesem Fall sind es etwas weniger
Informationen, da wir die Spalten, die wir im Auge behalten möchten
, eingegrenzt haben. Das sind nur fünf hier, wirklich dafür, denn das ist wirklich einfach. Kommen wir wieder her. Wir müssen
unsere Quelltabelle einrichten. Wie wir es also
Tabellenquellzeilen als dieses Objekt nennen , können wir das als
Quellzeilen gleich Blätter festlegen. Und das ist unsere Hauptregisterkarte. Und es ist in unseren
Listenobjekten, Tabellenzeilen. Wir können hierher kommen
und überprüfen
, ob wir jedes Jahr
Tabellenzeilen haben. Und natürlich würde es einen Fehler
auslösen, wenn ich einen Tippfehler machen oder dort den
falschen Namen schreiben würde. Jetzt, da wir dies haben, werden
wir
alle Zeilen in unseren
Quellinformationen hier durchlaufen . Also für ich gleich 12 Tabellen Source Lines
, dass diese Zahl stieg. Wir werden hier mit I als
Index für jede Zeile
durchlaufen . Nun, genau wie wir es für
unsere Angebotsausgabedatei getan haben, lassen Sie uns unser L Rho gleich setzen. Und dann aus unseren
Quellenstall - oder
Quelllinien, die Miss Rose. Und das wird jede Zeile
durchlaufen und dann unser L Rho-Objekt als
diese Information hier
setzen. Wir müssen
unsere Variable deklarieren , da wir sie lange
verwenden. Dann, nur um unsere Zeilen zu trennen, werden
wir hierher kommen
und wir werden hier für
jede Zeile hier
eine neue Zeile hinzufügen . Anstatt also nur das
gleiche Listenobjekt oder L Rho wiederzuverwenden, wird das möglicherweise verwirrend. Sagen wir neu l rho als
ein anderes wörtliches Objekt. Jetzt können wir sagen, dass neue
l rho gleich Tabellenzeilen setzen. Und weißt du was? Um die Dinge ein wenig klarer zu machen, ändere
ich den Namen
davon in Ziellinien. Also Tabellen-Zielzeilen, diese Liste von Zeilen, die wir hier
haben, unsere Quelle haben. Dies ist unser Ziel. Also werden wir unsere neue Zeile in
unser Ziel
setzen , während wir dort eine neue Zeile
erstellen. In diesem Fall
werden wir hier sechs,
eigentlich fünf Reihen durchlaufen . Also werden wir
diese Schleife fünfmal ausführen. Jedes Mal bekommen
wir Informationen von unserer Quelle und erstellen hier
eine neue Zeile. Wir werden
dies aufteilen, wo wir in diesem Abschnitt unsere Informationen
speichern müssen. Sagen wir also Dimension, Zeilennummer als String, Artikelnummer als String. Erinnern wir uns, welche
Kolumnen wir hier hatten , weil es
nicht alle waren. Also haben wir Zeilen, Artikel, Menge im
Stückpreis und Stückpreis. Und lasst uns diese
Informationen von hier drüben holen. Ich werde
genauso machen wie zuvor,
was damit beginnt, nur unsere Indizes zu lesen bevor wir aktualisieren, um unsere Spaltennamen zu
verwenden. Wir können also sagen, dass die Zeilennummer unserem Quellzeilenbereich
entspricht, eins, in diesem Fall diesem Wert. Und dann
entspricht unsere Artikelnummer L Rho-Bereich
zu diesem Wert. Unsere Menge überspringt tatsächlich eine , weil wir die
Beschreibung überspringen, die drei ist. Und wir gehen zu Kolumne vier. Und der Stückpreis, dem ich glaube, dass er
auch unsere Einheiten überspringen wird. also über fünf überspringen
und in den Bereich sechs gehen, diesen Wert, und dann nur zur
Klarheit
eingeben, können
wir tatsächlich hierher kommen
und dasselbe Konzept verwenden. Wir werden
Tabellen-Quellzeilen sagen. Also die Tabelle, die
wir uns ansehen und unsere Listenspalten
sagen, geben
wir unseren Namen ein, der in diesem Fall
denke ich
, dass es sich um eine Zeilennummer handelt. Der Index wird in diesem Fall
den ersetzen. Also Zeilennummer. Und dann kann ich das kopieren. Lassen Sie mich diese
Informationen vorerst einfach hier reinlegen. Und dann ist die zweite
Zeile Item. Der nächste ist die Menge. Da kopiere ich diese
Header hier drüben. Und dann
ist unser letzter Zeitpunkt, wo
all diese Informationen in diesen Variablen
gespeichert werden. Wir werden das
wieder in unsere neue Reihe werfen. Da diese Notation ziemlich
lang ist , kopiere ich sie einfach. Wir sprechen also nicht
über unsere L-Route. Wir sprechen jetzt über
unser neues l rho, das wir hier drüben in diesen
Tisch
gedrängt haben . Unser Angebot stammt nicht von
unseren Quelllinien. Besuchen Sie Informationen. Dies
ist der Fehler, den wir gemacht haben. Diese habe ich vor ein paar
Videos gemacht, in denen ich
vergessen habe , diese Änderung
unserer Tabellenreferenz vorzunehmen. Die Zeilennummer ist immer noch dasselbe für unseren Spaltennamen und wir können ändern, wenn es anders ist. Und jetzt erhalten wir von hier keine
Informationen, sondern setzen diese Informationen mit
der Zeilennummer. Eine Sache, die ich vergesse, sind
Informationen, die wir nicht von der Tabelle unsere erste Spalte
hier, die Angebotsnummer. Also werden wir
diese Spalte mit der Mantelnummer nehmen. Wir werden das
als unsere Angebotsnummer festlegen, die wir bereits einmal
für Header-Informationen verwendet haben. Diese Variable war also bereits für uns
vorbereitet. Jetzt können wir das nehmen und wir
müssen von Zeile Nummer zwei,
Artikel als Menge,
dann Stückpreis gehen . Jetzt muss ich diese hier für
Artikel, Menge und Preis
aktualisieren . Und dann werden wir
aktualisieren, dass unsere Variablen verwendet
wurden,
die hier verwendet wurden, nämlich Artikelnummer,
Menge und Preis. Das spiegelt nur die Variablen wider,
die wir hier aus unserer Quelle vorbereitet
haben. Und das wird für
jede Zeile
durch die Schleife laufen und all
diese neuen Zeilen hier erstellen. Wenn wir also Glück haben, schauen
wir mal, ob das funktioniert. Wir kommen hier rüber. Wir sagen, als abgeschlossen markieren, Sie haben einen Tiefpunkt
außerhalb des Bereichs. Und es hat ein Problem
mit der Zeilennummer. Hier drüben. Wir haben
unser Ziel, unsere Listenspalten, Zeilennummer. Dies sagt Lines Nummer Plural. Ich glaube, es sollte
einzigartig sein, um hier drüben zu passen. Und um wirklich mehr Sinn zu ergeben. Also haben wir diesen
halbkaputten Code. Wir sind eigentlich immer noch
mittendrin,
also treffe ich Run und wir
können unseren Weg fortsetzen. Und hier sind unsere fünf Zeilen von der Titelseite in unser Zeilenprotokoll verschoben
. Und dann haben wir noch ein
Duplikat hier drüben. Lassen Sie uns fortfahren und diese
Zeilen für Zitat Nummer 11 löschen. Und wir ändern
unsere Nachrichtenfelder,
sagen wir Angebotsinformationen, die
zur Verlaufssperre hinzugefügt wurden. Also lass es uns jetzt noch einmal versuchen. Als vollständige Angebotsinformationen markieren
wurde das Verlaufsprotokoll hinzugefügt, und wir kommen vorbei und wir sehen unsere Header-Informationen
hier hinzugefügt werden. Und auch unsere fünf Zeilen
von Zeileninformationen, oder fügen Sie sie hier hinzu.
78. 3.A.1 Automatisieren von Daten aus vielen Dateien – Einführung: Im letzten Video
haben wir eine Funktion hinzugefügt, die Informationen zu
jedem Angebot in einer Datentabelle protokolliert ,
während wir jedes Angebot vervollständigen. Wenn wir also auf die Schaltfläche „Vollständig
markieren“ klicken, verschieben
wir
beispielsweise die Zeilendaten und
die Kopfdaten auf einer anderen Registerkarte hier hinein. Also haben wir zehn geschickt und da
wir ein vollständiges markiert haben, verschieben
wir alle Zeilen
in diese Tabelle. Und dann 11. Und dann, wenn wir 121314 machen, werden
wir
diese riesige Datenbank
mit allen Informationen
in dieser Tabelle erstellen allen Informationen
in dieser Tabelle dabei die Geschichte der
Zitate verfolgen ,
die in den Zeilen sich befinden. Das bereitet uns hier auf eine
kleine Tangente vor. Dies bereitet uns auf
eine kleine Tangente vor. Aber es gibt mir auch die Möglichkeit , Ihnen
etwas zu zeigen, das in allen
möglichen Szenarien
wirklich üblich ist. Und wir werden genau hier darauf
stoßen. Da wir
diese Funktion mit Zitat zehn hinzugefügt haben, haben
wir eine Reihe von Anführungszeichen, die wir früher gesendet haben,
und nur diese Demos von eins bis neun, die
nicht in dieser Datentabelle enthalten sind. Und was wir wirklich
tun wollen, ist, all diese Geschichte
von unserem ersten Zitat an den
Anfang zurückzubringen . Wir wollen
so etwas tun, als würde man einen zitieren , der eigentlich
keine Datei enthält. Wir haben wahrscheinlich gerade die
Excel-Dateien erstellt und ausgegeben. Sie gehen in das Zitat, um es zu
öffnen, und Sie möchten etwas tun, wie diese Informationen
abrufen. Ich lege es vorerst einfach hier
hin und platziere es so. Und dann
müssen wir wieder hierher kommen. Gehen Sie zu Zitat drei, öffnen Sie diese Datei, holen Sie sich
diese Informationen
und Sie können sehen, dass sie dies im Grunde genommen weiter tun
muss. Das war also ein Zitat für einen N3. Und dann werden
wir vier
bis zu neun machen , damit wir unsere Geschichte
dieser Zitate ausfüllen unsere Geschichte können, die vor dem
Hinzufügen dieser Funktion waren. Und das ist eine Möglichkeit, unsere Datenbank
aufzuholen. Wir haben also nicht diese Lücke, in wir unsere
früheren Zitate nicht haben. Und ich könnte
diesen Prozess fortsetzen , weil wir bisher nur neun
haben. Dies gibt uns jedoch eine
großartige Chance,
Ihnen zu zeigen , wie Sie so
etwas automatisieren können, denn in vielen Fällen werden
wir keine neun haben. Wir würden eine Funktion wie diese hinzufügen, und wir werden feststellen, dass wir Daten
aus dem gesamten Zitatverlauf benötigen , was Hunderte oder
Tausende verschiedener Zitate sein könnte. Und es gibt keine Möglichkeit,
jede Datei so zu öffnen , wie ich es Ihnen gerade
gezeigt habe, damit diese 2.5 all das
Ausschneiden und Einfügen
der Daten in unsere Datenbank durchführen . Dies gibt uns also die Möglichkeit
, diesen Prozess zu durchlaufen. Sie können
diesen Prozess aber auch auf eine Vielzahl
anderer Arten verwenden , bei denen
Sie im Grunde viele,
viele verschiedene
Excel-Dateien öffnen müssen , um Daten abzurufen, in einigen Fällen Hunderte
oder Tausende, und alles in einem Ort. Und wir wollen diesen Prozess
automatisieren.
79. 3.A.2 Loop der IDs: Alles klar.
Beginnend mit der Erstellung eines Tools werde
ich dieses Tool trennen , das wir für
diesen Prozess erstellen
werden, um all diese Excel-Dateien zu öffnen und die Daten aus ihnen
herauszuziehen. Also mache ich es einfach genau hier
in unserem Schöpfer. Ich könnte eine neue Excel-Datei starten, aber das muss nicht wirklich
getan werden. Wir erstellen eine neue Registerkarte
und ich nenne es
einfach Tools, und ich nenne es
einfach Tools damit wir
verschiedene Funktionen hinzufügen können. Es ist nicht offiziell Teil
unseres Zitaterstellers
, an dem wir in den
vorherigen Lektionen
gearbeitet haben , aber es ist eine eigenständige
Funktion, die Sie verwenden könnten. Und so könnte
es zum Beispiel einen Button haben , der etwas
wie Daten abrufen sagt. Und was wir in
unserem speziellen Fall tun wollen, ist, dass wir diese Ordner hier
haben und diese Ordner hier
haben und
die
Zeilendaten von eins bis
neun abrufen möchten, da wir nur die Daten für zehn
und 11 haben und gehen
vorwärts. Und wieder sind es gerade erst
neun, aber es könnten Hunderte
in einem anderen Szenario sein, weshalb wir sicherstellen
möchten, dass wir wissen, wie man so
etwas automatisiert. Beginnen wir also damit,
eine Liste von Anführungszeichen zu erstellen. Welche wollen
wir also öffnen? Wir brauchen keine zehn und 11. Also lasst uns jetzt mit unseren
Ordnernamen gehen. Wir brauchen ein Zitat eins. Wir bleiben bei dieser
Notation hier drüben. Und wir brauchen bis zu neun. Im Moment werden wir es
auf diese Weise machen. Und du siehst, es ist
so einfach zu machen. Neun Und wenn wir noch viel mehr hätten, könntest du diese Liste nach unten ziehen, zumal sie nacheinander so benannt sind. Es gibt eine andere Methode, auf die wir uns
vielleicht
in einer zukünftigen Lektion einlassen
, nämlich wie man
eine Reihe von Dateien und
Ordnern durchläuft , wenn es keinen konsistenten Namen
gibt und es nur Tausende gibt
von Dateien in einem Ordner, wie man jede
einzelne Datei oder jeden Ordner
in einem bestimmten Unterordner durchläuft in einem bestimmten Unterordner ohne die Namen
kennen zu müssen. Das ist also eine andere
Option, die Sie haben, aber wir werden jetzt nicht darauf
eingehen. Jetzt, da wir
unsere Liste von Zitaten haben, werden Sie sich
vorstellen, dass wir dies
tun werden. Beginnen wir also ein
Makro hier drüben. Ich komme hier
rüber, in unserem Mitschöpfer. Lassen Sie uns einfach beide wie gewohnt offen lassen. Hier drüben
erstelle ich ein neues Modul. Wir rufen diese Tools ,
nur um unserem
Tippnamen hier zu entsprechen. Wir können es Sub nennen. Hol dir diese drei Zeilen. Was wir also tun müssen,
ist jede
dieser Dinge durchzugehen und wir
müssen in jeden Unterordner gehen. Also
müssen wir den Pfad jeder
Excel-Datei hier kennen . Um das einfach zu
halten, vergessen
wir das Zitat eins,
nur um es einfacher zu machen. Also klicke ich mit der rechten
Maustaste und lösche dies, da keine
Excel-Datei drin ist. Lasst uns einfach zwei bis
neun machen und die Dinge
so einfach wie möglich halten , um zumindest anzufangen. Wir wissen also, dass
sich unsere Excel-Datei hier in diesem Pfad befindet. Hier ist der Ordner
, in dem sich die Excel-Dateien befinden. Wenn ich mit der rechten Maustaste hier drüber klicke, kann
ich diese Kopie tatsächlich
als Pfad machen, werde hier einen
Kommentar abgeben. Dies ist ein Beispiel für den vollständigen Pfad
dieser Excel-Datei und wir wissen , dass
sich diese Zeichenfolge ändert. Wir haben also einen Ordner
, der sich ändert, und unseren Dateinamen, der sich zwischen Anführungszeichen ändert, und es
wird nur zwei,
drei, vier oder fünf,
sechs usw. gehen . Behalten wir das also hier drüben
im Hinterkopf. Ich überziehe das und lass uns anfangen etwas zu schreiben. Wir wissen, dass wir
eine Schleife brauchen werden, um
jede von diesen zu durchlaufen. In diesem Fall
müssen wir es neunmal ausführen. Eins, zwei, drei, vier, fünf. Wie wir es zuvor getan haben, können
wir dies zu einer Tabelle mit
Tabelle vier, Anführungszahlen machen. Sagen wir einfach, lasst uns
unsere Tabelle beide Zahlen
als dieses Objekt erstellen . Wir werden
dieses
Tabellenlistenobjekt unsere
Objektvariablen hier als
Tabellenwerkzeuge festlegen Tabellenlistenobjekt unsere
Objektvariablen hier als , die das
Objekt als Plural auflisten, es wird Zahl ziehen, oder? Jetzt haben wir einfach
diese wirklich grundlegende Sache und manchmal breche
ich einfach
hier ein und halte an und starte sogar die sehr kleinen
Codeausschnitte , die ich geschrieben habe, damit ich sicherstellen
kann, dass es funktioniert. Und jetzt haben wir die Anerkennung
dieser Tabelle hier. Wir haben hier dieses Listenobjekt erstellt
, das diese Tabelle ist, und dann können wir
ein Listenzeilenobjekt erstellen. Also haben wir dies in
unseren vergangenen Lektionen als
Listenzeile gemacht und werden jede
dieser Lektionen
durchlaufen , damit wir für jede Liste
etwas wie für jede Liste sagen können , Tabellennummer,
Zahlen, Bestandsliste
einwerfen, rows, row, und
wenn ich dann alle Zeilen sage, Bereich, das ist zum Beispiel
wählen, diesen Bereich, das ist zum Beispiel
wählen,
mal sehen, ich kann das löschen und wenn wir hier anhalten und dann
auf
Run klicken und wir acht hatten, siehst
du, wir wählen jede
Zeile aus wenn wir hier runter kommen. Wir haben also schon eine Schleife
, die jetzt hier durchkommt. Jetzt haben wir diese
Schleife, die eine Schleife
für jede Zeile
hier
ausführt , und wir
werden
einen Pfad erstellen , den wir zum
Öffnen der Excel-Datei benötigen, denn was wir tun
wollen ist diesen Pfad und öffnen Sie
eine Excel-Datei. Stimmt's? Wir können es zunächst sogar außerhalb
der Schleife machen,
nur um es Ihnen zu zeigen. Also werde ich
sagen, dim-Dateipfad, ein Stringsatz von Dateipfad ist
gleich, lassen Sie uns
genau diese Datei hier oben machen. Ich klicke versehentlich auf
den Hilfe-Button. Ich glaube, ich klicke auf OK. Ich habe versehentlich gedrückt
f eins ist was passiert ist, was mich zur
Hilfeseite im Browser sendet. Hier ist also unser Dateipfad für
die Excel-Datei mit Zitat zwei und wir werden so etwas wie eine
Dim-Arbeitsmappe als Arbeitsmappe
machen,
da es sich um eine Excel-Datei handelt. Wir können dieses
Arbeitsmappenobjekt verwenden und wir können sagen: Stellen Sie die Arbeitsmappe
gleich Arbeitsmappe ein, starten Sie den Öffnen und den Dateipfad. Dies wird also
die Excel-Arbeitsmappe
nach dem Dateipfad öffnen , in diesem Fall für Zitat zwei verwendet
wird um auf die acht zuzugreifen
und zu prüfen, ob dies funktioniert. Sie sehen also, um die Daten zu erhalten, müssen
wir die Datei öffnen. Also hier öffnen wir die Akte und
dann habe ich sie hier geschlossen. Wir können das tatsächlich ertragen. Wir werden
den Dateipfad öffnen, aber dann müssen wir
unseren Dateipfad hier konstruieren. Also wenn ich
diesen Schnitt tatsächlich mache und ihn hier
hineinlege, damit du hier sehen kannst, brauchen wir
das nicht mehr, aber wir werden jede Reihe
durchlaufen und es ist unsere L-Route hier. Aber was wir brauchen,
wenn wir
jede Zeile durchlaufen , ist,
anstatt zu zitieren, zu sagen. An diesen beiden Standorten. Es muss der
Wert der Zellen sein. Es geht also von 2 auf 3
zu 4 zu 5 und so weiter. Jetzt können wir
eine Variable hinzufügen ,
die sich ändert. Also werde ich sagen,
zitieren, Zahl als String. Und wenn
wir zum Beispiel die Angebotsnummer sagen, die hier vorerst schwer hinzuzufügen
ist, werden
wir Zitat sagen, eins, zwei, drei, vier, fünf. Und ich denke, es ist eine
sechsstellige Anführungsnummer. Jetzt kann ich
diese Variable verwenden, damit ich dieses Zitat
Nummer zwei hier
ersetzen kann . Und wir werden diese Saite
zusammen
kombinieren und dann
dasselbe hier drüben. Statt dessen werden wir die Zeichenfolge hier
zusammen
kombinieren. Wenn wir nun debuggen sagen,
drucken Sie den Dateipfad. Also werden wir
einfach den
Dateipfad überprüfen , bevor wir ihn öffnen. Ich trete auf „Play“. Also haben wir hier ein
Problem und Sicherheitsfehler. Ich hätte
das löschen sollen, weil ich es
nach unten verschoben habe und
es
hier keinen Dateipfad gibt , da ich
die
Dateipfaddeklaration hierher verschoben habe . Jetzt ist der Dateipfad leer und versucht, eine Arbeitsmappe leer zu öffnen. Jetzt springen wir vor acht und Sie sehen, als
wir den Dateipfad treffen, haben
wir genau das Gleiche. Dies ist unser
Dateipfad für Zitat zwei, aber er verwendet jetzt stattdessen eine
Variable. Wenn ich also die drei ändere, zitiere
ich die Nummer hier drüben, jetzt ist die
Anführungsnummer drei und dann wird
dieser Dateipfad
mit dieser Variablen erstellt. Und jetzt, wenn ich wieder auf
den Druck klicke, lass mich das klar machen, ich verschiebe das wieder nach oben
und zeige den Debug-Print an. Und Sie sehen, dass der Dateipfad
vier Anführungszeichen enthält, jetzt drei. Du fängst also an zu
sehen, wie wir das konstruieren und
dies
mit jeder Schleife ändern können . Was wir also wirklich
wollen, dass dies hier
drüben ist, ist keine
fest codierte Nummer, aber wir möchten, dass es unsere Reihe ist, was durch
jede Schleife, Iteration, unsere Reichweite gefahren wird. Und da es
nur eine Spalte gibt, geben
wir hier einfach eine ein. Das heißt also
die erste Spalte dieser Zeile und es gibt
nur eine Spalte. Es ist also schön und einfach und
es ist der Wert davon. Jetzt höre ich auf. Ich trete erneut auf Play und wir springen
einfach zu dieser Schleife,
damit wir sie durchgehen können. Sie sehen eine Angebotsnummer. Wir werden hier in
der ersten Reihe sein, obwohl sie
nicht ausgewählt wird. liegt daran, dass das Makro hier, der Vico, sich nicht die Mühe macht
, die Zelle auszuwählen. Es kann damit arbeiten, ohne die Zelle
auszuwählen. Es wird sagen, Zitat,
Nummer zwei hier drüben, es konstruiert einen Dateipfad. In der Tat werde ich vorerst
kommentieren , wenn ich diese Arbeitsmappe
öffne. Jetzt sehen Sie in der nächsten Schleife, zitieren Sie drei in der nächsten Schleife, es ist Zitat vier und so weiter. Und ich habe das
Öffnen der Arbeitsmappe kommentiert, aber jetzt, wo ich sie wieder einschalten werde, wird
es zwei
zitieren und dann die Arbeitsmappe
öffnen
und dann drei, die Arbeitsmappe erneut
öffnen. Und so wird das alle diese Zeilen
durchlaufen. Und jedes Mal wird diese Codezeile
ausgeführt, die den konstruierten Pfad
einnimmt
und die Arbeitsmappe öffnet. Also lasst uns weitermachen
und das ausprobieren. Wir werden verrückt
und machen sogar
diese Pause ab und klicken einfach auf Play und machen es. Es gibt einen. Und Sie sehen, dass alle
diese Arbeitsmappen
geöffnet werden , und jetzt haben wir eine Reihe von Arbeitsmappen, die vom Angebot
geöffnet sind, um
so auszusehen, als wäre sie nicht in Ordnung. Zitieren Sie zwei, drei, vier oder fünf
bis in neun. Und so
werden wir diese Schleife verwenden und alle
diese Arbeitsmappen
durchlaufen und
sehen, wie schnell es war, neun Arbeitsmappen zu öffnen. Hier
könnte die Automatisierung wirklich beginnen
. Und wenn Sie
Hunderte von Dateien
oder sogar Tausende haben ,
wenn auch mit Tausenden, möchten
Sie vielleicht von
Ihrem Computer weggehen und eine Tasse Kaffee oder ähnliches trinken. Es dauert mindestens ein
paar Minuten oder länger,
je nachdem, wie
viele Dateien Sie haben. Aber wir erstellen eine Schleife , die
alle diese Dateien öffnen wird. Dies ist also ein guter
Haltepunkt in der nächsten Lektion.
Wir werden
mit dem vorankommen, was wir tun können wenn wir all diese Dateien öffnen und diesen Automatisierungsprozess
haben, bei dem wir nur den
Code schreiben müssen in dieser Schleife, und dann wird
diese Schleife diesen Code durchlaufen. So lange diese Liste auch ist, in unserem Fall, sind hier
gleich Zahlen.
80. 3.A.3 Öffnen von Dateien und Daten abrufen: Jetzt, da
wir im letzten Video diese Schleife erstellt haben, in der
wir all
diese Anführungsnummern durchlaufen und jede Excel-Datei
öffnen. Wir wollen nicht
mit all diesen Excel-Dateien
gehen , die ich bereits
manuell geschlossen habe, aber wir wollen uns nicht mit dem manuellen Schließen
befassen müssen . Jetzt, wenn wir die Arbeitsmappe öffnen, können
wir die Arbeitsmappe schließen,
nachdem wir damit fertig sind. Und da wir dieses
Arbeitsmappenobjekt WB haben, kann
ich einfach WB DOC Flows sagen
und das wird die Arbeit schließen. Und dann
wollen wir es natürlich nicht einfach öffnen und schließen. Wir sind einfach nicht
zu dem echten Code gekommen, nämlich Informationen abrufen
und in einen platzieren. Das ist
also nur ein
Kommentar genau hier, aber wir werden
im Grunde Code hier platzieren, der es tut
, der den Informationen
aus jeder Datei. Und wenn wir dann
damit fertig sind , die Informationen
aus der Datei zu holen, schließen
wir die Datei,
bevor wir dazu kommen, Sie können einfach sehen, wie das funktioniert. Dass dies
die Arbeitsmappen öffnen und sofort
einschließen wird. Durchlaufen Sie diese Liste von
acht Arbeitsmappen hier drüben. Also lass uns Play drücken. Sie können sehen, dass es sich immer wieder öffnet,
schließt. Und wir
haben einfach keinen Code, um etwas zu tun, solange es geöffnet ist. Und genau das schreiben
wir als Nächstes. Und jetzt haben wir nicht mehr
all diese
Excel-Dateien geöffnet. Fangen wir mit dem Zitat
an, um es hier zu öffnen. Und lasst uns beide
hier öffnen. Und wir möchten Informationen
aus unserem Angebotspositionsprotokoll abrufen. Was wir also tun wollen, ist
unsere Geschichte des Zitats
zwei bis neun zu erhalten . Wir wollen diese Daten, die
wir von Canada 11 erhalten haben, und alle
Zitate in Zukunft erhalten. Aber wir werden unsere Geschichte
bevölkern. Und wir wollen diese Spalten nur
für diese Datentabelle
, da das alles ist, was wir brauchten. Es sieht so aus, als hätten wir mehr
Spalten in unseren tatsächlichen Zitaten, aber wir haben uns in
diesen vorherigen Videos entschieden, dass
wir nicht all diese Daten benötigen. Wir brauchen diese fünf hier drüben. Was ich also
mache, ist das zu kopieren. Ich füge
das hier ein. Verwandeln wir das in
eine echte Tabelle. Also markiere ich
diese und sogar eine leere Zeile
und drücke Control T, um sie
zu formatieren, da eine Tabelle besagt, dass meine
Tabelle Header hat weil es einfach
praktisch ist, damit
als Listenobjekt weiter zu arbeiten. Ich sage Tabelle und mache
dies zu einer Namentabelle namens Tabelle. Halte die Zeilen Theta, oder? Das sind also keine großartigen Namen. Ich überlege mir gerade was. Auch dies ist nur
ein einziger Anwendungsfall für uns die ganze Geschichte. Und das ist also nicht die
Art von Dingen, mit
denen die Leute jeden Tag
interagieren werden. Ich habe die Tabelle hier
Zeilendaten gezogen. Und das ist, wo wir das alles im Grunde nehmen werden. Und wir sind in diesem
Fall für Zitat zwei, wir schreiben, um
so auszusehen, als hätten wir
hier vier Zeilen und Einzelposten. Wir
werden das im Grunde tun, aber innerhalb unserer Schleife ,
so dass es automatisch
jede Datei
durchläuft und alle acht
automatisch erledigt. Ich werde diese Zeilen löschen weil wir sie nicht wirklich hier haben
wollen. Wir machen das
automatisch, aber ich habe es nur
als Demo gemacht , wie man es manuell macht. Und wir müssen
diese Informationen abrufen. Was ich denke, was
wir tun werden, ist
der einfachste Weg, dies zu tun,
da wir unsere Namentabellen haben,
darin, jede Zeile hier drin zu durchlaufen. Und während ich jede
Zeile in dieser Excel-Datei durchgehe, füge
ich hier eine
neue Zeile hinzu, verschiebe diese Daten hinein und gehe dann
zu meiner zweiten Zeile und füge dann eine zweite Zeile hinzu. Also werden wir es Zeile für Zeile machen diese Datei ansehen und jede Zeile
von rechts nach links
verschieben. Es gibt andere Möglichkeiten, dies zu tun, insbesondere wenn Sie keine Namentabellen
haben, wie wir hier
benannte Tabellen verwenden. Oft haben
die Daten diese benannten Tabellen
möglicherweise nicht und verwenden Listenobjekte. Vielleicht kommen wir am Ende dieser Lektion
darauf zurück . Aber die Art und Weise, wie ich das mit
benannten Tabellen und Listenobjekten eingerichtet habe benannten Tabellen und Listenobjekten wird es uns
viel einfacher machen. Und so werden
wir es hier machen,
denn es ist
am einfachsten, das verwenden, was wir bereits eingerichtet haben. Gehen wir jetzt zurück zu
unserem VBA-Code hier drüben. Und hier wollen wir,
dass unser CO2 diese Daten bewegt. Was wir hier haben ist eine Tabelle
hier auf der rechten Seite, und wir möchten
diese Daten abrufen und
sie hierher in die
Datei auf der linken Seite verschieben . Also bekommen sie diese
Daten. Schauen wir uns die Daten an, die wir für jede Zeile
verschieben müssen. Und lassen Sie uns einfach einen
Ort mit Variablen erstellen, wie wir es in der Vergangenheit getan haben. Sie brauchen diese nicht immer, aber es macht es klarer, zumal
wir hier lernen. Sie können also unsere
Angebotsnummer sagen, die wir bereits haben. Während wir nur Zitatnummer sagen, weil dies eigentlich nicht sagen
sollte, dass unsere vollständige Angebotsnummer
nur 2345
sagen wird , weil das
unsere Notation hier ist. Also müssen wir tatsächlich
die Nummer hier abnehmen. Also finde das raus. Und wir nennen das oft,
weil es
eine tatsächliche Zahl sein wird und nicht das Wort Zitat oder eines der
Zeichenfolgenzeichen darin enthalten ist, dann
brauchen wir eine Zeilennummer. Wir können das
als String-Item als String Item als String aufrufen. Willst du gestern. Genau wie
in den vergangenen Lektionen könnten
Sie diese in
Doppel- oder spezifischere
Variablentypen umwandeln . Aber für unseren Fall denke
ich, dass es einfach genug ist, ihm
vorerst eine Schnur zu machen bis wir einen
guten Grund finden, dies nicht zu tun. Und das macht
es einfach schön und einfach. Jetzt, da wir
unsere Excel-Datei hier auf
der anderen Seite
geöffnet
haben, müssen wir diese Tabelle
durchlaufen. Daher besteht der einfachste
Weg,
diese Tabelle zu durchlaufen , darin, ein Listenobjekt, eine
Objektvariable hier und
unseren VBA-Code zu
erstellen Objektvariable hier und , der
mit dieser Tabelle hier verknüpft werden soll. Auf diese Weise können wir die Reihen
durchlaufen. Machen wir noch einen Tisch. Nennen wir es Tisch. Ich nenne
es Quelle, weil dies die Quelle unserer
Informationen hier ist. Das ist also das Listenobjekt. Wir brauchen es, um
dieser Tisch hier drin zu sein. Es muss also
die Tabelle sein, die in unserer geöffneten Excel-Datei befindet. Wir können es
hier erklären, weil wir
noch nicht einmal eine geöffnete
Excel-Datei haben. Zumindest keine Open
Source Excel-Datei
, von der wir unsere Daten
beziehen. Wir öffnen diese Quelldatei hier
unten mit unserem
Arbeitsmappenobjekt. Wenn wir also
diese Tabelle hier haben wollen, brauchen
wir diese Arbeitsmappe,
die wir hier unten geöffnet haben. Und der Name unserer
Tabelle ist Tabellenzeilen. Wenn Sie also sagen, dass Quelle
gleich Arbeitsmappe ist, bedeutet dies insbesondere diese
richtige Excel-Datei, die wir
geöffnet haben, um dieses
Arbeitsblatt hier zu nennen. Wir können also Blätter
namentlich zitieren , weil
sie alle das gleiche Tag haben werden. Man könnte auch Blätter sagen, eines ohne Anführungszeichen, und das bedeutet das erste
Blatt der Excel-Datei. Einer von denen würde funktionieren. In diesem Fall müssten Sie es
an Ihre Situation anpassen. Und jetzt haben wir wieder eine Reihe
von Listenobjekten, was unsere Namentabelle ist, die Tabellenzeilen ist. Und das kommt aus dieser Namentabelle
hier für unsere Zeilen. Jetzt, da wir unseren Tisch haben, wollen
wir diese durchlaufen. Auch. Wir bewegen uns
durch diese Reihen. Wir müssen für jede Zeile
in Tabellen diese Liste angeben. Dies wird also jede Zeile
unserer Quelltabelle hier
durchlaufen . Aber eine Sache, mit der wir ein Problem
haben ist, dass L Rho bereits in dieser Schleife
verwendet wird. Also benutzen wir L rho, um jede Zeile hier zu
durchlaufen. Und während wir das tun, müssen
wir uns an
ein anderes Zeilenobjekt erinnern und wir können
dieselbe Zeile nicht zweimal verwenden. Warum fügen wir also nicht noch einmal eine andere
Variable hinzu, wir nennen sie L row. Source hat hier ein hier weil wir hier bereits
das L Rho-Objekt verwenden. Wir werden sagen, dass
wir für
jede echte Quelle jede
Zeile unserer Quelltabelle nennen werden. Wir bringen das hier zurück. Es wird es so aufteilen. Was wir jetzt brauchen, ist unsere Zeilennummer gleich und ich bin vorerst nur ein paar
Leerzeichen hier. Wir brauchen einen Artikel entspricht der Menge
dem Stückpreis. Und wir müssen
dies aus jeder Informationszeile
in
dieser Tabelle hier extrahieren . Unsere Zeilennummer
wird also unser L Rho sein, und insbesondere unsere Quelle denn das ist das
Durchlaufen dieser Tabelle hier drüben. Nicht zu verwechseln
mit unserer anderen Elvira, die wir für
unsere Angebotsnummern verwenden, diesen Bereich und dann ist
unsere Zeilennummer eins. Und ich werde das auf faule Weise tun,
in den vergangenen Lektionen werden Sie jedes Mal
sehen, wenn ich das mache,
ich komme zurück und füge
unseren Code hier um die Spalte herauszufinden, die durch den Spaltennamen
indiziert ist. Also wollen wir das Element herausfinden, aber stattdessen
sage ich nur Spalte zwei. Und unsere Menge ist in diesem Fall
Spalte vier, da dies nicht die Art von Dingen ist, die ständig
verwendet werden. Ich werde einfach faul sein und diese Zahlen hier
lassen. Sie sehen in den vergangenen Videos,
wie wir dies
so ändern können , dass es nach
Spaltennamen anstelle von Zahlen geht, was
konsistenter wäre, wenn Sie
Spalten hinzufügen und verschieben würden. Aber wir werden
einfach faul sein und
diese Kolumne für Kolumne
fünf hier machen . Eigentlich wollen
wir so weitermachen. Und jetzt, wo ich
diese Informationsreihe habe, habe ich
im Grunde diese Zeile. Ich muss es wieder
in diese Akte hier verschieben. Jetzt müssen wir
unseren Tisch hier rüber bringen , damit
wir ihm eine Zeile hinzufügen können. Und dafür haben wir auch kein
Listenobjekt. Kommen wir wieder her. Lassen Sie uns ein Tabellenziel erstellen weil Sie Ihre Quelle haben woher die Daten stammen, und dann Ihr Ziel,
an dem die Daten
angeben werden , dass sie auflisten. Aber es
muss auch außerhalb der Schleife , da dies jede Excel-Datei
durchläuft. Wir können sogar sagen, dass
Excel-Datei hier drüben und dann diese andere Schleife oder
etwas anderes. Dies gilt für jede Zeile von
Zeilendaten in Excel-Datei. Und so gibt es nur
einen Zieltisch. Wir müssen es
also nicht immer wieder
in diesen Schleifen deklarieren . Wir müssen es nur sofort machen, weshalb ich
den ganzen Weg hier oben in unseren, außerhalb unserer Schleifen bin. Und dann werden wir
das gleiche Problem haben , wo wir
eine bestimmte Listenroute wünschen ,
wenn wir ihm helfen können. Machen wir also eine Reihe
nur für diese Tabelle, denn wir arbeiten weiter
mit diesen Zeilen. Wir haben im Wesentlichen
drei Tabellen, mit denen wir gerade
arbeiten,
jeweils mit Zeilen. Also
nennen wir es L
Routenziel zu dieser Zeile. Dies ist nur eine Objektvariable wir verwenden werden, um
die Zeilen in diesem
Tabellen-Unterstrich-Ziel zu verwalten . Lassen Sie uns nun festlegen, dass diese
Tabelle gleich Blätter,
Tools, Listenobjekte
und was auch immer wir diese
Namentabelle nennen, hier drüben. Ich komme sogar hier rüber
und ich kopiere einfach Tisch
gezogene Linien Theta. Jetzt haben wir
dieses Tabellenobjekt, Tabellenziel, das für dieses hier
steht. Wir haben unsere Informationen
von unserer Quelle erhalten. Die Tabelle ist ein grüner Tisch auf der rechten Seite, ein relevanter Fall. Jetzt können wir
es unserem Ziel hinzufügen. Wir können also sagen, set L rho, Ziel gleich und dann Tabellenziel
keine Zeilen auflisten, Punkt hinzufügen. Im Grunde werden wir dieser
Tabelle hier
eine neue Zeile hinzufügen . Und dann rufen
wir die neue Zeile auf, die gerade hinzugefügt wurde. Ich schrieb Destination. Jetzt können wir sagen, L
rho destination
, dieser Bereich, Spalte
eins entspricht etwas. Wir belassen das einfach
als Platzhalter. Wir haben fünf
Spalten, 1234512345. Also 23, 45, und unsere Zeilennummer
geht in unsere zweite Spalte. Artikel enthält unsere dritte Menge und vierter Stückpreis als Fünfter. Und dann haben wir unsere
Angebotsnummer noch nicht
herausgefunden . Darauf kommen wir also zurück. Jetzt werden
wir jede
Zeile unserer Quelle durchlaufen , und dann
erstellen wir
hier links und
unser Ziel eine neue Zeile und verschieben dann die Daten
in die neue Zeile. Und dann machen wir
diesen Vorgang einfach weiter, bis uns die Zeilen
hier auf dieser Tabelle
ausgehen . Entschuldigung, wir haben, wir
gehen hier hin und her. Und wenn wir dann mit
dem Durchlaufen jeder Zeile fertig sind, schließen wir unsere Arbeitsmappe und dann machen wir alles wieder. Mal sehen, ob ich
das kleiner machen
kann und vielleicht sehen wir mehr als eine
Datei gleichzeitig. Und lasst uns weitermachen und
versuchen, dieses Ding zu betreiben. Und mal sehen, wie
es funktioniert. Tatsächlich treffe
ich F8, damit wir das alles
fortsetzen können. Es gab mir einen Fehler. Das liegt daran, dass ich hier nächstes L rho
sage, aber unsere Schleife
verwendet L-Zeilenquelle. Also müssen wir tatsächlich die
nächste L-Zeilenquelle hier drüben sagen. Ich schließe diese Akte. Also fangen wir
von Anfang an. Und jetzt treffe ich F8. Und mal sehen, ob wir die
Dinge richtig machen. Normalerweise bin ich nicht so glücklich
, dass ich uns keinen kleinen
Fehler gemacht habe oder zumindest den Tippfehler irgendwo. Nun, mal
sehen, wie es läuft. Und als wir hier ankamen, ist
dies eine Eigenart von VBA, wenn
Sie Code durchlaufen.
Manchmal, wenn Sie eine Schleife
durchlaufen, treffen
Sie eine Codezeile. Ich denke, es könnte diese
sein, bei Sie die Arbeitsmappe öffnen, in der
sie aufgehört hat, einzeln mit F8 durch die Zeilen zu treten, sie trifft eine
Codezeile und einige Codezeilen würden einfach alles
bekommen sich wieder bewegen und den
ganzen Weg durchlaufen, ohne Zeile für Zeile
anzuhalten. Und das ist es, was
gerade hier passiert ist. Etwas unerwartet sehen
Sie tatsächlich, dass all
diese Daten eingezogen werden. Diese Daten sehen
verrückt aus, weil sie
die Formatierung aus dem Header gezogen die Formatierung aus dem Header weil hier
keine Daten vorhanden waren. Wenn ich also einfach
hierher komme und all
diese Daten hervorhebe und Zellen normal mache, wird
es die
Standardformatierung
der Tabelle erneut verwenden , bevor
sie die Formatierung von der Zeile oben, was der Header
war. Und wir
haben tatsächlich all diese Daten, und ich
weiß nicht, ob es richtig ist, aber es sieht gut aus.
Es hat all diese Daten. Ich weiß nicht, ob das eigentlich aus allen neun Zitaten stammt oder nicht. Aber ich werde das
als Haltepunkt benutzen. Und für unsere nächste Lektion werden
wir uns damit befassen, diese ganze Sache zu polieren , und wir müssen
unsere Angebotsnummern von
hier aus nur in den Zahlenwert bereinigen,
damit wir
diese Angebotsnummer
auffüllen hier aus nur in den Zahlenwert können. Und dann können wir noch einmal prüfen
, ob diese Daten
korrekt sind oder nicht , und sehen, welche Zeilen welchem Angebot
entsprechen. Sobald wir diese
Spalte ausgefüllt haben.
81. 3.A.4 Tag-Format und -Test: also losgelassen haben, wo wir in unserem letzten Video
waren, hatten
wir unseren ersten Testlauf
unserer Funktion hier drüben gemacht. Und es hat all diese Daten abgerufen, aber wir haben
keine Anführungsnummern, daher haben wir keine Möglichkeit zu
wissen, ob wir
alle Daten aus diesen acht
Dateien korrekt erhalten haben oder nicht. Wir müssen
unsere Angebotsnummer nehmen, die wir
von hier erhalten, und nur die Nummer
selbst
analysieren , denn so möchten wir, dass unsere Daten in dieser Zeile
durchkommen. Die Übereinstimmung, wie wir
unsere Datentabelle
hier für unsere Geschichte hatten . Lass uns das machen. Ich hatte
diese variable Anführungsnummer bereits eingerichtet ,
nur um unsere Anführungsnummer
mit nur dem Wert
der Zahl anstelle
dieses vollständigen Namens, dem
Wort Zitat darin, zu sein mit nur dem Wert
der Zahl anstelle . Also lasst uns weitermachen
und das einrichten. Wir müssen es
in unserer Schleife machen, weil
wir hier jede Reihe
durchlaufen werden. Hier
haben wir also unsere Anführungsnummer mit dem Wort Anführungsminute. Eine Sache, die ich tun kann, ist nur die Angebotsnummer zu
sagen. Das ist lang Es
ist also nur die Zahl. Lasst uns das tatsächlich ändern. Lassen Sie uns das in eine Zeichenfolge ändern. Es gibt ein paar Möglichkeiten, wie
wir das tun können, aber ich mache das, damit
wir alle Schritte sehen können. Und da es sich um eine Zeichenfolge handelt, werden
wir hier
unsere Zitatnummer manipulieren, die hier drüben, und
reduzieren sie langsam durch
ein paar Schritte auf
die Zahl. Und da es sich um eine Zeichenfolge handelt, können
wir das tun und nicht all diese Fehler
bekommen, weil es keine Zahl ist. Auf diese Weise können wir unsere Angebotsnummer
hier
annehmen und eine BBA machen. Ersetzen. Die
Replace-Funktion nimmt diese Zeichenfolge, wir ersetzen
das Wort Zitat, und wir werden
das durch nichts ersetzen. Was das macht, ist im Grunde genommen eine solche Zeichenfolge zu
nehmen,
ich zeige sie hier auf. Es wird überall suchen. Wir haben das Wort Zitat und es wird
das durch etwas ersetzen. Aber in diesem Fall, da wir hier ein leeres
Anführungszeichen
haben, wird es es
durch nichts ersetzen. Hier unten
werden wir also
nur die Zahlenzeichenfolge auf der rechten Seite haben. Und es wird
alle führenden Nullen haben. Probieren wir das also aus. Ich werde F5 drücken, um zu laufen. Wir sind schon hier runtergesprungen. Ich habe F8 getroffen. Und wenn ich den Mauszeiger hierher fahre, kannst
du sehen, dass es
das Wort Zitat entfernt hat
und wir haben Nummer, nur es hat
alle seine führenden Nullen. Es ist also noch nicht genau das
, was wir wollen. Aber jetzt werden wir hier genau
dieselbe Zeichenfolge verwenden . Und ich werde nehmen,
was es derzeit ist, was die Nummer zwei mit
all diesen führenden Nullen ist. Mal sehen, ob ich es zum Auftauchen bringen kann. Ich kann es jetzt zeigen lassen. Es schwebt nicht wegen
einer Situation hier. Aber im Grunde nehme ich mich selbst, das
die führenden Nullen hat, und ich werde es
in eine lange Zeit umwandeln. Sie können also diesen Ausdruck
hier sehen,
wo, wenn ich C LNG eintippe, C vier konvertiert ist, denke
ich, dass er vielleicht nicht für Convert
steht, aber es ist eine gemeinsame
Notation in VBA. Und es wird alles, was in
den Klammern steht, in einen langen Wert
umwandeln . Dies wird Nullen
nehmen und in die tatsächliche Zahl umwandeln. Wenn ich also herkomme, führe
ich das nochmal durch. Du siehst, das sind die beiden
mit den führenden Nullen. Aber sobald ich das mache, es nur die beiden
selbst, weil es in eine Zahl umgewandelt wurde, die alle Nullen
entfernt. Es gibt eine gemeinsame
konvergente Sache. Wenn Sie
etwas in eine Zeichenfolge konvertieren, ist
es CFTR für C-String oder
C I und T für C Integer. Oder sehen Sie, wie EBL vier
in Double konvertieren. Diese Notation ist also üblich für Konvertierungen variabler
Typen. Jetzt haben wir die Nummer nur , wenn wir für jede Zeile
hier unten sind. Hier durchlaufen
wir jede Informationszeile,
während sie hinzugefügt werden. Aber wir müssen
die Angebotsnummer nicht ändern, denn wenn wir alle diese
Zeilen nicht angeführt haben, werden es zwei sein. Es wird
zwei bis 22 hier sagen. Sie sehen, dass dies aus Zitat
drei stammt , wahrscheinlich weil
unsere Zeilennummern hier wieder von vorne
beginnen, wo wir es leer gelassen haben. Wir können nur Nummer sagen. Und das wird die Angebotsnummer
finden , die wir
von hier oben erhalten. Also lasst uns damit aufhören.
Schalten wir das aus. Und dann
lösche ich all diese Zeilen weil das Gleichgewicht aus
unserem ersten Test besteht. Lassen Sie uns das nochmal ausführen
und sehen, wie es läuft. Es öffnet sich zu zitieren,
um drei zu zitieren. Du siehst, dass es hier auf der linken Seite irgendwie
Patches gibt. liegt daran, dass es so schnell
läuft, dass der Bildschirm nicht schnell genug
aktualisiert wird. Du siehst also alles auf magische Weise am Ende
auftaucht. Das ist nur der Bildschirm, der
nachholt wie schnell alles im Hintergrund
läuft. Du siehst zwei hier, drei hier, eine Menge von diesem Zeug gleich denn wenn du diese Videos
abspielst, habe ich die gleichen
Informationen dort hinterlassen. Testen wir das also,
um zu sehen, ob eine Umfrage zum Schreiben von Daten wir ein Angebotsformular hatten. Schauen wir uns hier drüben das Zitat zwei an. Und unsere Linien hier sind
der Nella-Vanillelöffel, 51015105101500 Stück. Wir haben unseren
Stückpreis von 1010101. Und du siehst, dass das funktioniert. Und dann lasst uns einfach einen
zufälligen ziehen, um zu sehen, schauen wir uns Zitat acht an. Also werden wir diese nicht abhecken und das Video aufnehmen. Aber wenn wir einen weiteren
zufälligen in der Mitte überprüfen, dann ist das hier eine
gute Geschichte. Oft werde ich tun,
wenn ich viele Daten habe, um zu überprüfen, ob wir
Hunderte von Dateien ziehen, zum Beispiel werden wir sie nicht alle
überprüfen, was den gesamten Punkt
verliert. Aber ich mache etwas
wie überprüfe die erste, die letzte Datei und dann jede
zufällige Datei in der Mitte. Und das ist eine gute
Möglichkeit, mit
drei Datenpunkten zu überprüfen , um sicherzustellen , dass die Dinge am Anfang, in
der Mitte und am Ende funktionieren . Jetzt sind wir unquote acht. Also nehmen wir diese
Informationen hier mit. Und wir haben Löffel und
Erdbeere hat 34. Wir haben Löffel und
Erdbeere hier, 5101055 Gallonen, zehn Gallonen, 100 Stück und fünf. Wir fühlen uns also ziemlich
gut, dass wir
hier
die richtigen Informationen erhalten haben , und hier haben wir unsere Geschichte
erfolgreich
automatisch
aus unseren früheren Dateien gezogen . Und wenn wir jetzt so
etwas machen wollen ,
komme ich hierher zurück, das
in unsere Geschichte eingefügt wird. Ich werde hier
ganz nach unten scrollen und die Umschalttaste
und den Abwärtspfeil benutzt haben, um mich von hier
ganz nach unten zu bringen. Ich sehe hier unten, dass
wir hier 32 Zellen haben. Und was ich tatsächlich
tun könnte, ist, dass ich
hier nur eine Menge Zeilen
einfüge, als ich brauche. Schnappen Sie sich diese Informationen hier. Ich mache eine Control
C-Kopie, kontrolliere V-Paste. Hier sind alle meine Informationen und dann
habe ich diese leeren Zeilen, die ich gerade viel mehr hinzugefügt habe, als
ich brauchte, und lösche sie. Und jetzt habe ich meine Historie in
unsere vollständige Datentabelle eingefügt. Und da wir diese Funktion
hinzugefügt haben, wenn wir an neuen Anführungszeichen arbeiten, sagen wir 1213,
werden die Informationen hier weiter hinzugefügt. Wir haben diese Informationen abgerufen. Sie können sehen,
dass wir
unsere Einheiten hier tatsächlich
in der Menge eingezogen unsere Einheiten hier tatsächlich
in der Menge , die ein inkonsistentes Format ist. Also können wir das ändern. Vielleicht schieße ich
eine Lektion darüber, aber ich denke, das ist
ziemlich einfach. Dies ist nur die Menge an
Details, mit der wir uns befassen müssen. Die Hauptidee
hier ist jedoch, dass wir sehen wie wir automatisch
einen Code schreiben können , der
viele Excel-Dateien öffnet und Daten abrufen
wird ,
um ihn ganz zu bringen. Dies funktioniert in unserem Fall für acht verschiedene Dateien
auf Knopfdruck. Und es würde
für 100 Dateien
in 1000 Dateien in mehr funktionieren . In bestimmten Fällen kann Ihnen dies enorm
viel Zeit
sparen.
82. 3.10 Zitat Werkzeug Löschen Form Button: jetzt zu unserem
Haupt-Angebotsformular zurückkehren, fügen
wir in dieser Lektion
eine wirklich einfache Funktion hinzu. Dies ist also nur eine Formalität , um dies benutzerfreundlicher zu gestalten. Was wir tun werden, ist eine schnelle Schaltfläche
zu
erstellen , um alle
unsere Felder hier zu löschen, da wir ein Angebot 11 erstellt haben
und vielleicht ein neues beginnen
möchten. Und wir könnten hierher kommen und all diese
Felder manuell löschen. Aber lassen Sie uns einfach einen Button
erstellen , um die Dinge einfach zu machen. Also die Felder, die wir löschen
möchten, oder alle diese weißen Felder hier
, die ich durchklicke. Und unsere Tabelle, unsere grauen Felder hier
basieren auf diesen Formeln. Und deshalb
möchten wir unsere Formeln nicht löschen, da sich unsere Formeln automatisch anpassen, wenn
wir unsere Auswahl ändern. Beginnen wir also damit, einen klaren Knopf zu
erstellen. Wir haben hier eine
Menge Knöpfe, also
stelle ich es vorerst hier auf. Wir werden später herausfinden
, wo es hinführt. Ich klicke auf „Abbrechen“, um
kein Makro zuzuweisen , da wir
noch keines haben. Und wir rufen diesen
Knopf auf alles löschen. Jetzt klicke ich
mit der rechten Maustaste hier und gehe zu unserem Code
hinter diesem Blatt. Und lasst uns
einen namens Clear erstellen. Hier ist eine Subroutine
namens Clear all. Ich werde einfach weitermachen und diesen Button hier
an dieses Makro
anhängen . Wenn wir also hierher kommen,
können wir ein Nachrichtenfeld schreiben, alles gelöscht oder
so angezeigt wird. Wir können eine bessere Botschaft haben, aber wir werden uns später damit befassen. Und wenn ich darauf klicke, heißt
es alles geklärt, was nicht stimmt, weil wir
noch nichts getan haben. Ich
schiebe das Zeug runter, dieses Nachrichtenfeld nach unten. Und hier oben legen
wir den Code , um alle Felder zu löschen. Wir erstellen unsere Hauptregisterkarte. Das wird also
ziemlich einfach sein. Wir werden hier nicht
viele neue Konzepte durchgehen. Um diese Funktion zu erhalten, möchten
wir unser Sortiment nutzen, das hier in unserem Blatt steht. Wir möchten sagen, dass die
Angebotsnummer des Bereichs angegeben wird, in diesem Fall ist dieser
Wert leer. Es gibt also ein paar
Dinge, die wir hier tun können. Wenn du dir einen Bereich ansiehst und
wir
zum Beispiel eine ganze Zahl bekommen , werde ich das nicht alles
durchgehen ,
aber es ist klar. Und dann gibt es klar, nur
das Wort klar Kommentare, ihr Inhalt, klare Formate. All diese machen also
verschiedene Dinge. Wir könnten diese
ausprobieren oder du könntest sie
ausprobieren und
sehen, was sie tun. Aber das einfachste,
was ich normalerweise
mache, ist, dass ein
Wert gleich leer ist. Denn wenn du
so etwas wie zum Beispiel machst, nur das Wort klar
und wir haben
diese Subroutine
hier einfach gegen den Bereich laufen lassen. Es könnte etwas tun das
ich mich nicht erinnern kann, aber es könnte
zum Beispiel die Grenzen räumen und die Zelle wirklich
mehr
verändern, als wir wollen. Was wir wirklich wollen, ist, dass der
Schreibtisch
hier so ausgeräumt ist und alle
Formatierungen gleich bleibt. Tatsächlich kann ich dir sogar zeigen,
lass uns weitermachen und es testen. Obwohl ich gesagt habe, dass
ich es nicht will. Hier unten ist das in
unserem unmittelbaren Fenster herum und wir geben klar ein und sehen, was passiert. Genau wie das, worüber
ich mir Sorgen gemacht habe, haben wir jetzt unsere Grenzen verloren. Und deshalb
mache ich stattdessen etwas wie Wert gleich leer,
es erinnert sich immer noch daran, dass
dieser Bereich die Anführungsnummer ist. Was ich also tun muss, ist
einfach unsere Grenze wieder hinzuzufügen, unseren Wert zu klären, und dann müssen wir es für
diese anderen Felder genau hier tun . Ich kopiere
das einfach und es sieht so aus hätten
wir drei weitere
Felder hier drüben. Wir können das einrücken. Hier drüben ist der Kundenname. Lassen Sie mich dies hier
aufteilen, damit wir beide sofort den Kundennamen
sehen können , wir haben unsere Artikelnummer und wir haben unsere
Menge hier drüben. Und jeder von diesen
wird nur den
Wert auf leer einstellen. Lass uns weitermachen und
das versuchen. Klicken Sie auf Löschen. Und du siehst hier drüben eine
Klärung. Und diese werden nicht gefunden
, weil wir unsere Formeln haben. Sie machen Lookups
basierend auf dem, was wir hier ausfüllen, was
natürlich leer ist. Aber wenn ich anfange, dies erneut mit zufälligen
Informationen
auszufüllen , beginnt unsere Formel zu funktionieren und sie ziehen die Daten ab, für die wir früher
im Unterricht entwickelt haben. Und dann
ist das Letzte, was
wir hier tun müssen , unseren Tisch zu klären. Eine Sache, die ich vergessen habe zu erwähnen ist, dass ich hier nicht explizit unsere Laken
ausgerufen
habe. Also könnte ich sagen,
die Hauptblätter hier, diesen Bereich, um uns gezielt
mitzuteilen, dass dieser Bereich hier auf
dieser Hauptregisterkarte befindet. Aber das müssen wir nicht,
weil ich meinen Code hinter dieses Blatt lege. Es ist also nicht in einem
der Module hier unten. Stattdessen ist es hinter einem Laken. Und so weiß dieses Ding von
Natur aus, dass wenn ich arrangiere anrufe, ohne ihm
mitzuteilen, in welchem Blatt
es ist , weiß , dass der Code zuerst zurückliegt. Deshalb
kann ich
den expliziten Anruf auslassen und mir
keine Sorgen machen, dass
etwas schief gehen wird. Da ich weiß, dass
dieses Ding
standardmäßig weiß und ein
gutes Blatt wird , über das wir sprechen, wenn
ich diesen Bereich verwende, ist
eine Tabelle hier unten ein Listenobjekt. Wenn ich also wieder zu
Table Design komme, werde mich daran erinnern, dass das TBL-Linien
genannt wird. So
kann ich zum Beispiel hier unser Blatt aufrufen, Hauptblätter sagen, und dann werden wir
diese Listenobjekte sagen. Sie werden sich aus unseren früheren
Lektionen in den Tabellenzeilen erinnern. Und aus unseren früheren Lektionen erinnern
Sie sich vielleicht daran, weil wir es so
nennen. Ich erhalte diese Optionen zum
automatischen Ausfüllen nicht, sogenannte
Intellisense-Optionen, die mir sagen, welche
Funktionen ich hier habe. Ich weiß zufällig, dass dies ein Datenkörperbereich über die Elite ist. Und als ich aus einer Zeile gesprungen bin, können
Sie sehen, dass es automatisch formatiert hat, was ich hier getippt habe. Es kann Großschreibungen und die richtigen Stellen
das Wort löschen groß schreiben. Und das sagt mir, dass ich etwas Richtiges
tippe, dass wenn ich ihm
diese Anweisungen gebe, es weiß, was sie sind. Aber es gab mir
keine AutoFill-Option. Und das liegt daran,
wie ich uns rausrufe. Ich verwende keine
Objektvariable. In der Zwischenzeit können wir das Gleiche
tun. Könnte das klären. Ich kann sagen, Tabellenstart als Listenobjekt, ich kann sagen, dass Tabellenzeile gleich ist. Und dies ist unser Hinweis
auf diese Tabelle hier unten. Und jetzt, wo ich
Tabellenzeilen als Listenobjekt habe, als Objektvariable hier. Jetzt wird unser Code wissen, welche Eigenschaften und Subroutinen
wir für dieses Objekt
für dieses Listenobjekt haben, für dieses Listenobjekt haben, und dann haben wir einen
Theta-Körperbereich über delete. Und das wusste ich einfach, weil ich es mir hier unten auswendig gelernt
hatte. Dieser Code und dieser Code
bedeuten also genau das Gleiche, obwohl Sie möglicherweise
weggeworfen werden , wenn Sie diese Notation verwenden, er füllt sich nicht automatisch aus oder gibt Ihnen keine automatischen
Vorschläge. Ich mach einfach weiter
und kläre das aus. Seit ich das bereits geschrieben habe, ist
dies die klarere
Notation, denke ich. Also werden wir
unseren Datenkörperbereich,
der den gesamten Inhalt hier
unten ist, nehmen und ihn löschen. Also lasst uns weitermachen und das machen. Alles klar. Jetzt können wir unser zwölftes Zitat vorlegen, werden hier einige Auswahlen treffen. Wir fügen den Artikel hinzu, aber aus irgendeinem Grund
haben wir den Tiefpunkt außerhalb des
Bereichs. Also lasst uns den Bug treffen. Ich muss schon mal was kaputt gemacht haben. Mal sehen, worum es geht. Okay, das hat also nichts mit
unserer Funktion zu tun , die wir gerade
erstellt haben, um das Formular zu löschen. Aber ich verstehe, was hier los ist. Ich werde
dieses Video tatsächlich beenden und dann werden wir das als
generische Fehlerbehebung aufgreifen ,
wenn wir
ins nächste Video gehen , und
ich werde das durchsprechen.
83. 3.10.2 Quote Null Zeilen Debug: Am Ende unseres letzten Videos
habe ich versucht, einen Einzelposten hinzuzufügen und wir stoßen hier auf
diesen Fehler. Und es heißt „Tiefpunkt“
außerhalb der Reichweite. Und hier ist die Zeile, auf die
wir einen Fehler treffen. Ich glaube ich weiß
was hier los ist und lass mich
durchgehen was passiert ist. Wir haben diese Subroutine
hier, die
einen Einzelposten hinzufügt , und wir haben
ein Problem mit dieser Zeile, die neueste Zeilennummer handelt. Wenn Sie zu den
letzten Videos zurückkehren, in denen wir diese Funktion
erstellt und diese Codezeilen
hinzugefügt haben. Dies alles hängt damit zusammen, unsere nächste Zeilennummer zu
finden. Wir möchten also das Neueste finden
, damit wir eine für unsere nächste Nummer hinzufügen können. Das bedeutet im Grunde, dass wir in
diesem Fall
unsere neueste Nummer finden , die eine ist. Und dann wollen wir herausfinden,
während wir eine Zeile hinzufügen, wie unsere nächste Nummer lautet. Wenn wir also eine
Zeile hinzufügen, wollen wir herausfinden, dass unser neuestes eine war, unsere nächste Zahl ist zwei. Und dann füge hier
unseren neuen Artikel hinzu. Wenn wir es dann noch einmal machen, haben
wir drei. Wenn ich das ausführe
und auf „Element hinzufügen“ klicke, gibt es drei, weil wir
unsere neueste Zeilennummer finden , die zwei
war, und dann inkrementieren. Was wir
seitdem nie getestet haben, ist jetzt, dass wir diesen Clear Button
erstellen. Und alles ist geklärt,
wir fügen einen Einzelposten hinzu. Und während es
versucht herauszufinden, was die neueste Zeilennummer ist, scheitert
sie, weil es
keine gibt , weil es überhaupt
keine Zeilen gibt. Dies ist etwas, das ich vorher
erwähnt habe. Ich vergesse, ob ich es
tatsächlich gezeigt habe, aber wenn ich Table
Zeilen hier drüben nehme , lass
mich zum Beispiel hierher treten. Sie haben auch hier eine
Typ-Nichtübereinstimmung. Oh, das liegt daran, dass
all das Zeug leer ist. Lassen Sie mich das also ganz schnell
ausfüllen. Wir haben einige Dinge, die
wir
hier reparieren müssen , die dies
benutzerfreundlicher machen. Wir wollen
all diese Fehler erkennen. Also fangen
wir an, das aufzuräumen. Wenn ich diesen Code durchgehe, gehe
ich
hier durch, nur damit ich
dieses Tabellenzeilenobjekt hier bekommen kann . Jetzt, da wir
unseren Code
auf halbem Weg durchlaufen und
unser Tabellenzeilenobjekt deklariert haben. Wir können
hier unten in diesem Fenster sofort Code eingeben . Zum Beispiel wähle ich nach
Typ Tabellenzeilen, Bereichspunktauswahl meine Tabelle aus. Eine Sache, die hier
wirklich irreführend sein kann, ist diese Tabelle aussieht, als hätte
sie eine leere Zeile. Das gilt jedoch nur für
Auftritte. Denn wenn ich
hierher komme und Kabelleitungen tippe, eine Liste von Zeilen, die zählen. Und eigentlich kann ich das nicht einfach ausführen , weil
dies eine Nummer zurückgeben
wird. Ich muss das in einem Debug-Print
ausdrucken. Wenn ich das also ausführe, um
herauszufinden , wie viele
Zeilen in meiner Tabelle enthalten sind, sehen
Sie, dass die Antwort 0 lautet, obwohl es so
aussieht, als gäbe es hier
eine Zeile,
obwohl sie leer ist. Das kann wirklich
irreführend sein, denn wenn ich hierher komme
und die Leertaste drücke, also habe ich etwas hier, kann
ich das wieder ausführen. Und du siehst, wir haben jetzt eine Reihe. Das liegt daran, dass es
leer aussieht , bis wir hier
etwas Inhalt hinzufügen. Und obwohl
es hier Leerzeichen gibt, ist
dies offiziell eine
Informationsreihe. Ein Leerzeichen hier ist also das gleiche, als ob ich hier tatsächlich etwas
eingeben würde. Und jetzt merkt es, dass
es eine Reihe gibt. Wenn ich mit der rechten Maustaste klicke
und die Zeile lösche, sehen
Sie, dass der Inhalt verschwunden ist, aber er
behält immer noch die Grenzen bei. Und das liegt nur daran, dass ich
denke, dass es komisch aussehen würde. Wenn es hier keine
Grenzen gäbe. Es würde nicht
mehr wie ein Tisch aussehen , nur mit den Überschriften. Das ist also definitiv
etwas, das bei Listenobjekten und benannten
Tabellen in unserem Excel-Blatt zu beachten Listenobjekten und benannten ist dass es hier
tatsächlich 0 Zeilen gibt, ,
dass es hier
tatsächlich 0 Zeilen gibt,
die mit
einer Zeile leerer Informationen identisch aussehen können. Warum habe ich das jetzt durchgegangen? liegt daran, dass wir
unsere neueste Zeilennummer finden, indem wir den Inhalt
in unserer untersten Zeile herausfinden Wir stoßen auf einen Fehler, denn als dieser Befehl hier drüben sucht
er nach Ihrer
untersten Zeile der tabelle. Es gibt keine Reihe, also existiert dieses Ding einfach
nicht. Das ist normalerweise das, was Tiefpunkt
außerhalb des Bereichs bedeutet. Es bedeutet, dass das Ding, nach dem Sie
suchen, nicht existiert. Es ist, als ob du fünf Dinge in
deiner Hand
hast und dich dann
jemand gefragt hat, wie heißt das
siebte Ding, das du hältst. Es heißt, Hey, wir sind
außer Reichweite. Wir haben keine siebte Sache, wir haben nur fünf Dinge. Das ist es also, was hier
vor sich geht, wenn wir der letzten Reihe
suchen,
es sagt uns, dass
es keine letzte Reihe gibt. Es gibt im Allgemeinen keine Zeilen. Wie wir damit umgehen können, ist hier eine if-Aussage zu
setzen und sagen, ob Tabellenzeilen,
die Listener haben, genau wie wir es in unserem unmittelbaren Fenster
während unserer Demo hier haben, sagen
wir Punktzählung, es war 0. Dann werden wir was tun. Ansonsten werden wir tun,
was wir vorher gemacht haben. Und deshalb werden
wir im Grunde sagen, ob es 0 Zeilen gibt, dann ist unsere letzte
Zeilennummer gleich 0. Ansonsten, wenn es
hier eine Zeile gibt , die wie
eine sagt, dann wird sie
unser typisches Ding laufen. Unsere neueste Linie ist eins, unsere nächste Zeile ist zwei. Aber wenn ich hierher komme
und diese Zeile
lösche, ziehen wir das einfach
wieder hierher. Nun, wenn es keine Zeilen gibt, weil ich gerade das einzige gelöscht habe,
anstatt dass es hier war, dann ist die letzte
Zeilennummer tatsächlich 0. Und wenn wir dann eins hinzufügen, ist unsere neue Zeilennummer eins. Und dann fügen wir hier neue
Zeileninformationen hinzu. Denn das war nur etwas, das
wir übersehen
haben, weil wir noch nie den
gesamten Tisch geklärt hatten. Unsere Logik, die nach
der nächsten Zeilennummer suchte ,
funktionierte einwandfrei. Aber wenn wir unsere
nukleare All-Funktion nutzen und
von vorne anfangen, stoßen
wir jetzt auf dieses Problem, das wir jetzt behoben haben.
84. 3.10.3 Angebotstool Line hinzufügen: Bevor ich es vergesse, gehen wir zu unserem nächsten Problem, auf das
wir früher gestoßen sind
, nämlich
dass dies leer war und ich glaube, ich
habe auf Element hinzufügen geklickt. Und jetzt haben wir hier eine
Typ-Nichtübereinstimmung. Hier führen wir unsere
Subroutine aus, um eine Zeile hinzuzufügen. Und es heißt, dass
wir
hier eine Typ-Nichtübereinstimmung für unseren Einzelpreis haben. Und das liegt daran, dass wir,
wenn wir hier zu
unserem Artikelstückpreis gehen , den
wir nicht gefunden haben. Hier ist unser Stückpreis hier
auf der linken Seite, der besagt
, dass nicht gefunden weil wir
keine Informationen eingegeben haben. Mittlerweile
ist unser Stückpreis hier eine Variable, das ist ein Doppeltes. Dies zeigt indirekt
ein Problem an, das nicht
die Hauptursache ist. Das Problem, das VBA
hier markiert , ist, dass der Stückpreis doppelt sein
soll, aber wir versuchen,
den nicht gefundenen Wert einzufügen. Das ist also ein Problem, aber das ist nicht die eigentliche
Wurzel unseres Problems. Die eigentliche Wurzel unseres
Problems
ist natürlich, dass wir keine
Informationen über die Leitung haben. Und was wir versuchen,
diese Zeile hier unten in
den Tisch zu bringen, ergibt keinen Sinn. Wir wollen das wahrscheinlich nicht benutzen oder überhaupt können. Was wir also zuerst tun sollten, fügen Sie hier oben eine Validierung bevor wir beginnen
, diesen Code überhaupt
auszuführen , der versucht,
diese Werte zu erhalten und in unser Raster hier zu schieben. Was ich normalerweise mache, ist etwas wie
Code zur Validierung hier oben zu erstellen, wir sagen die erwähnte
Fehlermeldung, String. Und ich habe dir
dieses Konzept schon einmal gezeigt, das gleiche Muster, das ich
zum Markieren von Fehlermeldungen verwende. Also machen wir es hier wieder. Und wir werden sagen, wenn unser
Artikelfeld hier drüben, was unsere Bereichsartikelnummer ist, können
wir sagen, dass Keats
Haupt-ir-Punktbereichs-Artikelnummer, Punktwert gleich leer ist. Dann werden wir unsere Fehlermeldung
aussprechen. Wir werden etwas
an unsere Fehlermeldung anhängen. Fehlermeldung entspricht dem Element. Hier drüben. Darunter können wir beispielsweise sagen, um unsere
Validierung zu beenden,
und dann können wir hier eine
kleine Pause hinzufügen,
nur einen Kommentar, um unseren Code
aufzulösen, der
besagt, dass die Validierung
gelöscht wurde, Artikel hatte. Und dann
müssen wir hier oben
unsere Validierungslogik schließen ,
die im Grunde besagt,
dass in unserer Fehlermeldung etwas enthalten ist,
was bedeutet, dass es
in unserer Fehlermeldung nicht leer ist. Dann möchten wir
den Prozess beenden und wir werden
erkannte Probleme eingeben. Wir werden hier
eine neue Linie erstellen. Und dann zeigen wir den Benutzer- oder
die Fehlermeldung an. Dann
erstelle ich sogar zwei neue Zeilenumbrüche. Du wirst in einer Sekunde sehen, wie das
aussieht. Und fügen Sie hinzu, kann keine
Zeile als neuen Kommentar hinzufügen. Also lasst uns damit aufhören und
das noch einmal ausführen . Ich treffe F8. So können Sie
der Logik hier folgen, da die Artikelnummer leer ist. Hier auf der linken Seite fügt
es ein Element hinzu, der zu
unserer Fehlermeldungszeichenfolge leer ist. Und dann hier drüben für
unsere letzte Überprüfung, heißt es, wenn die Fehlermeldung nicht leer ist, bedeutet
das, dass wir hier oben
einen Fehler gefunden haben. Es besagt, dass die erkannten Probleme leer
sind und keine Zeile hinzufügen können. Jetzt können wir den gleichen
exakten Code hier drüben nehmen. Und anstelle der Artikelnummer kann
sich die
Artikelmenge ändern. Diese Menge ändert dies
in die Artikelmenge ist leer. Ich zeige dir
etwas, das ich hier vermisse. Was Sie sehen werden, wir
hängen unseren Artikel an, ist leer. Wir hängen an, dass unsere
Artikelmenge leer ist. Wir haben also zwei verschiedene Probleme mit
Aufzählungszeichen hier. Und das sehen wir. Und was ich vergessen habe, ist
einen Zeilenumbruch zwischen diesen zu legen . Und so siehst du, dass die Botschaft
nicht so gut aussieht. Also werde ich hier einen neuen
VB-Line-Feed platzieren. Und ich mache das
Gleiche nach jeder Kugel. Es wird automatisch eine neue Linie
haben. Und wenn ich das noch einmal mache,
fügen wir die erste Kugel hinzu,
die zweite Kugel. Und wir haben den Artikel leer, Artikelmenge ist leer,
kann keine Zeile hinzugefügt werden. Dann haben wir dieses Ende erreicht, was das gesamte Makro stoppt. Und wir stoßen nicht
auf Probleme, bei denen es versucht, mit diesen Daten zu
arbeiten, die
zunächst ungültig sind . Also können wir weitermachen und das versuchen. Und jetzt fügen wir die
Zeile hinzu und wir
erfüllen keine dieser If-Aussagen
, die wir hier hinzugefügt haben. Wir haben also keine
Fehlermeldungen zu
zeigen, und wir können unseren Prozess
fortsetzen. Es ist also unser Basic für
zwei verschiedene Probleme hier behoben. Ich bin sicher, dass wir mehr
finden werden, während wir gehen, und wir werden sie flicken, wenn
wir auf sie stoßen.
85. 4.1.1 UserForm Suchwerkzeug - Intro: Hallo. Aus einem der
Kommentare, in denen gefragt wurde, geht hervor, ob ich eine Demo machen könnte, in der
ein Popup-Benutzerformular angezeigt wird
, mit
dem Daten
in der Tabelle durchsucht werden können . Das werde ich gleich
hier durcharbeiten. Wie immer fange
ich, wie bei meinen anderen Videos, bei
Null an und führe dich einfach
durch alles. Es wird mit
einer sehr groben Skizze beginnen, zuerst, und dann werden wir sie durch
die verschiedenen Videos
aufpolieren. Dies ist ein Konzept, das
ich ständig verwende und das viele verschiedene Variationen
und Implementierungen hat. Also lasst uns anfangen. Wir werden im Laufe der
Videos einiges davon besprechen. Beginnen wir also mit
Beispieldaten, die wir hier haben können. Also vielleicht sage ich einfach so
etwas wie Benutzer, ich mache hier Control
T, um eine Tabelle zu machen. Meine Tabelle hat Überschriften. Standardmäßig hat es hier
nur einen Tabellennamen. Wir nennen diese
Tabelle einfach Benutzer, sagen wir mal. Und das könnte ein beliebiger Datensatz sein. Wir erstellen nur eine Namenstabelle weil Sie in unseren anderen
Videos sehen, wie ich diese benannten Tabellen
oft für die Vorteile verwende , die
ich zuvor gezeigt habe. Also sage ich
einfach Person eins. Und wir ziehen das einfach runter. Lass uns einfach ein
paar Leute haben. Es gibt also eine große Liste. Was üblich wäre, ist, dass
Sie
hier Tonnen von Daten haben , die Sie sogar noch vergrößern könnten. Sie können sich vorstellen
,
dass dies Hunderte von Namen sind, bei denen es schwierig wäre,
herumzublättern und zu suchen. Vielleicht möchten
wir deshalb
ein Popup-Formular erstellen , um das Durchsuchen
großer Datenmengen
zu vereinfachen. Von hier aus haben
wir nichts,
wir haben nur das Blatt. Wir möchten ein Popup-Formular
erstellen, das als Benutzerformular bezeichnet wird. Also, wenn ich hier
zum Entwickler komme und hier
zu Code anzeigen gehe. Jetzt haben wir nichts mehr. Was wir machen können, ist, wenn Sie
mit der rechten Maustaste auf eine beliebige Stelle in diesem Projekt-Explorer klicken, können
Sie zu Benutzerformular einfügen gehen. Und wir haben hier das erste Benutzerformular. Das ist also nur das
Formular im Hintergrund. Ich kann mich nicht erinnern, ob ich das schon in einem
meiner anderen Videos
verwendet habe . Das könnte also eine
Einführung sein. Fangen wir damit an. Wenn Sie hier klicken und zu
den Eigenschaften gelangen, können
Sie sehen, dass der
Name Benutzerformular eins ist. Wir könnten den Namen ändern, aber ich lasse
es vorerst so. Sie haben Ihre
Bildunterschrift hier, Benutzerformular oben. Wir nennen das Suche. Wir nennen es einfach Suche. Und wenn du dieses Wort
hier oben siehst, ändere die Suche. Es heißt User Form One. Lass uns das auftauchen lassen. Jetzt, wo wir nur
dieses Benutzerformular hier haben, weiß
ich, dass es noch nichts enthält. Also, wenn wir hierher zurückkommen, lassen wir es
mit einem Knopf erscheinen. Also fügen wir eine Schaltfläche ein. Es gibt kein Makro, also klicken wir hier
einfach auf Abbrechen. Ich komme zurück zu unserem
Makroformular und wir möchten ein Modul
für unseren VBA-Code erstellen. Fügen wir also ein Modul ein. Wir sagen, wir sagen gestartet. Da wir dieses Suchformular haben, können
Sie sehen, ob ich einfach tippe, verwende und die Kontrolltaste drücke, um zu sehen was die IDE hier empfiehlt.
Sie können sehen, dass dort das Benutzerformular
eins steht, das genau hier existiert. Wenn ich dann Punkt drücke, kannst
du Show sagen. Und jetzt hängen wir diese Schaltfläche an dieses Makro
an und
starten das Suchformular. Wenn ich darauf klicke,
zeigen wir unser Suchformular. Das ist also die
Grundidee eines Benutzerformulars
, dieses Popup-Formulars , das wir für
verschiedene Funktionen verwenden können. Wir erstellen diese sehr einfache Schaltfläche , damit sie genau dort
angezeigt wird. Gehen wir also zurück zu
unserem Suchformular. Wenn wir ein Suchformular ausfüllen, beginnen wir mit dem, womit ich normalerweise
beginne und was Sie vielleicht
gewohnt sind, oben, wir haben ein Textfeld. Es gibt also diese Toolbox
, in der Sie
diese Elemente in das Benutzerformular einfügen können. Dies ist ein Textfeld, in das
Sie tippen könnten. Ich werde hier
etwas größer werden. Wir werden das später reparieren. Ich werde hier nur
ein paar Sachen anziehen ,
um das Konzept zu zeigen. Und das nächste, was
ich benutzen werde, ist dieses Listenfeld hier drüben. Und was das zeigt, ist eine Liste von Zeilen, aus denen
Sie auswählen können. Das ist also wie ein Textfeld , mit dem Sie vielleicht vertraut sind. Das wird nicht so toll aussehen,
aber wir lassen es einfach hier. Und so haben wir ein
Textfeld und ein Listenfeld. Komm her und klicke auf
die Schaltfläche und du siehst, wir haben hier ein Pop-up. Wir können hier tippen. Wir haben ein Listenfeld, aber
das bringt noch nichts. Das erste, was
Sie sich vorstellen können, ist , dass wir auf
diese Schaltfläche klicken
möchten und hier eine Liste aller unserer Benutzer haben möchten. Und wir können die Benutzer
aus dieser Datentabelle
hier nehmen , wo wir
etwa 100 Namen haben, egal wie
viele, was auch immer
Ihr Datensatz wirklich ist. Wie können wir
diese Informationen in dieses Listenfeld eintragen, das gerade nichts
tut. Wenn Sie also ein Benutzerformular haben, steckt hinter einem Benutzerformular Code. Wenn Sie also mit der rechten Maustaste klicken und verwenden
sagen, lassen Sie mich zurückgehen. Wenn Sie also mit der rechten Maustaste klicken
und zu Code anzeigen gehen, ist
dies der Code
hinter dem Formular, der normalerweise aufgerufen wird. Sie können auch hier mit
der rechten Maustaste
auf das Formular klicken und hier zu Code anzeigen wechseln. Und das heißt Benutzerformular-Clip. Es gibt einige Dinge, die
eigentlich wie eine Standard-Subroutine sind, sie werden Namen
haben, die VB
I einfach
als Ereignisse erkennt , die passieren
können, wenn Sie
Dinge mit dem Formular machen. Und das ist also,
das ist schon da, Benutzerformular klicken. Also wenn ich Message
Box high sage, dann sollte das laufen,
wenn dort Benutzerformular,
Klick steht , das heißt das Benutzerformular. Und wenn es dann
angeklickt wird, ist es da
irgendwie selbsterklärend. Lass es uns ausprobieren. Wenn ich auf die Schaltfläche dazu klicke, erscheint
es und dann klickst du auf das
Formular und es steht hoch. Wir kommen zurück. Wir kehren
zu unserem Code zurück, klicken mit der rechten Maustaste und sehen uns den
Code für das Formular an. Also wir haben das,
wir
brauchen diese Subroutine hier eigentlich nicht . Sie werden sehen,
dass Benutzerforen eine etwas ältere Technologie und einige Macken haben. Das taucht einfach hier auf. Vielleicht möchte ich es nicht benutzen. Vielleicht
möchte ich nicht herumreden, nur wenn du
irgendwo im Formular klickst, was ich normalerweise nicht mache. Also
lasse ich das vorerst hier. Ich könnte es später löschen
, um die Dinge aufzuräumen. Das, was ich verwenden möchte, ist, dass Sie
dieses Benutzerformularobjekt sehen , genau
wie wir das Benutzerformular haben. Klick. Wenn Sie
dies als Benutzerformular belassen. Und dann sind hier die Aktionen. Wenn Sie beispielsweise
Klicken oder Doppelklicken auswählen, wird
diese Subroutine erstellt als ob Sie auf
das Benutzerformular doppelklicken würden. Und es hat diese Art von
Standardkram dabei. will ich nicht. Was ich will,
ist das Benutzerformular hier auf der linken Seite und die
Initialisierung hier auf der rechten Seite. Dadurch wird
es jedes Mal ausgeführt
, wenn das
Benutzerformular initialisiert wird. Also, wenn ich hier
klicke und auf diese Schaltfläche klicke, siehst
du, bevor sie überhaupt
initialisiert wird, es erscheint das. Da ist also unsere Box und die kleinen Subroutinen
, die wir vorher hatten. Lassen Sie mich zu
unserem Code-Editor zurückkehren. Jedes Mal, wenn Sie
zum Code-Editor zurückkehren, wird wieder das Formular angezeigt. Das ist also ein kleiner
Korkriss , dass man immer
zum Code zurückkehren
muss , Benutzerformular initialisieren. Es führt diesen Code hier aus. Hier können wir Sachen unterbringen. Das passiert genau dann, wenn
das Benutzerformular erscheint. Und hier
werden wir beginnen, indem die Informationen aus
dieser Benutzertabelle abrufen. Wenn wir
z. B. zu einem Benutzerformular zurückkehren oder Sie können hier klicken. Und Sie sehen, das
heißt Textfeld eins. Wir können sie umbenennen, aber ich werde mich jetzt
nicht darum kümmern. Dies wird Listbox One genannt. Also können wir das benutzen. Kommen wir zurück
zum Code hier. Und wenn ich anfange,
ein Listenfeld einzugeben und die Strg-Leertaste drücke, steht dort das erste Listenfeld. Das hat Eigenschaften wie Artikel
hinzufügen“ ist das, was
wir verwenden werden. Also wenn ich nur Artikel hinzufügen sage und ich hier Artikel
sage, z.B.
in Angeboten. Gehen wir jetzt zurück. Dieser Code wird ausgeführt, wenn
wir dieses Formular in
unserem ersten Element initialisieren .
Hier ist das Element hier. Also werden wir noch einmal
auf diesen Code zurückkommen. Es wird hier immer wieder zurückgesetzt und
Sie können es mehr als einmal tun. Das ist also das Konzept hier , bei dem wir Artikel hinzufügen werden. Und jetzt haben wir zwei Artikel. Beachten Sie, dass der Artikel nicht erneut hinzugefügt wird
. Jedes Mal, wenn ich die
Schachtel schließe, fängt sie von vorne an. Also schließe ich es und
sie sind alle weg. Und dann führt es diese beiden Codezeilen aus und es wird
Punkt hier und Punkt zwei sagen . Und es heißt nicht
jedes Mal
hier und dann 21.2 , denn
jedes Mal, wenn ich
dieses Formular schließe und dann darauf klicke, wird
jedes Mal, wenn es erscheint, ein brandneues Formular gestartet . Jetzt haben wir diesen
Tisch hier drüben. Ich habe sie in die Tabelle Users umbenannt. Und wir werden ein Konzept
verwenden, das wir in unseren anderen Videos gemacht
haben. Lassen Sie uns diese
Tabelle also als Listenobjekt dimensionieren. Erstellen Sie ein Listenobjekt. Und wir
werden im Grunde
diese Benutzertabelle nehmen und alle Zeilen
durchgehen. Also all diese 123 Personen
, die ich da reingeschickt habe. Jetzt decken wir den Tisch
als den Tisch da drüben. Also settable equals, nehmen wir an, sie ist
eins der Listenobjekte. Wir nehmen den
Tabellennamen, den wir hier haben. Sie klicken hier,
es sind Tabellenbenutzer. Wenn Sie es einfach kopieren und einfügen, können Sie sehen, woher
ich das habe. Dann werden wir
jede Zelle in dieser Tabelle durchgehen. In diesem Fall werden
wir, in diesem Fall werden wir
jede Zeile dieser Tabelle durchgehen . Also sagen wir
für jede Listenzeile, was unser L-Rho-Objekt
in Kabelpunkt-Listenern ist. Weiter L rho. Und vielleicht erstellen wir hier
eine Variable. Wir sagen Dim User. Und wir sagen, dass der Benutzer dem L-Rho-Punktbereich
entspricht. Wenn wir eine machen
würden, wäre das die erste Zelle. Wir haben also eine Zeile und die
erste Zelle dieser Zeile, die wirklich die einzige
Zelle ist, ist der Wert. Also wird es jede Zeile
durchgehen und die erste Zelle jeder Zeile
nehmen. Wenn ich sage, Reichweite bis hier, werden
sie versuchen, die
zweite Zelle zu nehmen und es wird wahrscheinlich Fehler gemacht oder vielleicht etwas getan, was
wir nicht wollen. Also haben wir das
in den anderen Videos besprochen. Das werde ich hier machen, nur als Abkürzung für den Moment. Wir haben also, dass jeder Benutzer
jede einzelne Zeile
durchgeht , den Benutzer
festlegt und wir
diesen Benutzer zu unserem Listenfeld hinzufügen. Also können wir das hier tatsächlich
aufgreifen. Und wir ändern
diesen Text, den ich manuell eingegeben habe, damit der Benutzer
diese Variable wird. Jetzt kann ich das klären. Und als wir dieses Ding gestartet haben, wird
es jede Zeile
dieser Tabelle
durchgehen und dem Listenfeld ein
Element hinzufügen. Wir klicken auf diese Schaltfläche. Da haben wir es. Wir haben unser Pop-up mit
jeder Zeile hier. Und du kannst sehen, du
kannst dich hier durchklicken. Wir haben jetzt all diese Daten aus unserer Tabelle in diesem Listenfeld. Also
werde ich hier eigentlich aufhören. Und dann werden
wir im nächsten Schritt eine
grundlegende Suchfunktion erstellen, werden
wir im nächsten Schritt eine
grundlegende Suchfunktion erstellen Sie
diese Daten eingrenzen können, indem Sie Text eingeben.
86. 4.1.2 UserForm Suchwerkzeug – Basic: , wo
wir aufgehört haben, und haben
hier diese Schaltfläche,
die das Suchformular aufruft , das
jetzt diese Liste von
Elementen enthält , in
der alle Daten in unserer Namenstabelle hier in unserer Tabelle in unserer Tabelle angezeigt der alle Daten in unserer Namenstabelle hier in unserer Tabelle dort weiter, wo
wir aufgehört haben, und haben
hier diese Schaltfläche,
die das Suchformular aufruft, das
jetzt diese Liste von
Elementen enthält, in
der alle Daten in unserer Namenstabelle hier in unserer Tabelle in unserer Tabelle angezeigt werden. Also bis zu einer Person 127 hier. Sie können also sehen, dass
alle bis zum
Ende dieser Tabelle
geladen werden. Die wichtigste Funktion
dieses Dings ist, dass wir in der Lage sein
wollen, hier oben
Text einzugeben und diese Informationen dann herunterfiltern zu lassen. Und was wir wahrscheinlich tun werden, ist, es so zu
machen, dass Sie mit Hilfe dieser Filterfunktion eines
dieser Elemente
hier
auswählen und diese Daten an einer
anderen Stelle in Ihrer Tabelle
platzieren möchten auswählen und diese Daten an einer
anderen Stelle in mit Hilfe dieser Filterfunktion eines
dieser Elemente
hier auswählen und . Das ist es also wahrscheinlich, was
wir am Ende tun werden. Lassen Sie uns nun damit beginnen, herauszufinden ,
wie diese Suchfunktion funktionieren
wird. Auch hier mache ich vorerst wirklich ein unpoliertes Formular weil ich
die zugehörigen Funktionen demonstrieren möchte. Also, was wir tun werden, ist zu unserem Code hier
zurückzukehren. Und das sind die Informationen, die all die Dinge
in der Tabelle
zeigen , weil
wir jede Zeile durchgehen. Lassen Sie uns eine weitere Funktion
erstellen , die diese Daten
aktualisiert. Wenn wir etwas
in unserem Suchfeld haben. Und jetzt müssen wir von
dieser Subroutine wegkommen , die
genau dann ausgeführt wird, wenn das Formular geladen wird, weil es nur einmal geladen
wird, dann müssen wir mit dem Formular
interagieren. Die Art und Weise, wie wir das
zumindest vorerst tun können,
ist, dass ich
zu diesem Formular zurückkomme
und hier eine Schaltfläche hinzufüge, eine Befehlsschaltfläche. Fügen wir hinzu, dass dieser Button hier etwas Text
enthält. Nennen wir es einfach Suche. Wenn wir nun diese Schaltfläche nehmen, heißt
sie Befehlstaste eins. Es läuft irgendwie auf
dieser langen Schaltfläche, also benennen wir sie um. der Btn-Suche wird eine Schaltfläche normalerweise so
benannt. Und wenn ich jetzt
auf diese Schaltfläche doppelklicke, diese Subroutine automatisch für uns in einem
Frame dargestellt,
sodass Sie sehen, dass
es in früheren Videos verschiedene Möglichkeiten
gibt , die Subroutinen zu erstellen.
Ich bin
mir sicher, Sie haben gesehen, wie ich sie eingegeben habe. Hier. Das Benutzerformular
versucht, die Titel der Subroutinen , die mit den Aktionen korrelieren. Normalerweise nennen wir Ereignisse
einen Event-Handler. Durch Doppelklicken auf
diese Schaltfläche wurde mir
klar, dass ich wahrscheinlich eine Subroutine codieren
möchte. Dann wird auf diese
Objektschaltflächensuche geklickt, da wir
sie gerade umbenannt haben. Also unterstreiche klicken und schon wurde diese Subroutine für uns erstellt. Genau wie zuvor. Ich erstelle dieses
Nachrichtenfeld, nur um es uns hier zu zeigen. Ich habe diese Klammern vergessen. Wenn wir zu
unserem Formular zurückkehren, können Sie auf Schaltfläche klicken und auf
Suchen klicken, um diese Subroutine
auszuführen.
Also klicke darauf. Gehen wir zurück zu
unserem Code hier drüben. Zurück zum Formular, weil es die ganze Zeit passieren
kann. Jedes Mal, wenn
du etwas tust, kommst du zurück und bist nicht
am Code. Ich bin hier
wieder beim Code. Also auf der Suche. Stattdessen möchte ich
dieselbe Idee verfolgen. Wir verwenden diesen Code, wenn wir das Forum
initialisieren, um all
die Informationen aus der Tabelle einzufügen. Also lass uns das noch einmal machen. Wir wissen, dass
es bei
der Initialisierung einfach dasselbe tun wird . Aber eigentlich zeige ich dir ganz schnell
etwas. Wenn du herkommst. Wir haben alle unsere
Leute von eins bis 127. Ich klicke auf
Suchen und
es wird dasselbe ausgeführt. Es sieht so aus, als wäre nichts passiert. Aber wir sind bei einem 27.
und es fängt wieder an. Und das liegt daran, dass dieser
Code nur zur Liste hinzugefügt wird. Und dann führst du es erneut aus und es wird zur Liste hinzugefügt. Schon wieder. Wir löschen
keine dieser Informationen. Wenn ich also noch einmal darauf klicke, haben
wir noch 127
weitere haben
wir noch 127
weitere, die
unsere Tabelle hier
zum dritten Mal durchgehen . Lass uns
hierher zurückkommen. Ich kann sogar
darauf doppelklicken und es bringt mich zu derselben
Funktion hier drüben. Denn anstatt
diese neue Subroutine zu erstellen, die ein
Duplikat dieses Punktes wäre und solche, die
Sie hierher zurückbringen. Bevor ich das mache, sage
ich Listbox, so
wie wir
diesen Artikel hier verwenden. List Box Punkt, der leer ist. Jedes Mal, wenn wir das
ausführen, wird alles gelöscht,
bevor all
diese Elemente wieder
aus unseren Tabellendaten hinzugefügt werden. Und der wichtige
Teil dabei ist, dass wir nicht alle unsere
Informationen wieder hinzufügen
wollen. Wir möchten es nach dem
Textfeld filtern , das wir oben
hinzufügen. Also lasst uns hier eine
neue Variable erstellen. Wir nennen es Suche. Nenn es eine Zeichenfolge. Und wonach wir suchen wollen. Suche entspricht wieder unserem Textfeld
im oberen Kontrollbereich. Textfeld eins war also der
Name dieses Textfeldes. Nur zur Erinnerung,
wenn Sie hier klicken, ist
es dieses Wort dem der Name dieses
Textbox-Objekts stammt. Wenn wir das auf die TXT-Suche ändern, dann wollen
wir, dass es so ist. Wenn wir also zum Code zurückkehren, wollte
Textbox One eigentlich mehr Sinn machen. Wenn ich den Speicherplatz kontrolliere, siehst
du, wird es tatsächlich nicht einmal mehr das erste Textfeld empfehlen , weil
es nicht existiert. Stattdessen kann ich Textsuche sagen. Seit ich dieses
Textfeldobjekt umbenannt habe. Dann kann ich Valley sagen. Suche wird also zu dem, was wir in das
Textfeld oben eingeben. Hier fügen wir
all diese Benutzer hinzu. Anstatt also
diese Schleife zu durchlaufen, wird
dies wiederum jede einzelne Zeile
unserer Tabellenkalkulationstabelle
durchlaufen . Wir wollen nicht jede
einzelne Zeile hinzufügen , die es durchläuft. Stattdessen möchten
wir beim
Durchgehen jeder Zeile überprüfen, ob diese Daten mit unseren Suchanfragen
übereinstimmen. Wenn der Benutzer also das enthält, was
wir in unserem Suchfeld haben, die Zeichenfolge selbst, werden
Sie sehen, was ich
meine, während ich das schreibe. Was ich also sagen werde
, ist, wenn wir jeden einzelnen
Nutzer einzeln
durchgehen , werden
wir es in einer Zeichenfolge sagen,
was ich glaube, ich habe das wahrscheinlich in meinen anderen Videos
verwendet,
was im Grunde
bedeutet, innerhalb des Benutzers zu sein. Also in den Informationen in dieser Tabelle hier drüben für
Person eins bis was auch immer, sagen
wir Person 12. Enthält es eine
Teilzeichenfolge von search, was auch immer wir
in unser Textfeld oben schreiben . Also werde ich das
wieder verlangsamen, damit wir es sehen können. Und wenn es größer als Null ist, was bedeutet, dass es
überhaupt ein Ergebnis gibt, dann ist das unsere If-Anweisung. Du bist hier übersprungen ich werde
langsamer werden und uns nur daran erinnern, wie diese
Zeichenkettenfunktion funktioniert. Und nur wenn diese
Bedingung erfüllt ist, fügen wir diesen Benutzer zur Liste hinzu. Auch hier haben wir
das gesamte Listenfeld gelöscht, sodass es leer sein wird. Und wenn wir dann
wieder Benutzer hinzufügen, wird
es
diese neuen Kriterien geben. Der Benutzer muss das finden, was
wir im Suchfeld haben. Also schauen wir mal, ob das funktioniert.
Lass uns hierher zurückkommen. mit einem Klick. Wenn wir mit einem Leerzeichen
auf Suchen klicken, passiert
nichts. Es passiert wirklich etwas. Es löscht das
gesamte Suchfeld und fügt alles erneut hinzu. Aber es sieht so aus,
als ob nichts passiert. Aber wenn ich sage, gib
zwei ein und klicke auf Suchen, siehst
du, dass sich
hier alles eingegrenzt
hat und ich Buchstaben verwende,
weil ich den gleichen Namen verwendet habe. Sie können sich vorstellen, wenn das
Hunderte verschiedener Namen wären, wäre
dies eine viel
detailliertere Suche, aber das einzige, was sich
zwischen all diesen Zahlen unterscheidet, weshalb ich hier Zahlen
verwende. Und wenn ich dann
drei gemacht habe, hast du es. Und wir filtern
alles herunter. Wenn ich eine NO3 eintippe, ist
da Person 103. Ich werde das ganz schnell verlangsamen. Wenn ich hierher zurückkomme, setze
ich hier
einfach einen Breakpoint, damit wir aufhören und einfach schauen
können,
wie diese Funktion funktioniert. Nur zur Klarstellung hier. Wenn ich darauf klicke, gebe ich zwei ein
und klicke dann auf Suchen. Sie werden den Wert
unserer Suchanfragen sehen. Was ist in dem
Textfeld oben, das sind zwei
, wenn ich den
Mauszeiger hier drüben bewege. Suche ist also zwei. Dies ist nur das erste Mal die erste
Zeile der Tabelle
durchgegangen wird. Also sind wir eigentlich bei Person eins. Diese Zeichenfolge
sagt innerhalb dieser Zeichenfolge, Person eins, wo ist die
Position der Teilzeichenfolge? Zu? In Person eins
sucht
diese Zeichenfolge nach dem Stream zu und sie wird ihn
nicht finden. Die Antwort darauf
wird also Null sein. Verwenden Sie jetzt dieses
Fragezeichen hier. Möglicherweise habe ich in der Vergangenheit einen
Debug-Druck angezeigt. Wenn Sie ein Fragezeichen setzen, ist
das so, als würden Sie mir einfach zeigen, was das
Ergebnis ist, was nach
dem Fragezeichen kommt. Also die Antwort
, dass das Null ist. Also dieses Sprichwort, wenn
die Antwort darauf größer als Null
ist,
dann füge den Benutzer hinzu. Also wenn ich draufklicke, wird das übersprungen. Jetzt wird es wieder
durchgehen. Der Benutzer ist jetzt ein
Mensch, der sagt, wohin soll die Suchzeichenfolge gehen? Kannst du das
in dieser Teilzeichenfolge finden? Die Antwort wird größer als
Null
sein . Die Antwort ist acht. Weil die Zeichenfolge, die Suchzeichenfolge zwei,
das achte Zeichen
des Benutzers ist . Da wir diese Kriterien erfüllen, fügen
wir
den Benutzer hier hinzu. Vielleicht können
Sie es sogar live sehen. Ja, also du kannst sehen, wie
es hier passiert. Lass uns sehen. Es sieht so aus, als wäre es nicht
so gut dargestellt, da ich das aufgeteilt habe, was Sie hier sehen sollten, es überspringt alle und dann sehe ich Ron
wahrscheinlich Benutzer sechs. Wenn wir zu Benutzer 12 kommen, sollten
wir sehen, dass 11 oder 12
angezeigt wird. Und jetzt sind wir wieder hier
und fügen den Benutzer hinzu. Das ist es, was
hier in großem Maßstab passiert. Sie können sehen, dass es
für dieses Suchergebnis hier
blitzschnell und im Grunde sofort passiert. Und so
bekommen wir eine Filter-Down-Suche. Geben Sie 11 ein und klicken Sie auf Suchen. Und Sie können anhand dieser Daten sehen, Sie wissen, dass es eine Reihe
verschiedener Implementierungen gibt, aber Sie können
eine riesige Datenmenge haben und das sollte nicht schnell
passieren. Das ist also der Punkt, an dem
Sie anfangen,
Hunderttausende
von
Informationszeilen zu erhalten Hunderttausende
von
Informationszeilen , bei denen eine
Person nicht
scrollen möchte, um nach einem Namen zu suchen, z. B. oder was auch immer die Daten sein mögen. Und wenn Sie einfach
32 eingeben und suchen, finden Sie hier
alle Ergebnisse. Wenn ich dort 321 eintippe,
gibt es unsere Option.
87. 4.1.3 UserForm Suchwerkzeug - Artikel auswählen: Okay, aufbauend auf
unserem vorherigen Video, in dem wir hier eine
einfache Suche haben, und diese filtert all diese Ergebnisse aus unserer
Tabelle hier heraus. Der letzte wichtige
Schritt dafür, und auch dieser ist
sehr ungeschliffen. Der letzte Schritt dabei,
nur aus allgemeiner Sicht,
ist jedoch , dass wir in der Lage
sein wollen,
eines der Elemente
aus diesem Listenfeld auszuwählen . Wenn wir also
alles herunterfiltern und wir jetzt leichter unsere Wahl finden
können. Wir möchten in der Lage sein, diesen Datensatz
auszuwählen und ihn
wahrscheinlich irgendwo in
unserer Tabelle auszufüllen. Das werden wir als Nächstes tun. Also wählen wir
einfach einen Ort aus. Wählen wir
hier eine beliebige Zelle aus, um H5 zu verkaufen. Wählen Sie einfach
ein zufälliges Feld hier
im leeren Feld aus und wir
können es sogar umbenennen. Wir rufen diesen Benutzer ausgewählt an. Oh, eigentlich tut es mir leid. Was ich tun wollte, ist hier den ausgewählten
Benutzer einzugeben. Und wir benutzen einfach dieses
Handy hier auf der Seite. Und wir geben dem einen Rand,
damit es wie ein Feld aussieht. Und ich ändere den Namen hier. Der Benutzer wurde hier
ohne Leerzeichen ausgewählt. Es hatte nicht die
richtige Formatierung da ich solche
Dinge in den Namen tippte. Jetzt
heißt diese Zelle vom Benutzer ausgewählt. Und wenn wir auf die Suche klicken, ändere
ich diesen
Namen sogar hier. Wir bekommen unser Pop-up
und dann wollen wir hier eine unserer
Auswahlen
auswählen, die wir nach
unten filtern und in die
Zelle dort drüben füllen können . Wenn wir nun zu unserem Code
übergehen, lassen Sie uns sehen, lassen Sie mich einfach
hier zu unserem Editor gehen. Ich gehe zum Developer View-Code. Es gibt ein Dutzend verschiedene
Möglichkeiten, zu diesem Editor zu gelangen. Ich mache es jedes
Mal anders , wenn wir
in unser Benutzerforum zurückkehren. Und wir müssen
einen unserer Artikel auswählen und ihn dann einreichen. Also, nur um etwas
Einfacheres zu tun, lassen Sie uns hier einen weiteren
Button anklicken. Und wir nennen diesen Button. Wählen Sie aus. Es könnte okay sein oder
was auch immer du dir einfallen lässt. Also ich denke es mir hier einfach aus. Wir werden diese Schaltfläche mit der
Aufschrift Auswählen haben. Jetzt haben wir hier die
Befehlsschaltfläche mit einem Klick. Das passiert also,
wenn wir auf diese Schaltfläche klicken. Eigentlich, seit wir
diesen Button Search genannt haben. Während wir zu diesem Formular zurückkehren, werde ich diesen Körper umbenennen. Es ist also kein Befehl von
dem, der ziemlich
lang ist , ich sage Button. Wenn wir nun darauf doppelklicken, erstellen
wir dieses neue. Die Methode hier wählen Sie über
die Schaltflächen aus. Dieser ist immer noch hier drüben
, der eigentlich
nie ausgelöst wird, da dieser Button momentan nicht
existiert. können wir einfach löschen.
Schon wieder. Wir werden es testen. Ausgewählt. Ich mache das immer gerne
einfach als Demo, dass die
Events funktionieren, oder? Wenn du hierher kommst,
klickst du auf Suchen, Schnellauswahl und
es heißt ausgewählt, was natürlich
gerade nichts bewirkt. Jetzt kommen wir zurück zum Formular. Kommen wir zurück zu unserem Code. Und wir müssen
unser Listenfeld durchgehen und
herausfinden, was ausgewählt ist. Das ist also eine Einbahnstraße oder
es gibt vielleicht bessere Möglichkeiten, aber das ist ein einfacher Weg
, den ich schon einmal gemacht habe. Und tatsächlich gibt es eine
Syntax und ich werde sie vergessen. Also genau wie zuvor denke
ich, dass ich vielleicht einfach in einen
Browser gehe und
das Ergebnis googele und
es in dieser Aufnahme
hier mache , damit wir es sehen können. Aber ich denke, wir
werden alle Elemente in unserem Listenfeld durchgehen und herausfinden,
welches ausgewählt ist. Das ist wahrscheinlich der
beste Weg, indem Sie jedes
Element einzeln durchgehen und im Grunde einfach überprüfen, wann Sie zu dem ausgewählten Element gelangen. Also lass mich weitermachen und das hier drüben
ausprobieren. Also gehen wir
zu Google und sagen VBA aus diesem Feld ausgewählt. Also ich mag es natürlich vorher, ich nehme diese gerne
in die Videos auf, wie ich vielleicht eine Suche mache, wenn
ich hier etwas vergesse, ich vergesse nur die Syntax. Siehst du, ich
stöbere gerade hier. Und genau wie ich vermutet habe, machen
sie eine Schleife. Sie
durchforsten also das Listenfeld. In diesem Fall gibt die Anzahl der Listenfelder an, wie viele
Elemente sich im
Listenfeld befinden, wenn Sie
jedes Element des Listenfeldes durchgehen . Und dann, wenn sie zu
einem Artikel kommen, der ausgewählt ist. Also wird x von
01234567 ausgehen und so weiter. Wenn beispielsweise Artikel Nummer
sechs ausgewählt ist, dann
wird diese Aussage wahr sein. In Listenfeld eins wurden
sechs ausgewählt, was wahr ist. Und dann werden wir wissen,
dass dieser ausgewählt ist. Das
zeigen sie hier in diesem Beispiel. Also lass uns das machen. Lassen Sie uns einen Zähler erstellen. In unserem Beispiel haben sie in der Vergangenheit x
verwendet. Ich habe I gerade als
unseren normalen Index verwendet. Lass uns das machen, denn I ist gleich
Null für dieses Feld Eins. Ich habe vergessen, ob es die
Anzahl der Artikel war, die Anzahl der Listen. Ich glaube. Lass uns zurückkommen. Zählen wir
hier drüben und minus eins. Ich glaube an meine anderen Videos,
ich habe mir angesehen, wie Arrays, es kommt auf das Objekt an. Ich weiß intuitiv, wenn Sie nicht
viel programmiert haben, zählen Sie
normalerweise ab
1123 und so weiter. Aber für Arrays beginnen
sie in vielen Programmierobjekten bei Null. Das erste Ding ist also
Null und dann Eins, weshalb wir von Null
auf die Anzahl der Listen minus eins
gehen . Wenn das
Listenfeld z. B. drei Elemente enthält, werden
hier tatsächlich drei angezeigt, so wie wir es uns intuitiv vorstellen würden. Aber dann geht ein Zähler
im Objekt
auf Punkt Null, Punkt eins und Punkt zwei,
um Ihre drei Artikel zu erhalten. Deshalb ist diese
Notation hier. Und sie werden sagen, wenn dieses Feld, das ausgewählt ist, gleich wahr ist
, dann ist das,
was auch immer diese Zahl ist. Wenn ich eins sage, dann wird
es so sein, ist Punkt eins ausgewählt,
wahr oder Null? Da wir bei Null beginnen und wenn das erste Element ausgewählt ist, wird der Wert wahr zurückgegeben. Andernfalls wird false zurückgegeben. Das ist also das Beispiel, das
sie uns daraus zeigen. Das war eigentlich die
Microsoft-Website. Also bring das zurück zu mir. Und dann, was ihnen
hier gerade gezeigt
wurde , ist, dass sie nur
eine Nachricht mit der Artikelnummer machen . Ich mache
hier nur eine Nachricht für die ausgewählte Demo. Und noch einmal, denk daran, dass
ich rückwärts Eins
sein werde , weil
Null das erste Element ist. Wir werden es in unserem
Beispiel hier sehen. Lass uns das ausprobieren. Klicken wir auf unseren ersten Artikel
und wir klicken auf Auswählen. Die Artikelnummer Null ist ausgewählt. Artikel Nummer eins ist ausgewählt. Sie sehen also, wie das genau dort
funktioniert. Es erkennt, welches Ding ausgewählt
ist, während wir es durchgehen. Eine Sache, die ich hier gerne mache, ist nachdem wir herausgefunden haben, was ausgewählt wurde. Ganz schnell, siehst du,
ich versuche hier
einzutippen und es lässt mich nicht,
ich drücke die Eingabetaste und all das. Das liegt daran, dass dieses
Benutzerformular zwar angezeigt wird, ich in
Excel jedoch nichts tun kann, einschließlich des Editors. Also muss ich das schließen und dann kann ich
jetzt zurückkommen und Sachen mit Excel
machen. Es ist nicht mehr eingefroren. Wir kommen wieder her. Ich verlasse den Kreislauf gerne. Beenden Sie diese Seite, sobald wir gefunden
haben, wonach wir suchen, da wir im Grunde
alle tausend Zeilen durchgehen werden , sobald wir die ausgewählte gefunden haben. Da wir in diesem Fall erwarten, dass nur eine Sache ausgewählt
wird, können wir einfach aufhören, das Loopen zu wiederholen. Wenn wir also feststellen, dass Element
drei ausgewählt ist, müssen
wir keine 1.000 weiteren Zeilen
durchgehen. Das ist unnötig. Jetzt haben wir also i. Was wir tun können, ist anstatt die
Artikelnummer anzuzeigen, die ausgewählt ist,
ich denke, wir können hier
eine Variable erstellen, nur um es deutlicher zu machen,
wenn ich Benutzerzeichenfolge sage. Und wenn wir den ausgewählten
Artikel gefunden
haben, können wir den Wert
des
ausgewählten Elements abrufen, indem wir dieses Feld markieren. Eins. Lass mich wirklich hierher zurückkommen
und wir werden das einfach überprüfen. Siehst du, da steht Listbox List x. Also ich glaube, das ist die
Schreibweise, die bedeutet,
dass wir I statt x benutzt haben. Das wird
uns unseren Nutzernamen geben. Also fügen wir in derselben Nachricht, schneller, den Benutzer ein, sagen
wir den Artikel. Der Benutzer wird ausgewählt, anstatt nur
die Nummer der Zeile anzuzeigen. Also lass uns hierher zurückkommen
und sehen, ob das funktioniert. Person zu, wir klicken auf Auswählen und Benutzer Person zwei wird ausgewählt. Ich weiß, dass dieses Nachrichtenfeld
nicht so viel Sinn macht. Wir kommen den ganzen Weg runter. Wenn wir diesen Filter ändern und hier suchen, klicken Sie auf Auswählen. Und das haben wir.
Wir ermitteln den Wert des Elements im ausgewählten
Listenfeld. Wie Sie sehen, erhalten
wir jetzt alle
Informationen, die wir benötigen. Kommen wir zurück
zu unserem Code. Jetzt
brauchen wir dieses Nachrichtenfeld nicht wirklich. Ich habe das
gerade hier mit
diesem Apostroph kommentiert . Ich habe dafür ein Hockey. Richten Sie tatsächlich eine benutzerdefinierte Sache ein. Aber wirklich, du kannst hier
reinkommen und schnell kommentieren oder ungewöhnlich. Jetzt, wo wir
unseren Wert haben , dass wir
nach einem Endverbraucher suchen, müssen wir nur noch nach den
Blättern suchen, ein Sortiment. Und wir werden einfach sagen , wo wir den Wert
setzen wollen. Und wir haben das in unseren anderen Lektionen hier schon unzählige
Male gemacht in unseren anderen Lektionen hier schon unzählige
Male Wir werden
den Wert des Benutzers
an Ort und Stelle wieder in das Blatt übernehmen . Hier haben wir diesen
ausgewählten Benutzer benannt. Wenn ich sagen würde, ich fünf oder
was auch
immer das ist, was auch immer
die Handyadresse ist, dorthin würden diese Daten gehen. Ich sage nur,
Hey, in dieser Zelle hier drüben, Benutzer platziert diesen Wert dort. Und dann verlassen wir
den Loop und das war's. Ich komme
hierher, wähle
etwas aus und klicke auf Auswählen. Und du siehst, dass Person fünf in dieser Zelle
landet. Ich kann das schließen.
Sie denken wahrscheinlich
schon, dass wir dieses Benutzerformular
nicht geschlossen haben. Das ist also das Letzte, was
wir tun können. Nach der Schleife. Wir können. Es gibt
verschiedene Möglichkeiten, dies zu tun. intuitive Art, die
Sie vielleicht denken, ist ein Benutzer, der einen Punkt versteckt. Und damit wird das Formular geschlossen. Aber das ist eigentlich nur oberflächliches Ausblenden des
Formulars, um es verschwinden zu lassen, aber es könnte immer noch im Hintergrund
aktiv sein. Wenn Sie auf diese
Website zurückkehren, werden Sie sagen,
Sie werden sehen, dass sie schreiben, entladen Sie mich, was eine
interessante Schreibweise ist. Du findest
das vielleicht lustig. Zum Glück schickt
mich das genau hierher. Das ist eigentlich dasselbe, als
würde man das erste Benutzerformular entladen, worauf wir in unserem Benutzerformular
verwiesen haben. Nur diese Notation, ich zu sagen, denn das ist der Code
hinter dem Benutzerformular. Der Begriff ich wird
hier eigentlich verwendet, um sich selbst zu bezeichnen. Auf diese Weise
können Sie diese Notation
unabhängig vom Namen
unseres Benutzerformulars verwenden . Dadurch wird also
das Benutzerformular geschlossen und
vorerst
aus dem Speicher gelöscht und alles andere, sofern Sie kein neues neu starten. Jetzt können wir hier klicken. Wir können 100 eingeben,
um zu finden, was wir suchen. Klicken Sie auf Auswählen. Und jetzt
steht in diesem Feld 100% 100. Und das
würde natürlich funktionieren, wenn Sie realistischere Daten oder
eine andere Datenquelle hätten. In diesem Fall
könnte es sich um einen bestimmten Bereich handeln. Es muss auch nicht diese Namenstabelle
sein, obwohl ich diese benannten Tabellen
verwenden möchte. Und es gibt alle möglichen anderen Funktionen, die
Sie einbauen können. Aber ich denke, am Ende ist
dies Ihr absolutes
Minimalkonzept, ist
dies Ihr absolutes
Minimalkonzept um zu demonstrieren, wie das
funktionieren würde , und wir werden weitere
kleine Aufräumfunktionen hinzufügen ,
bevor wir diese Sache erledigen.