Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Arrays ausgeben

Arrays ausgeben
27.07.2016 13:44:11
Pelic
Hallo Freunden.
Ist es möglich, dass ich bestimmte Arrays ausgeben lasse.
Als Beispiel beinhaltet mein Array eine unbestimmte Zahl an Nummern.
Diese Nummern werden mit einer Tabelle abgeglichen.
Jetzt würde ich gerne die Arrays ausgeben lassen, welche nicht in der Tabelle vorkamen.
Ist das irgendwie möglich?
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zum Beispiel so...
27.07.2016 15:21:58
Pelic
Wenn ich das Makro ausführe passiert bei mir nichts. :/
AW: Zum Beispiel so...
27.07.2016 15:24:50
baschti007
VBA - Ansicht - Direktfenster
Dort wird Debug.Print a(i) angezeigt
^^
Gruß Basti
Anzeige
Hast Du Dir das Makro überhaupt angesehen?
27.07.2016 15:26:19
Michael
Mein lieber Pelic!
Das Makro hab ich Dir als Beispiel zur Verfügung gestellt, da Du nicht angegeben hast, wie die Verhältnisse bei Dir aussehen. Ins Array werden ein paar Werte eingelesen, diese mit den Werten auf dem Tabellenblatt verglichen und dann jene, die nicht vorkommen, INS DIREKTFENSTER AUSGEGEBEN!
Wenn Du fertige Lösungen wünschst, dann solltest Du das a) erwähnen und b) alle dazu notwendigen Informationen von Anfang an bereitstellen. Ansonsten bekommst Du ein Beispiel, Schema oder Rahmen-Konstrukt, dass Du dann eben noch selbständig an Deine Verhältnisse anpassen musst.
LG
Michael
Anzeige
AW: Hast Du Dir das Makro überhaupt angesehen?
27.07.2016 15:29:54
Pelic
Nein ich habe mir das Makro schon angesehen aber halt erwartet, dass etwas sichtbares entsteht. Mit dem Direktfenster das kannte ich bis dato so nicht, da ich VBA nie gelernt sondern über Foren versucht habe zu verstehen.
Tut mir Leid ^^
Kannst du mir aber vielleicht nochmal die Funktion von WorksheetFunction.CountIf erklären. Die kenne ich nicht
Anzeige
Eine WorksheetFunction...
27.07.2016 15:36:58
Michael
Hallo Pelic,
ist nichts anderes als eine Excel-Zellformel (in diesem Fall Zählenwenn), die Du in VBA nutzt. Das macht häufig Sinn, wenn es für bestimmte Berechnungen etc. bereits eine Zellformel gibt, dann musst Du Dir dafür nicht in VBA extra eine Berechnung überlegen.
In Deinem Fall lautet die Aufgabe: Schau ob Wert X (ein Wert aus dem Array) im Bereich Y (Blattbereich) vorkommt, wenn nicht gib X aus. Zählenwenn macht genau das; sie zählt die Anzahl der Zellen, deren Zellwert einem bestimmten Kriterium entspricht - ist also die Anzahl der gefundenen Zellen kleiner 0, dann kommt der entsprechende Wert im Bereich nicht vor.
Aufpassen musst Du jetzt nur, falls Du nicht nach Zahlen/Ziffern, sondern auch Texten als Kriterium vergleichen willst; dann brauchst Du evtl. eine andere WorksheetFunction.
Informationen wie diese findest Du aber auch in der Excel- bzw. VBA-Hilfe. In der VBA-Hilfe mit dem Suchbegriff "worksheetfunction.countif"...
LG
Michael
Anzeige
AW: Eine WorksheetFunction...
27.07.2016 15:45:53
Pelic
Ja da es sich um eine Kombi aus Buchstaben und Zahlen handelt werde ich eine andere brauchen aber das ist erst das Problem wenn das Makro allgemein funktioniert ^^.
Aber schon mal Danke für das gute erklären
Nein nicht unbedingt...
27.07.2016 16:07:13
Michael
Pelic,
...aber das kann man natürlich nicht pauschal beantworten, wenn wir nicht wissen, worum es bei Dir konkret geht.
Wenn die Zellen des Bereichs, den Du mit den Array-Inhalten abgleichen willst, mal Texte, mal Zahlen oder auch mal Text-Zahlen enthalten, funktioniert das o.a. Beispiel sehr wohl.
wenn das Makro allgemein funktioniert
Wie gesagt, haben wir alle Infos, können wir auch konkret helfen.
LG
Michael
Anzeige
AW: Nein nicht unbedingt...
27.07.2016 16:10:19
Pelic
Ich kann heute gerne noch zwei Beispielmappen erstellen und Hochladen.
Was ich sagen kann ist, dass die Seriennummern immer eine Mischung aus Buchstabe, Zahlen und Zeichen sind.
Eine Beispielmappe ist immer sinnvoll, aber...
27.07.2016 16:16:39
Michael
nur dann wenn sie auch Informationen zu a) der Ausgangslage und b) dem gewünschten Ergebnis enthält.
Ich kann nur davon ausgehen, was ich von Dir hier im Forum so gelesen habe, und da stellst Du häufig sehr punktuelle Fragen; da muss man als Antworter davon ausgehen, dass Dir Schemata bzw. Beispiele reichen und Du Dir das selbst korrekt zusammenzimmerst.
Dieser Faden hier zB: Du wolltest wissen, ob und wie man Einträge eines Arrays auf ihr Vorkommen in einem Zellbereich überprüfen kann. Das hab ich Dir gezeigt - damit könnte der Faden aus sein. Aber dennoch ist jetzt schon ein ziemlich langer Faden drauß geworden, und ich weiß noch immer nicht WAS Du eigentlich vorhast, also welche Aufgabe ein Makro bei Dir lösen soll.
Insbesondere also, gerade wenn Du in VBA nicht firm bist und vieles "aus Foren zusammenkopierst", wäre es wohl zielführender Du investierst mehr Zeit in die Problem- und Zielbeschreibung, und erhältst dann ein passgenaues Makro, als dass Du nach 100en Details fragst, die Du dann nicht effektiv zusammenfügen kannst.
Meine Meinung.
LG
Michael
Anzeige
AW: Eine Beispielmappe ist immer sinnvoll, aber...
27.07.2016 16:31:59
Pelic
Ich kann dich absolut nachvollziehen aber an sich reichen mir Schemata auch aus da ich gerne damit Zeit verbringen daran rum zu basteln und zu verstehen. Aber natürlich wirft das bei mir im Verlauf dann weitere oder andere Fragen auf. Was ich mir merken werde ist, dass ich vorher klar definieren werde ob ich ein Schemata oder eine komplette Lösung brauche. Danke aber bis Dato für die gesamte Unterstützung :)
Anzeige
Alles klar! Viel Spaß und Erfolg noch, owT
27.07.2016 16:56:51
Michael
AW: Hast Du Dir das Makro überhaupt angesehen?
27.07.2016 15:37:49
baschti007
Hier MS hat das doch schon gemacht ;)
https://msdn.microsoft.com/de-de/library/office/ff839272.aspx
OT @ Basti: ? Drücke ich mich so unklar aus? owT
27.07.2016 15:42:58
Michael
Anzeige
Nein alles bestens ;)
27.07.2016 15:50:24
baschti007
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Arrays in Excel VBA ausgeben


Schritt-für-Schritt-Anleitung

Um ein Array in Excel VBA auszugeben, kannst Du die Debug.Print-Anweisung verwenden. Diese gibt die Werte im VBA-Direktfenster aus. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf deinen Projektbaum, wähle "Einfügen" und dann "Modul".

  3. Deklariere dein Array: Erstelle ein Array, das die Werte enthält, die Du ausgeben möchtest.

    Sub ArrayAusgeben()
       Dim a() As Variant
       a = Array("Wert1", "Wert2", "Wert3")
  4. Verwende Debug.Print: Gehe durch das Array und gib jeden Wert im Direktfenster aus.

       Dim i As Integer
       For i = LBound(a) To UBound(a)
           Debug.Print a(i)
       Next i
    End Sub
  5. Führe das Makro aus: Drücke F5, um das Makro auszuführen, und öffne das Direktfenster (CTRL + G), um die ausgegebenen Werte zu sehen.


Häufige Fehler und Lösungen

  • Fehler: Das Direktfenster zeigt keine Ausgaben.

    • Lösung: Stelle sicher, dass das Direktfenster geöffnet ist (CTRL + G). Überprüfe auch, ob das Makro korrekt ausgeführt wird.
  • Fehler: Laufzeitfehler beim Zugriff auf das Array.

    • Lösung: Überprüfe, ob das Array ordnungsgemäß deklariert und initialisiert wurde.

Alternative Methoden

Es gibt auch andere Möglichkeiten, um Arrays in Excel VBA auszugeben:

  • Zellen einer Tabelle zuweisen: Anstatt die Werte im Direktfenster auszugeben, kannst Du sie auch direkt in ein Arbeitsblatt schreiben:

    Sub ArrayInZellenAusgeben()
       Dim a() As Variant
       a = Array("Wert1", "Wert2", "Wert3")
       Dim i As Integer
       For i = LBound(a) To UBound(a)
           Cells(i + 1, 1).Value = a(i)  ' Werte in Spalte A schreiben
       Next i
    End Sub
  • Verwendung von WorksheetFunction.CountIf: Um zu überprüfen, ob Werte aus dem Array in einem bestimmten Bereich vorhanden sind, kannst Du WorksheetFunction.CountIf nutzen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du ein Array ausgeben und gleichzeitig überprüfen kannst, ob die Werte in einem bestimmten Bereich vorhanden sind:

Sub BeispielCountIf()
    Dim a() As Variant
    Dim count As Long
    a = Array("A1", "B2", "C3") ' Beispielwerte

    Dim i As Integer
    For i = LBound(a) To UBound(a)
        count = WorksheetFunction.CountIf(Range("D1:D10"), a(i))
        If count = 0 Then
            Debug.Print a(i) & " ist nicht im Bereich D1:D10."
        End If
    Next i
End Sub

In diesem Beispiel wird jedes Element des Arrays geprüft und nur die Werte ausgegeben, die nicht im Bereich D1:D10 vorhanden sind.


Tipps für Profis

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Verwende Debug.Print für die Fehlersuche, um Variablenwerte während der Ausführung zu überprüfen.
  • Berücksichtige, dass die Debug.Print-Ausgabe im Direktfenster nach dem Schließen des VBA-Editors nicht gespeichert wird. Nutze daher das Arbeitsblatt, um wichtige Ergebnisse zu dokumentieren.

FAQ: Häufige Fragen

1. Wie kann ich ein mehrdimensionales Array ausgeben?
Du kannst ein mehrdimensionales Array ähnlich wie ein eindimensionales Array durchlaufen, indem Du mehrere Schleifen verwendest:

Dim a(1 To 2, 1 To 2) As Variant
a(1, 1) = "Wert1"
a(1, 2) = "Wert2"
a(2, 1) = "Wert3"
a(2, 2) = "Wert4"

Dim i As Integer, j As Integer
For i = 1 To 2
    For j = 1 To 2
        Debug.Print a(i, j)
    Next j
Next i

2. Was ist der Unterschied zwischen Debug.Print und MsgBox?
Debug.Print gibt Werte im Direktfenster aus, während MsgBox ein Pop-up-Fenster zeigt, das eine Nachricht anzeigt. Debug.Print ist nützlich für die Fehlersuche, während MsgBox verwendet wird, um den Benutzer zu informieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige