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 eine eigene Menüleiste mit Untermenüs erstellen und diese anstelle der Tabellenblattmenüleiste anzeigen lassen?
Nostalgie - mehr ist das wohl heute nicht mehr. Oder nutzt noch jemand die alten Menüs in Excel?
Sub MenueErstellen()
Dim objAktiveMenueLeiste As Object
Dim objMeinMenue As Object, objBefehl As Object, objMB As Object
'objMB, objMeinMenue, Befehl und objAktiveMenüLeiste sind Variablen
On Error Resume Next
'Eigene Menüleiste löschen, falls Makro nochmal aufgerufen wird:
Application.CommandBars("MeinMenü").Delete
'Falls keine eigene Menüleiste erstellt wurde, sondern nur ein Menü:
CommandBars.ActiveMenuBar.Controls("Mein Menü").Delete
'Menüleiste hinzufügen und einblenden
'Soll die aktive Menüleiste ersetzt werden, Hochkommas entfernen:
'Set objMB = CommandBars.Add(Name:="MeinMenü", MenuBar:=True)
'CommandBars("MeinMenü").Visible = True
Set objAktiveMenueLeiste = CommandBars.ActiveMenuBar
'Menü erstellen
Set objMeinMenue = objAktiveMenueLeiste.Controls.Add(Type:=msoControlPopup, Temporary:=True)
objMeinMenue.Caption = "&Mein Menü"
'Anstelle Makroname den Makro einsetzen
'Erster Befehl im Menü
Set objBefehl = objMeinMenue.Controls.Add(Type:=msoControlButton, ID:=1)
With objBefehl
.Caption = "&1. Befehl"
.OnAction = "Makroname"
End With
'Zweiter Befehl im Menü
Set objBefehl = objMeinMenue.Controls.Add(Type:=msoControlButton, ID:=1)
With objBefehl
.Caption = "&2. Befehl"
.OnAction = "Makroname"
End With
End Sub
'Um die Original-Menüleiste wieder einzublenden kann man
'folgendes Makro verwenden:
Sub EigeneMenueLeisteLoeschen()
On Error Resume Next
'Löscht die selbsterstellte Menüleiste:
Application.CommandBars("MeinMenü").Delete
'Löscht nur das Menü
CommandBars.ActiveMenuBar.Controls("Mein Menü").Delete
End Sub
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 fügt man dem Menü Extras der Menüleiste für Tabellenblätter ein Menüelement mit dem Namen "Ton" hinzu und bindet dieses an die Prozedur "Ton"?
Sub MenuelementHinzu()
MenuBars(xlWorksheet).Menus("Extras").MenuItems.Add Caption:="To&n", OnAction:="Ton"
End Sub
Sub Ton()
Dim intI As Integer
For intI = 1 To 10
Beep
Next
End Sub
Wie kann man einem Untermenü weitere Submenüeinträge hinzufügen, die Aufschriften sollen aus einem Tabellenblatt übernommen werden (Makros zu den Menüpunkten haben die gleichen Namen wie die Aufschriften)?
Sub MenueAnpassen()
Dim objBar As Object, Liste As Range, intI As Integer
Set objBar = MenuBars("Worksheet").Menus("Extras").MenuItems.AddMenu(Caption:="Projekt-Liste")
Set Liste = Worksheets(1).[a1:a10]
For intI = 1 To Liste.Rows.Count
objBar.MenuItems.Add Liste.Cells(intI, 1), Liste.Cells(intI, 1)
Next intI
End Sub
Wie kann man der Standardsymbolleiste beim Laden einer bestimmten Arbeitsmappe ein Schaltflächensymbol mit Makrozuweisung und Kurznotiz hinzufügen und beim Schlie�en der Arbeitsmappe wieder entfernen?
Hinweis zu Excel 2007: In diesem Fall wird im Ribbon Add-Ins ein eigener Bereich erstellt..
Sub Erstellen()
Toolbars(1).ToolbarButtons.Add Button:=211
With Toolbars(1).ToolbarButtons(Toolbars(1).ToolbarButtons.Count)
.OnAction = "MeinMakro"
.Name = "Mein Makro ausführen!"
End With
End Sub
Sub Loeschen()
Toolbars(1).ToolbarButtons(Toolbars(1).ToolbarButtons.Count).Delete
End Sub
Wie kann ich während der Laufzeit einer Userform für jeden Tag eines Monats eine Checkbox hinzufügen?
Ausschlaggebend ist hier intTopPosition. Damit wird die erste Position auf 20 gesetzt und anschlie�end für jede Box erhöht - damit gibt man also die Position der Box vor. Wenn es zweispaltig werden soll, muss entsprechend bei einem bestimmten Schleifendurchlauf wieder auf 20, aber auch die Left-Position nach rechts gesetzt werden.
Private Sub CommandButton1_Click()
Dim ctrCheck As Control
Dim datStartDatum As Date
Dim datZaehler As Date
Dim intTopPosition As Integer
Dim strMonat As String
strMonat = "Februar"
datStartDatum = CDate("1." & strMonat & ".2010")
intTopPosition = 20
datZaehler = datStartDatum
Do While Month(datZaehler) = Month(datStartDatum)
Set ctrCheck = Me.Controls.Add("forms.CheckBox.1")
ctrCheck.Top = intTopPosition
ctrCheck.Caption = Format(datZaehler, "dd.MM.yy")
Set ctrCheck = Nothing
intTopPosition = intTopPosition + 15
datZaehler = datZaehler + 1
Loop
End Sub
Die Eigenschaften der neu erstellten Steuerelemente kann man z. B. wie folgt aufrufen:
Private Sub CommandButton2_Click()
MsgBox UserForm1.Controls("CheckBox5").Value
End Sub
Sub KontextEintragHinzufuegen()
Dim objMenuepunkt As Object
Set objMenuepunkt = CommandBars("Cell").Controls.Add
With objMenuepunkt
.Caption = "&SignalTon"
.OnAction = "Ton"
End With
End Sub