Wie kann ich eine Arbeitsmappe anlegen und im Klassenmodul der Arbeitsmappe eine Workbook_Open-Prozedur schreiben?
Der folgende Code legt eine neue Arbeitsmappe an und erstellt im Klassenmodul der Arbeitsmappe eine kleine VBA-Routine.
Sub OpenProzedurAnlegen()
Dim nWB As Workbook
Dim mdlWB As Object
Set nWB = Workbooks.Add
Set mdlWB = nWB.VBProject.VBComponents("DieseArbeitsmappe")
With mdlWB.CodeModule
.InsertLines 3, "Private Sub Workbook_Open()"
.InsertLines 4, " Msgbox ""Bin jetzt da!"""
.InsertLines 5, "End Sub"
End With
End Sub
Falls die Meldung Der programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher erscheint, müssen folgende Einstellungen vorgenommen werden:
Wie kann ich ein neues Blatt einfügen? Dabei soll überprüft werden, ob ein Blatt mit dem Namen schon existiert und der linke und rechte Seitenrand auf einen Zentimeter festgelegt werden.
In eine Inputbox kann der Name des zu erzeugenden Blattes eingetragen werden. Anschlie�end wird mit einer Schleife geprüft, ob der Name schon vergeben ist. Wenn nicht, wird das Blatt eingefügt und die Seitenränder werden festgelegt.
Sub Blatterstellen()
Dim wksBlatt As Object
Dim strNeu As String
strNeu = InputBox("Bitte Namen des neuen Arbeitsblattes eingeben:")
For Each wksBlatt In ActiveWorkbook.Sheets
If wksBlatt.Name = strNeu Then
MsgBox "Blattname existiert bereits!", vbOKOnly + vbExclamation, "Blatt hinzufügen"
Exit Sub
End If
Next
Sheets.Add
ActiveSheet.Name = strNeu
With Sheets(strNeu).PageSetup
.LeftMargin = Application.CentimetersToPoints(1)
.RightMargin = Application.CentimetersToPoints(1)
End With
End Sub
Eine andere Möglichkeit, bei der auch gleich festgelegt wird, wo das Blatt eingefügt werden soll:
Sub Blatterstellen1()
Dim wksBlatt As Object
Dim strNeu As String
strNeu = InputBox("Bitte Namen des neuen Arbeitsblattes eingeben:")
For Each wksBlatt In ActiveWorkbook.Sheets
If wksBlatt.Name = strNeu Then
MsgBox "Blattname existiert bereits!", vbOKOnly + vbExclamation, "Blatt hinzufügen"
Exit Sub
End If
Next
Set wksBlatt = Sheets.Add(before:=Sheets(1))
wksBlatt.Name = strNeu
With wksBlatt.PageSetup
.LeftMargin = Application.CentimetersToPoints(1)
.RightMargin = Application.CentimetersToPoints(1)
End With
End Sub
Wie kann man per Makro den Code ändern?
Im Modul2 soll die Zeile Windows("Formulare").Activate ersetzt werden durch Windows("Formulare.xlsx").Activate.
Im Modul2 soll die Zeile Windows("Formulare").Activate ersetzt werden durch Windows("Formulare.xls").Activate.
Sub ZeileInCodeErsetzen()
Dim strSuchtext As String, strNeuertext As String
Dim intI As Integer
strSuchtext = "Windows(" & """" & "Formulare" & """" & ").Activate"
strNeuertext = "Windows(" & """" & "Formulare.xlsx" & """" & ").Activate"
'Jede Zeile in Modul2 wird durchsucht:
With ActiveWorkbook.VBProject.VBComponents("Modul2").CodeModule
For intI = 1 To .CountOfLines
'Wenn die Zeile gleich dem Suchtext ist, ...
If .Lines(intI, 1) = strSuchtext Then
'... Zeile löschen:
.DeleteLines intI
'... neue Zeile einfügen:
.InsertLines intI, strNeuertext
End If
Next
End With
End Sub
Falls die Meldung Der programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher erscheint, müssen folgende Einstellungen vorgenommen werden:
Wie kann ich aus Excel heraus schnell Informationen und Daten mit anderen Excel-Usern austauschen?
Excel-Kommunikator: Chat und E-Mail per Excel
Das Add-In ist der Nachfolger des Mail-Add-Ins, an dem immer wieder Interesse bestand. Allerdings war es mit der Zeit veraltet, so dass eine komplette Neuentwicklung langsam überfällig war. Das hier vorgestellte Add-In sollte ab der Version 2007 funktionieren - Nutzer des alten Add-Ins finden hier nur eine andere (und umfangreichere) Bedienung; die alten Daten können mit der gleichen Syntax übernommen werden.
Mit diesem Chat- und Mail-Add-In ist es möglich, Gespräche zu führen, Bereiche aus Exceltabellen auszutauschen und Mails mit Anhängen zu senden.
Es ist also ein schneller Informationsaustausch gewährleistet, ohne zu einem anderen Programm wechseln zu müssen. Der Austausch erfolgt dabei überwiegend im Menüband in eigenen Ribbon-Tabs. Bei den Informationen kann es sich um einfache Postings handeln, um Inhalte von Zellen oder Bereichen (Werte oder Formeln) oder um Mails mit Anhängen. So ist es zum Beispiel möglich, die aktuelle Mappe per Mausklick an mehrere Empfänger zu senden oder Tabellenbereiche an andere Nutzer zu übermitteln.
Basis ist ein eigener Nick, der frei gewählt werden kann, jedoch insgesamt nur einmal vorkommen darf. Nach Gro�-/Kleinschreibung wird dabei unterschieden. Dieser Nick muss einmalig im System registriert werden, danach erfolgt die Kommunikation pro Add-In immer mit diesem Nick. Jeder Teilnehmer sieht Sie dann also unter diesem Namen. Die Absenderangaben bei Mails können natürlich unabhängig davon verwendet werden, so dass ein Empfänger Ihren richtigen Namen sieht, wenn Sie diesen beim Mailversand angeben.
Chat
Eigener Nickname
Mit diesem sind Sie überall sichtbar. Eintragen, Frage nach Registrierung mit »Ja« beantworten, fertig. Pro Add-In wird ein Name vergeben; Sie können also die Add-In-Datei auch an einem anderen Arbeitsplatz verwenden.
Gruppen
Sie haben die Möglichkeit, sich in verschiedenen Gruppen zu unterhalten. Die Gruppe »offen« ist voreingetragen, hier kann jeder ohne Kennwort lesen und schreiben.
Möchten Sie eine Gruppe hinzufügen, klicken Sie auf »Gruppe hinzufügen« und tragen Sie anschlie�end im Dialog den gewünschten Gruppennamen ein. Hier gibt es zwei Möglichkeiten:
Existiert der Gruppenname bereits, können Sie das Kennwort eintragen und so der Gruppe beitreten.
Existiert der Gruppenname noch nicht, können Sie ein Kennwort vergeben und so Ihre eigene Gruppe erstellen. Den Namen und das Kennwort können Sie dann ausgewählten Personen geben, damit diese auf diesem Weg dieser Gruppe beitreten können. So können Sie sich mit einem begrenzten Personenkreis unterhalten, zum Beispiel einer Mitarbeitergruppe.
Im Gruppe-Auswahlfeld wählen Sie ganz einfach, welche Postings Sie lesen und wo Sie schreiben möchten.
Posten und Listenanzeige
Ihren Text geben Sie nach der Wahl der gewünschten Gruppe einfach in »Ihre Msg« ein und senden ihn mit »Enter« ab. In der Liste »Msgs« sehen Sie die aktuellen Beiträge chronologisch rückwärts, also den aktuellsten Beitrag ganz oben.
Zellen und Bereiche posten
Sie können nicht nur eigene Postings schreiben, sondern auch Inhalte aus der Tabelle posten.
Was dabei übermittelt wird, hängt vom Kästchen »Formel« ab - ist es deaktiviert, werden die Werte der Zellen übermittelt (im Beispiel â??-06:30â??), sonst die Formeln, falls welche eingetragen sind (sonst auch die Werte).
Klicken Sie auf »Zelle posten«, wenn Sie den Inhalt der gerade aktiven Zelle posten möchten. Dieser erscheint dann wie gehabt in der Liste der Postings.
Markieren Sie einen Bereich und wählen Sie »Bereich posten«, wenn Sie einen kompletten Tabellenbereich übermitteln möchten. In diesem Fall erscheint in den Postings nicht der Inhalt des Bereiches, sondern der Hinweis, dass es sich um einen Tabellenbereich handelt und um welchen Bereich. Dies ist wichtig, um diesen Inhalt später wieder an der richtigen Stelle einfügen zu können.
Ausgaben
Postings können auch in Tabellen übernommen werden. Wichtig ist dafür, dass das gewünschte Posting in der Liste gewählt und der Zielbereich ab der aktiven Zelle frei ist - bereits vorhandene Zellinhalte werden sonst überschrieben.
Mit »Posting in Zelle« wird das gewählte Posting in die aktive Zelle eingetragen, wie es in der Liste zu sehen ist. Ausnahme ist dabei ein Tabellenbereich - handelt es sich beim gewählten Posting um einen solchen, wird der Bereich entsprechend des Quellbereiches ab der aktiven Zelle eingetragen. Sind Formeln enthalten, ist es sinnvoll, dass die aktive Zelle die ist, die im Beginn des Tabellenbereiches angegeben ist, damit die Bezüge in den Formeln stimmen. Im Beispiel aus dem Screenshot sollte also die aktive Zelle E1 sein, wenn das Posting mit dem Bereich eingefügt wird.
Formatierungen werden nicht übernommen, eingetragene Bereiche müssen also ggf. nachformatiert werden. Dies betrifft insbesondere Datums- und Zeitformate.
Mit »Postingliste in Tabelle« werden die Postings der gewählten Gruppe einfach in eine neu erstellte Tabelle eingetragen.
Neue Nachrichten
Aus Performancegründen werden neue Postings von anderen Nutzern nicht sofort angezeigt.
Die Aktualisierung der Beiträge in einer Gruppe erfolgt über den Button »Refresh«.
Sollen die Beiträge einer Gruppe automatisch aktualisiert werden, aktivieren Sie »Autofrefresh [an|aus]«. Damit werden die Beiträge alle 15 Sekunden abgerufen und in der Liste aktualisiert. Im Falle eines neuen Postings wird der Chat-Tab automatisch aktiviert und es erscheint ein Hinweissymbol »Neues Posting!«.
Haben Sie »Sprachnachricht« aktiviert, wird das neue Posting vorgelesen.
Mail
Voraussetzung für die Nutzung ist, dass in »Chat« der Nickname registriert wurde.
Absender
Die Absenderangaben werden einfach eingetragen und bleiben bis zur nächsten �nderung gespeichert. Da das Add-In keine Mails empfangen kann, sollte die Absenderadresse eine solche sein, an die der Empfänger antworten kann.
Empfänger
Zur Eingabe der Empfänger gibt es mehrere Möglichkeiten.
Die Mailadressen können direkt in das Eingabefeld eingetragen werden, mehrere durch Semikolon getrennt.
Im Bereich »Zusammenstellen« kann zwischen Add-In- und Outlookkontakten umgeschaltet werden. Im Anschluss wird der entsprechende Eintrag gewählt und mit »Zu Empfängern hinzufügen« in das Feld für die Empfänger übernommen.
Die Liste der Add-In-Kontakte wird über den kleinen Dialoglauncher unten rechts zur Bearbeitung aufgerufen.
Mailtext, Anhang
Mailtext und Anhang beim Versand einer externen Datei werden in den jeweiligen Dialogen eingegeben bzw. gewählt, die nach Klick auf »Mailtext« bzw. »Datei« erscheinen. Wichtig beim Versand des aktiven Blattes ist, dass das Add-In dort gespeichert ist, wohin das Add-In eine temporäre Datei speichern kann.
Die Dateigrö�e des Anhangs ist derzeit auf 500 KB begrenzt.
Versand
Mit Klick auf die entsprechende Schaltfläche erfolgt der Versand, bei Erfolg erscheint eine Meldung. Bei grö�eren Dateien kann dies natürlich auch einen Moment dauern.
Backup und Restore
Backup
Natürlich kann der Fall eintreten, dass das Add-In einmal neu installiert werden muss - sei es wegen eines Updates oder wegen eines Datenverlusts. Handelt es sich dann um eine neue Add-In-Datei, wäre der Nick nicht mehr zugänglich, weil ja u. a. die Daten dazu weg wären.
Für diesen Fall (und beabsichtigte Erweiterungen) ist es möglich, ein Backup auf dem Server zu erstellen. Dazu dient der Button »Sicherung«, der dann sichtbar ist, wenn ein Nick eingerichtet wurde. Damit werden alle Einstellungen des Add-Ins gesichert.
Beim ersten Erstellen eines Backups erhalten Sie ein Kennwort, das unbedingt aufbewahrt werden muss. Ansonsten können Sie nach Belieben Backups erstellen - einfach auf den Button klicken und bestätigen.
Restore
Bei einer leeren Add-In-Datei, wenn also noch kein Nick vergeben ist, ist der Button »Restore« statt des Buttons zur Sicherung sichtbar. Nach dem Anklicken erscheint ein Dialog zum Eingeben des Nicknamens und des Kennworts, das Sie beim ersten Erstellen vergeben haben. Stimmen diese Daten, werden die Daten aus dem letzten Backup in das Add-In eingetragen und es stehen alle Funktionen/Daten wie beim Zeitpunkt des Erstellens des Backups zur Verfügung.
Technik, Ausschlüsse und Datenschutz
Da die Daten entfernten Empfängern zur Verfügung gestellt werden, müssen sie natürlich auch irgendwo gespeichert werden. Dies erfolgt auf dem Server joerglorenz.de in einer MySQL-Datenbank, die auf dem aktuellen Stand der Technik abgesichert ist. Au�er mir, dem Autor des Add-Ins, hat niemand Zugriff darauf.
Gespeichert werden nur die Daten, die den Absendern und den Empfängern vorgehalten werden müssen - also all das, was Sie über die Felder im Menüband eingeben. Dateien als Mailanhänge werden auf dem Server nur bis zum letztendlichen Versand der Mail gespeichert und anschlie�end gleich wieder gelöscht. Da das ganze System über Nicknamen läuft, werden auch keine sonstigen personenbezogenen Daten gespeichert - natürlich mit Ausnahme derer, die Sie selbst in den Eingabefeldern/Messages eintragen.
Es wird zugesichert, dass Ihre Daten nur zum eigentlichen Zweck Ihrer Kommunikation gespeichert werden und sonst in keiner Weise verwendet oder überwacht werden. Au�er natürlich, wenn ich selbst davon nichts wei� - ausschlie�en kann man ja leider nichts.
Sollen bestimmte Daten gelöscht werden, wenden Sie sich bitte einfach mit Angabe des Nicknamens an mich.
Verboten sind generell Texte, die gegen Recht und Gesetz versto�en, aber auch fanatische und insbesondere rechte bzw. fremdenfeindliche Inhalte. Sollten solche Texte bemerkt werden, wenden Sie sich bitte an mich. Diese werden dann durch mich unverzüglich gelöscht.
Kosten
Dieses Add-In kann leider nicht kostenlos angeboten werden. Sie haben die Möglichkeit, 50 Postings abzusetzen und 50 Mails (an mehrere Empfänger gilt als eine Mail) zu versenden. Eine weitere Nutzung ist dann für 10,00 � pro Add-In (also pro Nick) möglich. Bei Nutzung in Gruppen (Unternehmen, Vereine usw.) kann es verschiedene Ermä�igungen geben, wenn mir eine Liste der zugehörigen Nicks überlassen wird.
Bei Angabe einer Rechnungsanschrift erhalten Sie natürlich in jedem Fall eine absetzbare Rechnung.
Perspektivisch wird das Add-In um weitere Funktionen ergänzt. Diese Erweiterungen sind dann natürlich im Preis bereits enthalten.
Wie kann ich die Makros eines Projekts übersichtlich auflisten und Mappen/Blätter ohne Makros speichern?
Das Add-In sammelt alle (nicht geschützten) Codeteile eines Projekts und schreibt sie übersichtlich in eine Tabelle. So können diese auch druckfertig aufbereitet werden.
Weiterhin besteht im Add-In die Möglichkeit, zu wählen, ob die aktive Tabelle oder die aktive Mappe gespeichert werden soll und ob dabei Makros aus der Kopie entfernt werden sollen.
Hinweis:
Damit Makros Zugriff auf den VBA-Code haben, muss in Excel folgende Einstellung vorgenommen werden:
Wie kann man einen Betrag in Eurobetrag und Centbetrag trennen? Aus 3,25 Euro müsste in der einen Zelle die 3, in der anderen Zelle die 25 stehen.
Die benutzerdefinierten Funktionen in ein Standardmodul:
Getrennte Funktionen für Euro und Cent
Function WEuro(Zelle)
If Not IsNumeric(Zelle) Then WEuro = "" Else WEuro = Fix(Zelle)
End Function
Function WCent(Zelle)
If Not IsNumeric(Zelle) Then WCent = "" Else WCent = (Zelle - Fix(Zelle)) * 100
End Function
In die Zellen braucht man dann nur die Formeln einzugeben:
= WEuro(A1)
= WCent(A1)
Eine Funktionen mit Wahlparameter für Euro oder Cent
Function EuroCent(Zelle, was)
EuroCent = ""
If IsNumeric(Zelle) Then
EuroCent = IIf(was = 1, Fix(Zelle), (Zelle - Fix(Zelle)) * 100)
End If
End Function
In die Zellen käme dann =eurocent(A1;1) für den Eurobetrag, =eurocent(A1;2) für die Cent.
Dynamische Arrayformel mit Matrixfunktion (ab Excel 365)
Die folgende Funktion gibt beide Werte, also Euro und Cent, als Datenfeld zurück:
Function EuroCent_Beide(Zelle)
Dim arrTemp(1 To 2)
Application.Volatile
arrTemp(1) = ""
arrTemp(2) = ""
If Zelle <> "" And IsNumeric(Zelle) Then
arrTemp(1) = Fix(Zelle)
arrTemp(2) = (Zelle - Fix(Zelle)) * 100
End If
EuroCent_Beide = arrTemp
End Function