zweite Seite mit Makros und Tipps für Excel
» [1][2][3]
|
Automatische Wahl der Telefonnummer
'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
Ausdruck ohne Leerzeilen
'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
Nur sichtbare Zellen kopieren
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.
Programmstart mit Parameter:
/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
Tabellenblatt nach dem Inhalt einer Zelle benennen
Sub blattname()
bname = Range("b2").Value
ActiveSheet.Name = bname 'bei aktiven Tabellenblatt
End Sub
'oder bei einem bestimmten Tabellenblatt: Sheets("Tabelle1").Name
= bname eingeben
Nur sichtbare Zellen kopieren
'gewünschten Bereich markieren und Makro auswählen. Die ausgeblendeten
Zeilen bzw. Spalten werden ignoriert.
sub nursichtbarKopieren()
selection.SpecialCells(xlCellTypeVisible).copy
end sub
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
Landkarte mehrfarbig gestalten
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.
Tabellenblätter auflisten
'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 |
Automakro per VBA 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.
Arbeitsblätter im Kontextmenü
anzeigen
'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"
|
Maximum automatisch anzeigen
'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
Blatt speichern
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
Vierstelliges Datum in der Kopf- bzw. Fußzeile
Sub Auto_Open()
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = Format(Date, "dd.mm.yyy")
.LeftFooter = ""
.CenterFooter = ""
.Right.footer = ""
End With
End Sub
Vor dem Drucken Makro ausführen
'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 |
(c)2000-2013 www.i-dietrich.de