Automatisierung mit Excel Macros / Excel VBA – Anfänger bis Fortgeschrittene | Steve Tran | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Automatisierung mit Excel Macros / Excel VBA – Anfänger bis Fortgeschrittene

teacher avatar Steve Tran, Freelance Software Developer

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung - Aktualisiert

      4:57

    • 2.

      1.1 Zeige Developer

      0:34

    • 3.

      1.2 Aufzeichnung von Makros

      2:41

    • 4.

      1.3 XLSM Dateityp speichern

      1:10

    • 5.

      1.4 Deinen Code ansehen

      1:27

    • 6.

      1.5 VBA Editor Message Box

      2:47

    • 7.

      1.6 Cell

      1:50

    • 8.

      1.7 Eine Zelle benennen

      2:25

    • 9.

      1.8 Einen Ordner erstellen

      2:48

    • 10.

      1.9 Error

      3:31

    • 11.

      1.10 Daten in Zelle schreiben

      1:02

    • 12.

      1.11 Variablen

      1:13

    • 13.

      1.12.1 Grundlegende Math

      1:36

    • 14.

      1.12.2 Ganzzahl vs Long

      2:35

    • 15.

      1.13 Wenn Aussagen

      3:14

    • 16.

      1.14 für Schleife

      4:18

    • 17.

      1.15 Für Loops Continued Automation!

      2:51

    • 18.

      1.A Class Project 01 Beschreibung und Tutorial

      14:37

    • 19.

      1.16 Esc Schlüssel zum Stopp von Makro

      4:28

    • 20.

      1.17.1 Tun beim Loop Intro

      8:20

    • 21.

      1.17.2 Tun beim Loop

      9:07

    • 22.

      1.17.3 für jedes Loop Intro

      7:46

    • 23.

      1.17.4 Variant Typ

      9:23

    • 24.

      1.17.5 für jede Schleife mit Variante

      4:25

    • 25.

      1.18.1 Objektvariablen - Set - Intro

      4:11

    • 26.

      1.18.2 Object Vars – Declare + Alle Dateien im Ordner lesen

      7:12

    • 27.

      1.19.1 Workbook

      11:11

    • 28.

      1.19.2 Worksheet

      5:40

    • 29.

      1.20 Referenzbibliotheken Word Object Intro

      7:50

    • 30.

      1.21.1 Sub von einem anderen Sub

      4:56

    • 31.

      1.21.2 Call Sub mit einem Parameter

      7:52

    • 32.

      1.21.3 Call Sub mit mehreren Parametern

      7:04

    • 33.

      1.21.4 Sub mit optionalem Parameter

      6:55

    • 34.

      1.22 Funktionen Intro

      5:19

    • 35.

      1.23 Mit Statement

      5:52

    • 36.

      1.24.1 Error – Intro – auf Fehler

      9:26

    • 37.

      1.24.2 GoTo - Code

      5:27

    • 38.

      1.24.3 zum Error Lesezeichen

      8:05

    • 39.

      1.24.4 zum Fehler – Ausdauer und Zurücksetzen

      9:35

    • 40.

      1.C.1 Automatisieren Txt-Dateien

      6:40

    • 41.

      1.C.2 Automatisieren Umbenennen Dateien Fix

      9:18

    • 42.

      2.1 Moving Data – Erstellen von Form

      4:24

    • 43.

      2.2 Umzugsdaten – Nennen Sie die Bereiche

      7:11

    • 44.

      2.3 Umzugsdaten – Vereinfache aufgezeichneten Code

      5:12

    • 45.

      2.4 Moving Data – Nur Werte einfügen

      4:19

    • 46.

      2.5 Bewegliche Daten – ohne Kopieren und Einfügen

      3:35

    • 47.

      2.6 Umzugsdaten – Schreiben in die nächste Reihe

      6:00

    • 48.

      2.7 Umzugsdaten – Zeitzählung hinzufügen

      1:35

    • 49.

      2.8 Umzugsdaten – Schreiben auf ein anderes Blatt

      3:59

    • 50.

      2.9 Daten bewegen – Tidy Up

      6:28

    • 51.

      2.10 Moving Daten – Validierung vor dem Prozess

      15:36

    • 52.

      2.11 Tabellenobjekt (Listenobjekt)

      5:04

    • 53.

      2.11.1 ListObjects (Tabelle) - VBA Intro

      10:39

    • 54.

      2.11.2 ListObjects - ListRows und Looping

      6:22

    • 55.

      2.11.3 ListObjects - ListColumns und Zeilenwerte

      7:32

    • 56.

      2.11.4 Excercise – Bestimmte Zeilen löschen

      18:54

    • 57.

      2.11.5 Excercise – Bestimmte Zeilen löschen

      8:05

    • 58.

      2.12 Bewegliche Daten hinzufügen Row w ListObject

      15:46

    • 59.

      3.1 Zitat Tool Project - Intro

      3:41

    • 60.

      3.2.1 Quote – Ordner erstellen

      13:01

    • 61.

      3.2.2 Quote – Ordner prüfen und öffnen

      7:20

    • 62.

      3.3.1 Quote – Add Line UI Setup

      3:24

    • 63.

      3.3.2 Quote – Add Line New List Part 1

      13:14

    • 64.

      3.3.3 Quote – Artikeldaten Lookup

      10:43

    • 65.

      3.3.4 Quote – Fertigstellung Basic Add Line

      7:43

    • 66.

      3.3.5 Quote – Zeile löschen – Zählung aktualisieren

      17:45

    • 67.

      3.4.1 Quote – Excel-Ausgabe Vorlage

      4:58

    • 68.

      3.4.2 Quote – Excel Output Header Transfer

      9:55

    • 69.

      3.4.3 Quote – Excel Output Linien Transfer

      13:36

    • 70.

      3.4.4 Quote – Excel-Ausgabe Speichern von Datei

      12:58

    • 71.

      3.5 Quote – Auto Outlook Email

      11:20

    • 72.

      3.6 Quote – Customer Lookup Tabelle

      5:20

    • 73.

      3.7 Quote – Anhang überprüfen Exis

      5:54

    • 74.

      3.8 Quote – Gesamtpreis hinzufügen

      8:48

    • 75.

      3.9.1 Quote - History Log - Start

      10:38

    • 76.

      3.9.2 Quote - Log Header Info

      9:31

    • 77.

      3.9.3 Quote - Log Lines Info

      9:03

    • 78.

      3.A.1 Automatisieren Sie Daten aus vielen Dateien Intro

      2:43

    • 79.

      3.A.2 Schleife durch Liste der IDs

      10:22

    • 80.

      3.A.3 Öffnen Sie Dateien und holen Sie Daten

      14:28

    • 81.

      3.A.4 Tag-Format und Test

      7:22

    • 82.

      3.10.1 Quote Clear Form

      7:00

    • 83.

      3.10.2 Quote Zero Rows Debug

      5:09

    • 84.

      3.10.3 Quote Linienvalidierung

      4:24

    • 85.

      4.1.1 UserForm Suchwerkzeug - Intro

      12:30

    • 86.

      4.1.2 UserForm Suchwerkzeug – Basic

      11:14

    • 87.

      4.1.3 UserForm Suchwerkzeug - Artikel auswählen

      13:20

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

1.172

Teilnehmer:innen

8

Projekte

Über diesen Kurs

UPDATE: Ich habe vor kurzem eine neue Einführung aufgenommen und Stunden an neuen Videos hinzugefügt. Ich will noch viel mehr Inhalte hinzufügen, um meine Mission zu erfüllen, eine komplette Bibliothek an Lektionen zu machen, um jemanden von einem Anfänger zu einem fortgeschrittenen VBA-Programmierer zu bringen. Derzeit arbeite ich an dem Folgeprojekt "Quote in Abschnitt 3.

Ich schätze deine Geduld, während ich weiterhin diese course aufbaue!

Kursbeschreibung:

Dieser Kurs wird dich mit Microsoft Excel mit seiner Makro- und VBA vorstellen. Der Beginn ist für Anfänger, die noch nie zuvor programmiert haben. Es ist eine hervorragende Einführung in Excel-Makros und auch Programmierung im Allgemeinen mit übertragbaren Wissen für andere Programmiersprachen.

Es wird dich durch wichtige Konzepte führen und langsam einige leistungsstarke Automatisierung zeigen, dass diese Fähigkeit deinen klerikalen computerbasierten Aufgaben bringen kann.

Während der Kurs weitergeht, werde ich immer weiterführende Konzepte einführen. Ich werde dich mitbringen, während ich Beispielprojekte erarbeite, die die in früheren Lektionen diskutierten Konzepte kombinieren und nutzen.

Die ungefähre Struktur des Kurses ist, dass dir der Lektionen am Anfang individuelle Konzepte vermitteln. Das sind die Bausteine. Der spätere Lektionen werden Beispielprojekte zeigen, bei denen ich jeden Schritt des Aufbaus von example darstelle, die Prozesse in Ihrem Unternehmen oder Job automatisieren können.

Bitte zögern Sie nicht, mich mit Fragen zu kontaktieren und einen Bericht zu hinterlassen. Vielen Dank für jede Zeit, die du aufhörst! Wenn du eine Frage in der Diskussion hinterlassen würde, würde ich es gerne beantworten und vielleicht sogar einen video aufzeichnen für die Antwort.

Triff deine:n Kursleiter:in

Teacher Profile Image

Steve Tran

Freelance Software Developer

Kursleiter:in

Hello, I'm Steve.  I'm a freelance software developer who builds custom tools to support business process efficiency, automation, and analytics.

Vollständiges Profil ansehen

Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

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.