zweite Seite mit Makros und Tipps für Excel
» [1][2][3]

Arbeitsblätter anzeigen
im Windows-Explorer werden bei markierter Excel-Datei die enthaltenen Arbeitblätter aufgelistet
'Eine Text-Datei mit nachfolgendem Inhalt erstellen und als Lookexcel.vbs abspeichern:

Dim objExcel
Dim objFileSystem
Dim objFile
Dim objWorksheet
Set listArgs = WScript.Arguments
If listArgs.Count = 0 Then
MsgBox "Keine Datei übergeben!"
Else
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFile = objFileSystem.GetFile(listArgs(0))
Set objExcel = Wscript.CreateObject("Excel.Application")
objExcel.Workbooks.Open(objFile.path)
For Each objWorksheet In objExcel.Workbooks(objFile.name).Worksheets
szMessage = szMessage & " " & objWorksheet.Name & Chr(10)
Next
objExcel.Quit
Set objExcel = nothing
MsgBox szMessage,,"Enthaltene Arbeitsblätter"
End If

'In den Ordneroptionen den xls-Excel-Dateityp um einen neuen Vorgang erweitern (Pfad anpassen, je nach Betriebssystem auch der Pfad zur wscript.exe).
Als Vorgang eintragen: Enthaltene Arbeitsblätter
Anwendung:c:\windows\wScript.exe d:\Pfad\lookexcel.vbs "%1"
Automakro auch per VBA
beim Öffnen oder Schließen einer weiteren Arbeitsmappe ausführen
'Mit dem Aufruf RunAutoMakros werden auch automatische Makros beim Einsatz von VBA in fremden Arbeitsmappen ausgeführt:
Workbooks.Open "test.xls"
ActiveWorkbook.RunAutoMacros xlAutoOpen

oder
ActiveWorkbook.Close
ActiveWorkbook.RunAutoMacros xlAutoClose ebenso ist der Aufruf von xlAutoActivate bzw. xlAutoDeactivate möglich.
Nullwerte ausblenden
Die 0 wird nicht angezeigt, wenn für die Zelle das benutzerdefinierte Format 0;-0;"" eingestellt ist.
Tabellenblätter auflisten
auf einem zusätzlichen Arbeitsblatt werden alle enthaltenen Tabellenblätter aufgelistet
'das folgende Makro fügt ein weiteres Tabellenblatt "Inhalt" hinzu und listet alle enthaltenen Blätter dieser Datei auf
Sub inhalt()
Sheets(1).Select
Sheets.Add
Sheets(1).Name = "Inhalt"
z = 1
For Each w In Worksheets
If w.Index <> 1 Then Range("a" & z - 1).Value = w.Name
z = z + 1
Next w
End Sub
Landkarten mehrfarbig gestalten
durch Aufhebung der Gruppierung in Word oder Powerpoint
Die Grafik kopieren, in Word oder Powerpoint einfügen, markieren und in Ihre Bestandteile zerlegen bzw. Gruppierung aufheben. Wieder alles markieren und in Excel einfügen. Jetzt können Sie die einzelnen Länder auswählen und nach Wunsch farbig gestalten.
Zellbezüge absolut setzen
müssen Sie nicht manuell mit dem $-Zeichen. Es geht auch schneller

Zellbezüge absolut setzen

geht schneller, wenn Sie die Formel markieren und die Taste F4 drücken,
nochmaliges drücken setzt nur die Zeile,
ein weiteres drücken setzt nur die Spalte absolut.
Mit dem vierten drücken wird der Bezug wieder absolut - also frei von den $-Zeichen
Nur sichtbare Zellen kopieren
geht mit einem Makro einfacher als es in Excel vorgegeben wird.
'gewünschten Bereich markieren und Makro auswählen. Die ausgeblendeten Zeilen bzw. Spalten werden ignoriert.
sub nursichtbarKopieren()
selection.SpecialCells(xlCellTypeVisible).copy
end sub
Format mehrfach übertragen
mit einem Doppelklick auf die Schaltfläche "Format übertragen" bleibt die Schaltfläche aktiviert, nacheinander alle Stellen markieren und Format übertragen wählen.
Tabellenblatt benennen
dieses Makro übernimmt als Blattname den Inhalt der vorgegebenen Zelle
Sub blattname()
bname = Range("b2").Value
ActiveSheet.Name = bname 'bei aktiven Tabellenblatt
End Sub
'oder bei einem bestimmten Tabellenblatt: Sheets("Tabelle1").Name = bname eingeben
Programmstart mit Parameter
zusätzliche Parameter in der Kommandozeile beeinflussen den Start
/e --Excel wird ohne Startbild und leerer Arbeitsmappe geöffnet
/m --startet mit Makroarbeitsblatt
/o --ergänzt evtl. fehlende Registry-Einträge. Bestehende Einträge bleiben erhalten.
/p "pfad" --setzt angegebenen Pfad oder Ordner als aktiv, der beim Öffnen und Schließen als erstes vorgeschlagen wird
/r "Datei" --öffnet angegebene Datei als schreibgeschützt
/s --startet Excel im abgesicherten Modus
/regserver --alle Registry-Daten werden neu zugeordnet
/unregserver --Excel entfernt alle Einträge aus der Registry
nur sichtbare Zellen kopieren
die ausgeblendeten Zeilen/Spalten bleiben verborgen
Markieren Sie den gewünschten Bereich, wählen Sie Bearbeiten - Gehezu, wählen Sie Inhalte und aktivieren Sie die Option 'Nur sichtbare Zellen'. Jetzt können Sie wie gewohnt kopieren und einfügen.
Ausdruck ohne Leerzeile
die störenden Leerzeilen werden vor dem Ausdruck ausgeblendet
'Vor dem Ausdruck werden die störenden Leerzeilen ausgeblendet, nach dem Ausdruck wieder sichtbar gemacht.
Sub DruckZeilen()
Application.ScreenUpdating = False
Dim TB As Worksheet, i%, lZeile%
Set TB = Worksheets("tabelle1") 'Namen von Excel-Tabellenblatt
lZeile = TB.[a16384].End(xlUp).Row 'Bereich von Zeile1 bis zur festgelegten Zeile
For i = 1 To lZeile
If IsEmpty(TB.Cells(i, 1)) Then TB.Rows(i).EntireRow.Hidden = True 'die 1 in Cells(i,1) steht für Spalte A
Next i
TB.PrintOut
TB.Range(TB.Cells(1, 1), TB.Cells(lZeile, 1)).EntireRow.Hidden = False 'nach ausdruck wird die Zelle wieder sichtbar gemacht
End Sub
Automatische Telefonwahl
per Doppelklick auf die gewünschte Rufnummer. Einfache Ausführung ohne Autostart und ohne Umwandlung der Zahlen.
'auch dieses Makro wird in das entsprechende Tabellenblatt eingefügt. Ausgeführt wird das Makro mit einem Doppelklick auf die gewünschte Telefonnummer.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim strNummer As String
strNummer = ActiveCell.Value

If strNummer > "" Then
Shell "dialer.exe", vbNormalFocus
SendKeys strNummer & "{Enter}", True
ActiveCell.Value = strNummer

Else
MsgBox Prompt:="Keine Markierung vorhanden.", Title:="Nummer wählen"
End If

End Sub
Vor dem Drucken Makro ausführen
mit einem Workbook-Ereignis
'Im Visual-Basic-Editor wählen Sie das gewünschte Tabellenblatt aus, für welches das Ereignis gelten soll. In der rechten Fensterhälfte öffnet sich nun ein Fenster mit 2 Dropdown-Listen - aus der linken Liste (Allgemein) wählen Sie Workbook, aus der rechten Liste den Eintrag BeforePrint. Anschließend fügen Sie Ihren gewünschten Makrotext ein.
Dieses Makro wird vor jedem Druckauftrag ausgeführt. Gleiches gilt auch für den Eintrag BeforeClose.
In folgendem Beispiel wird eine Fußzeile mit aktuellem Datum eingefügt:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each ws In Worksheets
If ws.PageSetup.RightFooter = "Druckdatum: &D" Then
ws.PageSetup.RightFooter = ""
End If
Next ws
End Sub Private Sub Workbook_BeforePrint(Cancel As Boolean)
For Each ws In Worksheets
ws.PageSetup.RightFooter = "Druckdatum: &D"
Next ws
End Sub
Jahreszahl in Kopf- oder Fußzeile
mit einem Makro vierstellig anzeigen
Sub Auto_Open()
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = Format(Date, "dd.mm.yyy")
.LeftFooter = ""
.CenterFooter = ""
.Right.footer = ""
End With
End Sub
Einzelnes Arbeitsblatt speichern
das aktuelle Arbeitsblatt wird unter dem Blattname extra abgespeichert.
Sub Blattspeichern()
pfad = InputBox("Geben Sie den Pfad ein, in dem das Blatt gespeichert werden soll!", , "C:\bak\")
Select Case Right(pfad, 1)
Case ""
GoTo ErrorHandler
Case Is <> "\"
pfad = pfad & "\"
End Select
ActiveSheet.Copy
On Error GoTo ErrorHandler
ActiveWorkbook.SaveAs Filename:=pfad & ActiveSheet.Name
ActiveWorkbook.Close SaveChanges:=False
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox ("Speichervorgang war nicht erfolgreich")
ActiveWorkbook.Close SaveChanges:=False
Case Else
End Select
End Sub
Um in Excel Ihre Makros für alle Dateien zur Verfügung zu haben, die Makros in einer separaten Datei abspeichern. Diese Datei wird dann bei jedem Excel-Aufruf mit geladen, wenn sie in den Ordner XLSTART in Ihrem Office-Verzeichnis abgelegt wird.
Maximum automatisch anzeigen
der größte Wert wird bei Tabellenaufruf automatisch angezeigt
'Beim Öffnen einer Tabelle wird der Maximum-Wert des genannten Bereiches in rot angezeigt. Die Tabellenblatt-Bezeichnung und der Bereich muß angepaßt werden.
Sub auto_open()
Sheets("Tabelle1").OnEntry = "maxanz"
End Sub Sub maxanz()
On Error GoTo End
Dim MeinBereich As Range
Set MeinBereich = Worksheets("Tabelle1").Range("A1:A500")
MeinBereich.Font.ColorIndex = 0
For Each abc In MeinBereich
If abc.Value = Application.Max(MeinBereich) Then
abc.Font.ColorIndex = 3
End If
Next
End:
Exit Sub
End Sub
» [1][2][3]