Kategorie: Excel & VBA

Gleichzeitiges Anzeigen von zwei oder mehr Excel Arbeitsblättern

Gleichzeitiges Anzeigen von zwei oder mehr Excel Arbeitsblättern

Embedded Link

Gleichzeitiges Anzeigen von zwei oder mehr Arbeitsblättern – Excel – Office.com
Sie können zwei Arbeitsblätter in derselben Arbeitsmappe oder in zwei verschiedenen Arbeitsmappen schnell vergleichen, indem Sie diese nebeneinander anzeigen. Sie können auch

Google+: View post on Google+

Europameisterschaft 2012 in Excel

Europameisterschaft 2012 in Excel

Embedded Link

EM 2012 XXL für Excel
Mit "EM 2012 XXL" für Excel holen Sie sich ein Verwaltungs-Programm für die Fußball-Europameisterschaft samt Tippspiel und Datenbank auf Ihren Rechner.

Google+: View post on Google+

Variablen Syntax in SQL Strings unter VBA

SQL Statements werden unter VBA wahlweise gleich in einen String oder idealer, in einer String-Variable definiert.

Beispiel für ein SQL Statement in einer String-Variable:


Sub SQL_Beispiel()

Dim query1 As String

query1 = "Select Spalte from Tabelle
where
     Spalte3 = ZahlenWert
and
     Spalte2 ='StringWert'
and
     Spalte3 = 'DatumsWert' "

End Sub

Jetzt sollen die Werte für Tabellenname, Spalte, Spalte1, Spalte2 und Spalte3 durch Variablen ersetzt werden.


Sub SQL_Beispiel_mit_Variablen()

Dim query1 As String

query1 = "Select " + String-Spaltenname + "
from
      " + String-Tabellenname + "
where
      Spalte3 = " & ZahlWert & "
and
      Spalte2 ='" + StringWert + "'
and
      Spalte3 = '" & Datum & "' "

End Sub

Wenn wir jetzt genau hinschauen, gibt es Unterschiede in der Syntax bei den unterschiedlichen Variablentypen String, Integer und Date.

Zunächst zur Syntax von SQL. Innerhalb der Anführungszeichen der VBA Stringvariable gilt die Syntax von SQL ANSI.

String- (VarChar)  Und Datums-Werte(Date)  werden in der SQL Syntax in einfachen Anführungszeichen gesetzt.  Zahlen-Werte( Number) ohne Anführungszeichen. Damit VBA Variablen innerhalb der SQl Syntax genutzt werden können, muss der Code gesplittet werden. D.h. der VBA String muss unterbrochen und fortgesetzt werden. Die geschieht wie üblich bei VBA mit Hilfe der doppelten Anführungszeichen. Schauen wir uns den Zahlenwert nach dem where Operator an. Mit einem doppelten Anführungszeichen wird der VBA String beendet und hier beginnt wieder die VBA Syntax.

Wenn wir nun eine Integer Variable verwenden wollen, müssen wir als Verknüpfungsoperator das & Zeichen wählen. Dann setzen  wir nach der Integer Variable wieder den Verknüpfungsoperator &. Jetzt  beginnen wir wieder mit dem VBA String mit seinem darin liegenden SQL Statement mit einem doppelten Anführungszeichen und setzen diesen fort.

Nun kommen wir an der Stelle an, an der wir eine Stringvariable für den Wert der Splate2 nutzen möchten. Es wird wieder der String mit einem doppelten Anführungszeichen beendet und die VBA Syntax beginnt. Wir müssen dabei beachten, das wir erst nach dem ersten einfachen Anführungszeichen den String beenden. Bei Stringvariablen muss als Verknüpfungsoperator das + Zeichen verwendet werden. Anschließend beginnen wir wieder mit einem doppelten Anführungszeichen den String. Wenn wir an der  Stelle für den Datums-Wert gelangt sind, beenden wir erneut mit dem doppelten Anführungszeichen den String und halten uns an der VBA Syntax.

Hier gilt eine Besonderheit zu beachten.

Datums-Werte werden unter SQL wie ein String behandelt, also in einfachen Anführungszeichen. Unsere Logik nach sollten wir dann wie bei einer String Variablen unter VBA das + Zeichen als Verknüpfungsoperator verwenden.

Dies ist dem nicht so, denn eine Datum-Variable wird unter VBA mit dem Verknüpfungsoperator & wie eine Integer Variable behandelt.  Deswegen gilt die Syntax ‚ “ & Datums-Variable & “ ‚!

Excel Statistik vs. Oracle SQL Statistik

Berechnung der Standardabweichung ausgehend von der Grundgesamtheit.

In Mircrosoft Excle wird dafür die Funktion

STABWN(Zahl1; Zahl2;…)

genutzt.

Um die gleiche Funktion per SQL in Oracle auszuführen muß folgende Anweisung genutzt werden:

SELECT stddev_pop(Spalte) from Tabelle;

Schätzung der Standardabweichung ausgehend von einer Stichprobe.

In Mircrosoft Excle wird dafür die Funktion

STABW(Zahl1; Zahl2;…)

genutzt.

Um die gleiche Funktion per SQL in Oracle auszuführen muß folgende Anweisung genutzt werden:

SELECT stddev_samp(Spalte) from Tabelle;

oder

SELECT stddev(Spalte) from Tabelle;

Berechnung des Standardfehlers  einer  Schätzfunktion  für einen unbekannten Parameter  der Grundgesamtheit.

In Mircrosoft Excle wird die berechnung folgendermaßen durchgeführt:

STABW(Zahl1; Zahl2;…)/Wurzel(Anzahl(Zahl1; Zahl2;…)

Um die gleiche Funktion per SQL in Oracle auszuführen muß folgende Anweisung genutzt werden:

SELECT stddev(Spalte)/SQRT(Count(Spalte))  from Tabelle;

 

Zusammen mit meinem Kollegen und Freund Bernhard Liebenhoff erarbeitet.

Ländereinstellung in Excel & VBA > das leidige Punkt, Komma Problem

Regionale Einstellung

Regionale Einstellung

Zunächst: Vielen Dank gilt meinem Arbeitskollegen und Freund Bernhard Liebenhoff, der nach mühseliger Arbeit mit der Problemsuche und Problemlösung, mir diese Information dieser Funktion zur Verfügung gestellt hat.

Hin und wieder wird man mit dem Punkt, Komma Problem und der Ländereinstellung in Microsoft Windows und Microsoft Office konfrontiert.

Im folgenden Beispiel trat der Fehler mit einem englischen Windows XP und Windows 7 mit  deutschem Sprachpaket, Regions- und Sprachoption in der unter Regionale Einstellung > Deutsch > Anpassen > als Dezimaltrennzeichen Punkt eingestellt wurde.

Normalerweise ist in der deutschen Einstellung an dieser Stelle ein Komma als Dezimaltrennzeichen definiet.

Wird aber auf diesem „deutschem“ System mit englischer Software gearbeitet und dann noch mit dem Nummerblock,  stellt man das Komma auf der Tastatur als Punkt ein.

Denn im englischen werden bekannterweise Dezimalzahlen mit Punkt statt mit Komma geschrieben.

Wenn man jetzt eine VBA Applikation erstellt die mit Dezimalzahlen arbeitet und diese Applikation auch auf anderen Rechnern nutzen möchte, bei der das Komma nicht als Punkt für die Tastatur eingestellt wurde, trifft man auf ein folgend schweres Problem.

Regionale Einstellung anpassen > Dezimaltrennzeichen

Regionale Einstellung anpassen > Dezimaltrennzeichen

Wenn in einer Userform eine Deziamlzahl in deutscher Schreibweise eingegeben wird, wird mit dieser Zahl nicht korrekt gerechnet, da VBA im Hintergrund diese Zahl nicht als Dezimalzahl, sondern als „Tausender Zahl“ erkennt. Denn im englischen gilt ein Komma als Tausender-Trennzeichen.

Nun könnte ganz einfach auf die Replace Funktion unter VBA zurückgegriffen werden, die das Komma durch einen Punkt ersetzt. Das funktioniert aber nur dann, wenn man eine Komma als Dezimaltrennzeichen unter den regionalen Einstellungen definiert hat. Wenn man das Trennzeichen in der Region Deutsch als Punkt definiert hat, kommt die Replace Funktion damit nicht zurecht.

Um nun schlußendlich herauszufinden, welches Trennzeichen auf dem jeweiligen PC eingestellt ist, kann man sich mit der Funktion


Application.International(xlDecimalSeparator)

Abhilfe schaffen.

Diese Funktion ließt die atkuelle Einstellung aus,  mit der man dann weiter arbeiten kann:


If  Application.International(xlDecimalSeparator) = "." Then
     Userform.Controls("TextBox" & 1).Value =  Replace(Userform.Controls("TextBox" & 1).Value, ",", ".")
End If

Excel VBA Userform zentrieren oder im Fullscreen

Um eine Userform in Microsoft Excel VBA zu zentrieren, muß folgender Code in die Prozedur Userform_activate() eingegeben werden:


Private Sub UserForm_activate()
    Me.Left = (Application.Width - Me.Width) / 2
    Me.Top = (Application.Height - Me.Height) / 2
End Sub

Um eine Userform in Microsoft Excel VBA im Vollbildmodus / Fullscreen darstellen zu können, muß folgender Code in die Prozedur Userform_activate() eingegeben werden:


Private Sub UserForm_activate()
     Me.Height = Application.Height
     Me.Width = Application.Width
End Sub

Hierbei wird automatsich die Größe bzw. Auflösung des Monitors berücksichtigt.

Dynamischer Bereich in Excel

Angenommen, wir möchten die Summe von Werten in Spalte A ermitteln, müssen wir den Bereich der Werte definieren. Wenn nun aber ein weitere Wert zu einem späteren Zeitpunkt hinzugefügt werden soll, muss der Bereich erneut definiert werden. Das kann unter Umständen sehr umständlich sein. Um dieses statische Problem zu umgehen, wird der Bereich dynamisch definiert. Das heißt, das jeder weitere Wert den wir in die Spalte A hinzufügen automatisch in die Berechnung berücksichtigt wird. Die funktioniert nur so lange, wie die Werte lückenlos untereinnder hinzugefügt werden, läßt man eine Zelle leer, endet dort der dynamische Bereich.

Zunächst der herkömmliche statische Code:

=SUM(A2:A7)

Hier der dynamischer Code:

=SUM(OFFSET($A$2,0,0,COUNTA(A:A)))

Präsentiert von WordPress & Theme erstellt von Anders Norén