Excel und Visual Basic

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Hallo,

gibt es hier jemanden, der ein gutes Forum zu Excel in Verbindung mit Visual Basic kennt?

Visual Basic ist schon frustrierend. Ich habe Zeit- und Datumsangaben in Greenwich-Time und muss sie in lokale, deutsche Zeit umrechnen - unter Berücksichtigung der Sommerzeit. Alle Lösungen, die ich gefunden habe, funzen nicht richtig.

Für Tipps wäre ich dankbar.
 

Marsu65

ww-esche
Registriert
16. Januar 2011
Beiträge
577
Ort
Ruhr
Hallo @odul,
nur grob getestet, sollte aber funktionieren
Die beiden Funktionen:
Public Function GMT_MEZ(dt As Date) As Date
Dim offset As Integer '+1 oder +2 Stunden
If dt >= Zeitumstellung(Year(dt), 3) And dt < Zeitumstellung(Year(dt), 10) Then
offset = 2 'MESZ
Else
offset = 1 'MEZ
End If
GMT_MEZ = DateAdd("h", offset, dt)
End Function


Function Zeitumstellung(y As Integer, m As Integer) As Date
Dim wd As Integer, ldm As Date, Timechange As Integer
Select Case m
Case 3: Timechange = 2
Case 10: Timechange = 3
End Select
ldm = DateSerial(y, m, 31)
wd = Weekday(ldm, vbSunday) - 1
Zeitumstellung = ldm - wd + TimeSerial(Timechange, 0, 0)
End Function


In ein allgemeines Excel-Modul (NICHT in ein Tabellen-Modul, NICHT in einem Klassenmodul, NICHT in einem Userform-Modul)
einfügen.

Wenn dann in einem Tabellenblatt im Feld A1 ein entsprechender Datumswert steht, kannst du z.B. im Feld B1
=GMT_MEZ(A1)
einfügen.
Beide Spalten -A und B- als Datum formatieren.
Gruß Marsu
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Hallo @odul,
nur grob getestet, sollte aber funktionieren
Die beiden Funktionen:
Public Function GMT_MEZ(dt As Date) As Date
Dim offset As Integer '+1 oder +2 Stunden
If dt >= Zeitumstellung(Year(dt), 3) And dt < Zeitumstellung(Year(dt), 10) Then
offset = 2 'MESZ
Else
offset = 1 'MEZ
End If
GMT_MEZ = DateAdd("h", offset, dt)
End Function


Function Zeitumstellung(y As Integer, m As Integer) As Date
Dim wd As Integer, ldm As Date, Timechange As Integer
Select Case m
Case 3: Timechange = 2
Case 10: Timechange = 3
End Select
ldm = DateSerial(y, m, 31)
wd = Weekday(ldm, vbSunday) - 1
Zeitumstellung = ldm - wd + TimeSerial(Timechange, 0, 0)
End Function


In ein allgemeines Excel-Modul (NICHT in ein Tabellen-Modul, NICHT in einem Klassenmodul, NICHT in einem Userform-Modul)
einfügen.

Wenn dann in einem Tabellenblatt im Feld A1 ein entsprechender Datumswert steht, kannst du z.B. im Feld B1
=GMT_MEZ(A1)
einfügen.
Beide Spalten -A und B- als Datum formatieren.
Gruß Marsu


Hallo Marsu,

Danke für deine großzügige Unterstützung. Habe das mal eingebaut und das sieht erst mal gut aus. Die generischen Lösungen aus dem Netz kamen alle nicht mit der Sommerzeit klar.

:emoji_slight_smile: :emoji_slight_smile:
 
Zuletzt bearbeitet:

Komihaxu

ww-robinie
Registriert
18. Februar 2014
Beiträge
3.536
Ort
Oberfranken
Hallo!
Liest du die Daten von externen Quellen ein?
Dann solltest du dir mal "Power Query" ansehen. Damit kannst du beim Einlesen das Datumsformat gleich ins richtige Format ändern lassen:

Ob das mit der Sommerzeit auch gleich berücksichtigt wird, weiß ich allerdings nicht.
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Du rechnest die GMT-Zeit auf die Ortszeit um und überprüfst dann noch, ob Sommer- oder Winterzeit ist.

Sofern Du das nicht ständig beim Öffnen der Dateien automatisch machen musst, geht es ohne VBA recht einfach.

Hallo,

Ich hätte halt gerne eine Lösung gehabt, die das System zur Verfügung stellt. Für Deutschland und Termine seit Einführung der Sommerzeit sicher kein Problem. Eine generelle und internationale Lösung selbst zu schreiben, ist dann schon eine andere Nummer. Hinzu kommt, dass man ja über eine Änderung der Sommerzeit nachdenkt. Dann muss der selbst geschriebene Code nachgebessert werden. Benutzt man Systemaufrufe, so hat man gute Chancen, dass zukünftige System-Updates das für einen erledigen.
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Mit VB, meinst du da das alte VB6?
Da gibt es die Seite activevb.de und vb-paradise.de die ich empfehlen kann.
Aber wieso frustrierend? Ich hab immer gerne mit VB6 gearbeitet, meist com-komponenten (ActiveX) entwickelt.

Für Excel entweder office-loesung.de oder ms-office-forum.net

Gruß Andreas

Genau genommen meine ich VBA in Excel 2007. Ich habe mich immer über diese beweglichen Feste geärgert (Weinfest am 2.Sonntag im Juli z.B.). Also habe ich mir da vor Jahren mal einen Jahreskalender gestrickt, in dem man solche beweglichen Termine einfach erfassen kann und für jedes Kalenderjahr korrekt in den Jahreskalender eingetragen werden. Dann kamen Geburtstage hinzu. Und die Möglichkeit die Termine im ical-Format zu exportieren. Derzeit stricke ich an einem Import. Und da wird öfters GMT verwendet...
 

KalterBach

ww-robinie
Registriert
1. Oktober 2017
Beiträge
5.231
Ort
Markgräflerland
Hallo,

Ich hätte halt gerne eine Lösung gehabt, die das System zur Verfügung stellt. Für Deutschland und Termine seit Einführung der Sommerzeit sicher kein Problem. Eine generelle und internationale Lösung selbst zu schreiben, ist dann schon eine andere Nummer. Hinzu kommt, dass man ja über eine Änderung der Sommerzeit nachdenkt. Dann muss der selbst geschriebene Code nachgebessert werden. Benutzt man Systemaufrufe, so hat man gute Chancen, dass zukünftige System-Updates das für einen erledigen.

Das kann ich gut nachvollziehen. Ich kenne das aus dem beruflichen Umfeld so, dass man oft den Weg des geringsten Aufwands geht. Und das ist oftmals auf der niedrigsten Ebene ohne Sonderfallbehandlung und „Intelligenz“.
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Hallo!
Liest du die Daten von externen Quellen ein?
Dann solltest du dir mal "Power Query" ansehen. Damit kannst du beim Einlesen das Datumsformat gleich ins richtige Format ändern lassen:

Ob das mit der Sommerzeit auch gleich berücksichtigt wird, weiß ich allerdings nicht.

wie ich gerade im vorigen Post erklärt habe: ja. Ich lese ics-Dateien ein. Übrigens hat mich das auch kirre gemacht. Die sind in UTF8. Da musste ich VBA ganz schön auf die Sprünge helfen...
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Mit VB, meinst du da das alte VB6?
Da gibt es die Seite activevb.de und vb-paradise.de die ich empfehlen kann.
Aber wieso frustrierend? Ich hab immer gerne mit VB6 gearbeitet, meist com-komponenten (ActiveX) entwickelt.

Für Excel entweder office-loesung.de oder ms-office-forum.net

Gruß Andreas

office-loesung.de ist seit 2014 tot. D.h. es ist noch da, aber man kann nichts mehr posten :emoji_frowning2:
Die anderen Foren habe ich mal reingeschaut. Die sind anscheinend nur mäßig frequentiert.


Zum Thema Frustration:
VBA ist einfach eine lausig schlecht strukturierte Programmiersprache. Und auch an der Entwicklungsumgebung hat M$ in den letzten 20jahre kein Handschlag gemacht. Wenn dann die Tabellen in Excel noch etwas größer werden, dann kommen noch Abstürze hinzu. Kenne stabilere Entwicklungsumgebungen.

Gibt es eigentlich irgendeine Alternative, um programmierte Erweiterungen in Excel zu codieren?
 

KalterBach

ww-robinie
Registriert
1. Oktober 2017
Beiträge
5.231
Ort
Markgräflerland

Hondo6566

ww-robinie
Registriert
27. April 2017
Beiträge
3.822
Ort
Ortenaukreis
Verwechselt nicht VBA mit VB, das sind zwei total unterschiedliche Sprachen.
Als ich noch mein Geld mit VB und VBA Entwicklung verdient hatte war ich ziemlich tief in beiden Sprachen drin, und ich kann dein Vorwurf dass VBA schlecht strukturiert ist nicht teilen.
Das liegt ganz am Entwickler, ob er strukturiert mit Klassen und Objekten arbeitet oder nicht. Auch VBA ist eine Sprache mit der man objektorientiert Entwickeln kann.
Office-loesung.de ist nicht tot, nur das ursprüngliche Forum. Hier gehts weiter: http://www.office-loesung.de/p/
Gruß Andreas
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Verwechselt nicht VBA mit VB, das sind zwei total unterschiedliche Sprachen.
Als ich noch mein Geld mit VB und VBA Entwicklung verdient hatte war ich ziemlich tief in beiden Sprachen drin, und ich kann dein Vorwurf dass VBA schlecht strukturiert ist nicht teilen.
Das liegt ganz am Entwickler, ob er strukturiert mit Klassen und Objekten arbeitet oder nicht. Auch VBA ist eine Sprache mit der man objektorientiert Entwickeln kann.

Ich habe den Tab als noch offen stehen lassen, weil ich dazu noch antworten wollte.

In alle Programmiersprachen kann man im Rahmen ihrer Möglichkeiten strukturiert programmieren. Wohlgemerkt im Rahmen ihrer Möglichkeiten. Die sind zugegebenermaßen SEHR unterschiedlich. Mit Klassen und Objekten bietet da auch VBA einiges. Leider hilft auch die Programmiersprache mit den besten Möglichkeiten nicht, wenn das Problem vor dem Computer sitzt. Gerade die mächtigeren Programmiersprachen bieten auch perfekte Möglichkeiten echt gruseligen und verworrenen Code zu schreiben.

Trotz dessen ist m.E. VBA mit Abstand die Programmiersprache die am wenigsten aus einem Guß ist. Es wimmelt nur so vor kleinen und feinen Unterschieden. Und man fällt immer wieder neu drauf rein. Ich bin da über eine Seite gestolpert, die heißt "excel-nervt.de" oder so ähnlich. Dem ist nichts mehr hinzuzufügen.
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Office-loesung.de ist nicht tot, nur das ursprüngliche Forum. Hier gehts weiter: http://www.office-loesung.de/p/
Gruß Andreas

Danke für den Tipp. Ich werd da mal intensiver reinschauen. Es ist allerdings verblüffend, dass anscheinend alle Suchmaschinen Treffer aus dem alten Forum zeigen, aber so gut wie nie aus dem neuen. Da nutzt es auch nix, in den Einstellungen nur nach Informationen aus dem letzten Jahr zu suchen. Es wird immer wieder dieser Gammel ausgegraben.
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Du kannst mit .NET (C#, VB (nicht VBA)) Office Addins entwickeln.
Die "hängen" dann allerdings in der Anwendung und nicht im Dokument.

Gruß
Stefan

Das hört sich mehr nach Bibliotheken an, die man erstellt und dann von VBA aus aufrufen kann? Oder kann man damit auch auf Zellinhalte zugreifen?
 

BnafetS

ww-eiche
Registriert
28. April 2016
Beiträge
332
Ort
Oberfranken
Das hört sich mehr nach Bibliotheken an, die man erstellt und dann von VBA aus aufrufen kann? Oder kann man damit auch auf Zellinhalte zugreifen?
Du kannst damit auf jede Zelle zugreifen und diese auslesen, oder bearbeiten. (Fast) Alles was über die Oberfläche möglich ist kannst du damit auch machen.
Geht auch in Word oder Outlook....
Ich hab damit unter anderem ein Addin programmiert, mit dem der Inhalt eines Excel-Sheets in eine SQL-Server Datenbank gespeichert werden kann.

Hier findest du mehr dazu:
https://docs.microsoft.com/de-de/vi...started-programming-vsto-add-ins?view=vs-2019
Gruß
Stefan
 

odul

ww-robinie
Registriert
5. Juni 2017
Beiträge
9.269
Ort
AZ MZ WO WI F
Du kannst damit auf jede Zelle zugreifen und diese auslesen, oder bearbeiten. (Fast) Alles was über die Oberfläche möglich ist kannst du damit auch machen.
Geht auch in Word oder Outlook....
Ich hab damit unter anderem ein Addin programmiert, mit dem der Inhalt eines Excel-Sheets in eine SQL-Server Datenbank gespeichert werden kann.

Hier findest du mehr dazu:
https://docs.microsoft.com/de-de/vi...started-programming-vsto-add-ins?view=vs-2019
Gruß
Stefan

Besten Dank für die Antwort. Sieht erst mal interessant aus. Wie ist das mit Visual Studio? Kann man mit der kostenlosen Version vernünftig arbeiten?
 

fahe

ww-robinie
Registriert
15. Juni 2011
Beiträge
8.290
Ort
Coswig
...VSTO gehören auch zu den vielen Säuen, die Microsoft seit Jahren als heißen Sche**ß durchs Dorf treibt, um alsbald wieder so zu tun, als könnten sie sich gar nicht erinnern, das je erwähnt zu haben. Die Innovationsschnelligkeit, die da bei MS mittlerweile das jahrelange Beharren auf uralten Zöpfen verdrängt, und die einem manchmal schon auf die E*er gehen kann, scheint gerade wieder kräftig Fahrt aufzunehmen.

Teams ist so ein Beispiel für Updates quasi im Tagestakt, die meist an der Optik spielen, Grundfunktionalitäten aber oft noch schlechter als besser machen. SQL-Servers Management Studio wird zwar nicht so oft geupdated, aber üble Bugs halten sich dort auch hartnäckig... zugunsten von Gimmicks in der UI. Und Visual Studio mitsamt seiner holprigen Ablösung des Teams Foundation Server durch Git, wird auch von Version zu Version eher schlechter...

Mit .NET Core und .NET 5+ wird Microsoft VSTO auch in die Halle der nicht weiter verfolgten Ansätze schieben. Ich würde da nicht allzu viel Lebensenergie reinstecken.

Die Abschiedrede findet sich hier...:emoji_wink:
https://docs.microsoft.com/en-us/vi...or-office-by-using-visual-studio?view=vs-2019
 
Oben Unten