Nach zwei Stunden Babysitten glaube ich, dass ich doch keine Kinder, sondern lieber etwas Harmloseres möchte. Krokodile zum Beispiel. Oder Löwen.

Hallo Excel-Meister

ich arbeite an einem VBA – Projekt, dass aus Power BI Dateien die Metadaten rauslesen soll.

Das Auslesen geschieht über Power Query (what else….), aber ich muss noch ein paar Prüfungen mit VBA erstellen und insbesondere die Power Query Abfragen on the fly erstellen. Letzteres geht problemlos.

Der Ablauf:

  1. Prüfe, ob User die pbix geöffnet hat.
  2. Falls nicht, bitte freundlich darauf aufmerksam machen
  3. Falls nein, Abbruch – falls ja, pbix öffnen.

Bis dahin klappt alles.

Nun kommt der Punkt, wo der Benutzer sich gegenüber der Power BI Datei authentifizieren muss, nachdem er ja gesagt hat.

falls er aber den Dialog hier abbricht (…..DAU…….), kommt eine „schöne“ Meldung:

Nun meine Frage:

Wie kann ich hier meine eigene Meldung einbauen und vor allem, wie fange ich das ab?

Bin schon voller Zweifel…..

Merci, lieber René für deine Geduld mit mir

Freundliche Grüsse Hans Peter

########################################

die unwissenden erleuchten sich selber

habs gefunden. nach Drücken von „Senden“ fiel es mir wieder ein, da stand was im Buch von René

ich danke dir!

Hier der Code, falls es dich interessiert.

Sub GetData()

‚XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

‚ Code erstellt durch: Pfister BI Consulting GmbH

‚ Zweck: Holt Metadaten aus der Power BI Datei

‚ Erstelldatum: 8.3.2021

‚ Aenderungsdatum:

‚XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

‚Testen, ob pbix Datei geöffnet ist. Falls nicht, Mesagebox und fragen, ob sie geöffnet werden soll. Fall nicht, Abbruch

    If Dateigeoeffnet(Range(„Dateipfad_PBIX_Original“)) = False Then

        If MsgBox(„Die Datei muss geöffnet sein. “ & Chr(10) & “ Soll die Datei geöffnet werden?“, vbYesNo, „Power BI Datei öffnen?“) = vbNo Then

            Exit Sub

            Else: Call Open_PBIX

                Application.Wait (Now + TimeValue(„0:00:10“))

            End If

   End If

’notwendige Abfragen aktualisieren

Abfragen_starten:

On Error GoTo ErrHandler

    ActiveWorkbook.Connections(„Abfrage – Tabellen“).Refresh           ‚Teil Abfrage – “ muss unbedingt vermerkt sein!

    ActiveWorkbook.Connections(„Abfrage – Memory Usage Tabellen“).Refresh           ‚Teil Abfrage – “ muss unbedingt vermerkt sein!

    ActiveWorkbook.Connections(„Abfrage – Tabellenliste“).Refresh           ‚Teil Abfrage – “ muss unbedingt vermerkt sein!

    ActiveWorkbook.Connections(„Abfrage – Liste nicht geladene Queries“).Refresh           ‚Teil Abfrage – “ muss unbedingt vermerkt sein!

    ActiveWorkbook.Connections(„Abfrage – Abfragen – nicht geladen“).Refresh           ‚Teil Abfrage – “ muss unbedingt vermerkt sein!

  Call Listen_befuellen

ErrHandler:

    ‚Fehler No. 1004 abfangen

    If Err = 1004 Then

        If MsgBox(„Soll der Prozess abgebrochen werden?“, vbYesNo, „Bitte Identifikation vornehmen“) = vbYes Then

            Exit Sub

        ’sonst Abfrage wieder aufnehmen

            Else: Resume Abfragen_starten

        End If

    End If

End Sub

Gruss Hp

Menschen, die mich vor 9 Uhr fragen, wie es mir geht, schauen auch mit dem Streichholz nach, ob noch Benzin im Tank ist.

Na, ein bisschen mehr Mühe hätte sich VBA schon geben können:

Anwendungs- oder objektorientierter Fehler. Na toll! Und wo? Und was?

Der Debugger hilft: die Berechnung Row – 8 ergibt einen falschen, nämlich negativen Wert (falsch gerechnet; nicht aufgepasst!) – so kann die Zelle „C-1“ nicht ermittelt werden.

Auch hier: Typen unverträglich!

Ey, VBA: sag mir doch deutlich, dass ich Dumpfbacke bei der Funktion MATCH (VERGLEICH) die beiden Parameter vertauscht habe. Während die Funktion der Zeile darüber (COUNTIF, ZÄHLENWENN) die Parameter ich suche wo wen verlangt, ermittelt MATCH / VERGLEICH: ich suche wen wo. Und keiner hilft mir! *lach*

Weltmacht mit drei Buchtstaben? ICH!

Ich habe für eine Firma ein kleines Add-In geschrieben: Daten werden von A nach B übertragen und andere Daten zurück von B nach A. Um die korrekten Daten zu ermitteln verwende ich die Formeln – man kann es mit SVERWEIS machen – ich habe mich für die flexiblere Variante INDEX und VERGLEIC entschieden. Diese Formel wird in den Bereich eingefügt, der Bereich wird kopiert und als Werte wieder eingefügt:

On Error Resume Next
[...]
xlBereich.Copy
xlBereich.PasteSpecial Paste:=xlPasteValues

Das Programm läuft. Nach einigen Tagen erhalte ich einen Anruf:ein Fehler ist aufgetreten. Ich schaue es mir an. Sie Anwenderinnen haben auf den Bereich einen Filter gesetzt und gefiltert! Klaro – nun kann mein Makro nicht mehr die Inhalte als Werte einfügen:

Also überprüfe ich, ob ein Filter eingeschaltet ist. Wenn ja – dann wird er ausgeschaltet. Und schon kann das Programm wieder sauber die Daten übertragen …

Heute widme ich mich Bauch, Beinen un Po. Mit einer Tafel Schokolade.

Zwei Stunden hat mich das Problem gekostet.

Eine „Monsterdatei“: 35 MByte, 18 Tabellenblätter, mehrere davon gefüllt mit bis zu 500.000 Datensätzen, 1.300.000 Formeln, mehrere Millionen gefüllte Zellen. Inquire hilft bei der Analyse der Datei, rechnet allerdings selbst sehr lange:

Ich suche einen Fehler. Zwei Stunden lang. Bis ich ihn finde:

Boah!!!

Endlich hat mein Leben wieder Gin

Excel-VBA-Schulung: Fünf Minuten nach Beginn. Wir schreiben unser erstes Hello-World-Programm. Ein Teilnehmer drückt aus Versehen die Enter-Taste:

Und fragt erstaunt: „muss ich das Programm kompilieren, bevor es läuft?“

Er hat recht: der Begriff „Kompilieren“ ist schlecht gewählt für die Titelzeile des Meldungsfensters.

Sofort schalten wir die „automatische Syntaxüberprüfung“ aus, deren Begriff ebenfalls schlecht gewählt ist.

Nett kann ich auch – bringt aber nix!

Microsoft hat in Excel 2013 das Analysewerkzeug „Inquire“ eingeführt, das in Excel 2016 nicht geändert wurde. Damit erspart man sich die umständlich Suche, ob es Verknüpfungen, ausgeblendete Zeilen, Spalten, Blätter gibt, ob Zahlen als Text formatiert wurden, wo Formeln stecken, die einen Fehler liefern, wo Zirkelbezüge zu finden sind, …

Inquire

Inquire

Damit ist Microsoft auf dem richtigen Weg. Für alle, die fremde Dateien analysieren möchten („Was hat der Kollege denn da gemacht?“) oder die zwei Dateien miteinander vergleichen möchten – ein richtiger Schritt in die richtige Richtung. Jedoch mir fehlen:

  • eine Anzeige für „Genauigkeit wie anzeigen“
  • Überhaupt einige Optionen, die Anwender zur Verzweiflung bringen können: „in Zellen mit Nullwerten eine Null anzeigen“, „anstelle der berechneten Werte Formeln anzeigen“, „Dezimalkomma automatisch einfügen“, „1904-Datumswert, „Iterative Berechnung aktivieren“, „manuelle Arbeitsmappenberechnung“ und einige andere hübsche Optionen
  • ausgeblendete Zeilen und Spalten zu finden ist klasse – was aber, wenn die Zeilenhöhe auf 0,1 pt gesetzt wurde?
  • zu schmale Spalten – Zahlen werden mit dem Zahlenzeichen ########## dargestellt.
  • zu viele oder widersprüchliche bedingte Formatierungen
  • Rundungsfehler bei Zahlenformaten
  • Unsinnige Zahlenformate (beispielsweise 0,0 „%“). Allerdings: Wer entscheidet, was unsinnig ist?
  • Zahlenformate wie ;;
  • Zellen mit Leerzeichen
  • Zellen, die Text enthalten mit einem Leerzeichen am Ende: „Rene Martin“ ist etwas anderes als „Rene Martin „
  • Und schließlich: Objekte: Diagramme, die auf ein Pixel verkleinert wurden, Bilder, die auf Zellen liegen und so aussehen, als wären es Elemente der Zelle oder auch weiße Rechtecke, die auf einer Zelle liegen:

Wird leider nicht vom Inquire gefunden

Wird leider nicht vom Inquire gefunden – unter dem Rechteck befindet sich die Zahl 3000

Fazit: Guter Ansatz, muss jedoch erweitert werden. Wenn Microsoft mich fragen würde – ich könnte Ihnen viele Dinge nennen, die Anwendern Probleme verursachen.

Und: ein dankeschön an Stefan, der mir geholfen hat, das Teilchen auseinanderzunehmen.

Es wird einmal ein Wunder gescheh’n …

Hallo Herr Martin,

ich habe heute das Datum im Kalkulation geändert, das heißt das Monat Dezember gelangt in einer andere Zelle. Und nun funktioniert plötzlich die bedingte Formatierung.

Ich wollte Ihnen nur Bescheid sagen.

Viele Grüße

E. P.

#####

Müssen wir das verstehen, Frau P.?

Ich habe heute in einer Excel-Schulung eine Liste der Monatsnamen eingetragen:

April

Mai

Juni

Juli

August

September

und habe dann „A“ getippt“, um zu zeigen, dass man einen eindeutigen Text eintragen muss – Excel hat mir „August“ vorgeschlagen. Ich habe auch nicht verstanden warum August – denn der April beginnt auch mit „A“. Schulterzucken, schmunzeln und zur Tagesordnung übergehen.

Ich liebe Excel – aber manchmal erstaunt es mich …

schöne Grüße

Rene Martin

Autovervollständigen

Autovervollständigen

 

 

Was denn Excel zusammengefügt hat, soll ein Mensch nicht scheiden.

Hallo. Ich brauche einen Tipp. Ich erhalten einige Male im Jahr eine Tabelle mit vielen Zahlen. Da die Zeilen keine eindeutige ID haben, habe ich mit der Funktion VERKETTEN mehrere Felder konkateniert (zusammengefasst), so dass ich eine ziemlich eindeutige ID habe. Ich wollte diese Formel weiter runterziehen, weil sich die Liste ab und zu erweitert. Jedoch – Excel zeigt in den leeren Zeilen Fehler. Das verstehe ich nicht: leer & leer & leer müsste doch leer sein, oder?

VERKETTEN - klappt gut, aber irgendwann mit Fehler

VERKETTEN – klappt gut, aber irgendwann mit Fehler

Die Antwort: Sie haben die Tabelle in eine „intelligente Tabelle“ verwandelt (Einfügen / Tabellen / Tabelle). Die Formel in der Zelle lautet:

=VERKETTEN(Tabelle1[@ProdH];Tabelle1[@[BG Cd]];Tabelle1[@[BD / BU]];Tabelle1[@[Main Hier. Name]];Tabelle1[@[Sold-to party]];Tabelle1[@[MAT15 Nbr]];Tabelle1[@[DQ Conf]])

also: Tabellenname Tabelle1[Spaltenname]. Das impliziert: gleiche Zeile wie Formelzelle.

Allerdings befindet sich keine Tabelle neben den neuen Zellen unterhalb der Tabelle. Wenn es Sie stört, können Sie um die Funktion die Formel WENNFEHLER bauen, also:

=WENNFEHLER(VERKETTEN(Tabelle1[@ProdH];Tabelle1[@[BG Cd]];Tabelle1[@[BD / BU]];Tabelle1[@[Main Hier. Name]];Tabelle1[@[Sold-to party]];Tabelle1[@[MAT15 Nbr]];Tabelle1[@[DQ Conf]]);““)

Oder Sie schreiben den Zellbezug „per Hand“ in die Formel:

=VERKETTEN(B1;C1;D1;G1;J1;L1;T1)

Dann erhalten Sie auch keine Fehler.

Ich finde den Fehler nicht – aber ich habe doch alles richtig gemacht!

Hallo Herr Martin,

ich habe die Formel abgeschrieben, die Sie in Ihren Buch veröffentlicht haben. Ich wollte aus einer Entfernungsliste die Distanz zweier Orte ermitteln. Aber es klappt einfach nicht!

Ist da ein Fehler in der Formel?

Es ist doch alles richtig, oder?

Es ist doch alles richtig, oder?

Die Antwort: Sie müssen ganz genau hinschauen. Wahrscheinlich sind Sie beim Abtippen der Formel eine Taste zu weit nach links gerutscht und haben fälschlicherweise statt eines $-Zeichens ein %-Zeichen getippt. Excel quittiert das mit einem Fehler!

Die Ursache

Die Ursache