| Sammlung diverser Makros | | |
| | |
| | |
| Kleine Übersetzung | Application = Anwendung | |
| Workbook = Arbeitsmappe | |
| Worksheets = Arbeitsblätter | |
| Range = Zelle | |
| | |
| Beispiele zum Befehl "Range" | Sub Text1() | |
| Range("B3:F5").Value = "Test" | Zellen wird der Wert "TEST"zugewiesen |
| End Sub | |
| Sub Text3() | |
| Dim a As String | A und B wurden als Zeichenkette deklariert. |
| Dim B As String | |
| a = 5 | |
| B = 4 | |
| Range("b6") = a + B | Zelle B6 wird die Zeichenkette (54) |
| End Sub | zugewiesen. |
| Sub Text2() | |
| Range("b2:f15").Activate | Activate markiert den Zellbereich. |
| End Sub | |
| Sub Text4() | |
| Dim Lolo As Integer | Lolo und t wurden als Zahlen deklariert. |
| Dim t As Integer | |
| Lolo = 17 | |
| t = 8 | |
| Range("c12") = Lolo * t | Es wird das Produkt aus 17 mal 8 |
| | End Sub | zugewiesen. |
| Arbeitsblatt schreibschützen | Sub Protect() | |
| Dim a$ | |
| ActiveSheet.Protect | |
| a = "winner" | |
| B = InputBox("Bitte geben Sie das Passwort ein") |
| If B = a Then | |
| ActiveSheet.Unprotect | |
| Range("b7").Select | |
| Else | |
| MsgBox "Access denied" | |
| ActiveWorkbook.Close | |
| End If | |
| | End Sub | |
| Excel Modul verstecken / wieder- | Sub ModulVerstecken() | Sub ModulWiederEinblenden() |
| herstellen | Modules(1).Visible = xlVeryHidden | Modules(1).Visible = True |
| | End Sub | End Sub |
| Arbeitsblätter sortieren | Sub ABlattSortieren() | Durch Änderung des < - Zeichens in ein > - |
| Dim i%, j% | Zeichen kann eine absteigende |
| For i = 1 To Sheets.Count | Sortierung erreicht werden. |
| For j = 1 To Sheets.Count - 1 | |
| If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then |
| Sheets(j).Move after:=Sheets(j + 1) | |
| End If | |
| Next j | |
| Next i | |
| | End Sub | |
| Datei unter Tagesdatum speichern | Sub DateiUnterTagesdatumAbspeichern() | |
| Dim Tagesdatum As String, Sicherung As String | |
| Tagesdatum = Application.Text(Now(), "mm-dd-yy hh-mm") |
| Sicherung = "Backup" & Tagesdatum & ".XLS" | |
| ActiveWorkbook.SaveCopyAs Sicherung | |
| | End Sub | |
| Datei unter Tagesdatum speichern | Sub DateiUnterTagesdatumAbspeichern() | |
| (Ordner vorgeben) | Dim Dateiname As String, Ppfad As String | |
| Dateiname = Format(Now(), "ddmmyyyy") | |
| Ppfad = "D:\MyFiles\" | |
| ActiveWorkbook.SaveAs (Ppfad & Dateiname) | ActiveWorkbook.SaveAs filename:= _ |
| | End Sub | "C:\myfile.xls", FileFormat:=xlNormal |
| Datei unter Tagesdatum speichern | Sub DateiUnterTagesdatumAbspeichern() | |
| (mit Dialogfeld) | Dim Dateiname As String | |
| Dateiname = Format(Now(), "yyyy-mm-dd") | |
| Application.Dialogs(xlDialogSaveAs).Show (Dateiname) |
| | End Sub | |
| Prüfung, ob Zelle numerischen | Sub NumerischerWertInZelle() | |
| Inhalt hat | If Not Application.IsNumber(ActiveCell) Then | |
| MsgBox "Zelle enthält kein numerisches Zeichen" | |
| End If | |
| | End Sub | |
| Alle Excel-Dateien eines | Sub DateinamenAuflisten() | |
| bestimmten Verzeichnis | Dim Dateiname$, i% | |
| anzeigen | Dateiname = Dir$("c:\temp\*.xls") | |
| Do While Dateiname <> "" | |
| ActiveCell.Offset(i, 0) = Dateiname | |
| i = i + 1 | |
| Dateiname = Dir$() | |
| Loop | |
| | End Sub | |
| Berechnungsfunktion in Arbeits- | In einer umfangreichen Arbeitsmappe soll die Berechnungsfunktion ausgeschaltet werden und nur |
| mappe ausschalten | Berechnungen auf der jeweils aktuellen Seite zulassen. Immer wenn auf einem Blatt eine Eingabe |
| gemacht wird und zum Abschluß die Enter-Taste gedrückt wird, soll das Makro aktiv werden und nur |
| das jeweils aktive Blatt aktualisieren |
| Sub Auto_Open() | |
| Application.Calculation = xlManual | |
| Application.MaxChange = 0.001 | |
| ActiveWorkbook.PrecisionAsDisplayed = False | |
| Application.OnKey "{ENTER}", "JeweilsNurDasAktiveTabellenblattBerechen" |
| | End Sub | |
| Prüfung, ob Excel-Datei geöffnet | Function ArbeitsmappeOffen(AMappe As String) As Boolean |
| ist | On Error Resume Next | |
| MappeText = Workbooks(AMappe).Name | |
| On Error GoTo Fehler | |
| Workbooks.Open AMappe | |
| OpenBook = True | |
| Exit Function | |
| Fehler: ArbeitsmappeOffen = False | |
| | End Function | |
| Namen und Position einer Schalt- | Sub NameUndPosEinerSchaltfläche() | |
| fläche wiedergeben | Dim x | |
| Set x = ActiveSheet.Shapes(Application.Caller) | |
| MsgBox x.Name | |
| MsgBox x.TopLeftCell.Address | |
| Range(x.TopLeftCell.Address).Select | |
| Range(ActiveCell, ActiveCell.Offset(1, 1)).Select | |
| | End Sub | |
| Schaltfläche deaktivieren | Sub SchaltflächeDeaktivieren() | |
| Sheets("Tabelle1").Buttons(1).Enabled = False | Auf dem Arbeitsblatt Tabelle1 wird die erste |
| | End Sub | Schaltfläche deaktiviert. |
| Löschen der Zwischenablage | Sub ZwischenablageLöschen() | |
| Application.CutCopyMode = False | |
| | End Sub | |
| Menüleiste ausblenden | Sub MenüleisteAusblenden() | |
| Application.CommandBars("Worksheet Menu Bar").Enabled = False |
| End Sub | |
| Menüleiste einblenden | Sub MenüleisteEinblenden() | |
| Application.CommandBars("Worksheet Menu Bar").Enabled = True |
| | End Sub | |
| SchaltflächenNamen in | Sub SchaltflächenNamenInMsgBoxAusgeben() | |
| MsgBox ausgeben | MsgBox (ActiveSheet.Buttons(Application.Caller).Text) |
| | End Sub | |
| Anzahl der verwendeten Zeilen | Sub AnzahlVerwendeteZeilen() | |
| eines Blatts ausgeben | i = ActiveSheet.UsedRange.Rows.Count | |
| MsgBox i | |
| | End Sub | |
| Mehrere Zeilen markieren | Sub MehrereZeilenMarkieren() | |
| Range("1:1,3:3,5:5,9:9,11:11").Select | |
| | End Sub | |
| Excel beenden | Sub ExcelBeenden() | |
| Application.Quit | |
| | End Sub | |
| Vor dem Speichern einer Datei | Sub Auto_Open() | |
| ein Makro aufrufen | ActiveWorkbook.OnSave = "MacroX" | |
| End Sub | |
| Sub MacroX() | |
| ActiveSheet.PageSetup.LeftFooter = "&8" + ActiveWorkbook.Path |
| End Sub | |
| Vor Speichern wird MakroX aufgerufen, welches aktuellen Pfad einer Datei in Fußzeile überträgt. |
| Weisen Sie im Modul Auto_Open der Aktion OnSave zuvor noch das Modul MacroX zu. |
| Excel merkt sich, daß die Aktion mit einem Makro verknüpft ist. |
| Sobald man nun die Datei speichert, läuft vor dem Speichern das Makro MacroX. |
| Auto_Open klappt nicht immer, also probieren wir es so: |
| Sub ActiveWorkbook_BeforeSave() | |
| ActiveSheet.PageSetup.LeftFooter = "&8" + ActiveWorkbook.Path |
| | End Sub | |
| Text aus Textbox auf | Sub cmdButton1_Click() | Bedingung: Der Text in der Textbox muss mit |
| verschiedene Zellen | Dim i%, Zeile$ | Umschalt und Enter umgebrochen werden. |
| aufteilen | Zeile = TextBox1.Text | Außerdem: |
| While InStr(Zeile, Chr(10)) > 0 | MultiLine = True und WordWrap = True |
| i = i + 1 | zuweisen. |
| Tabelle1.Cells(i, 1) = Left(Zeile, InStr(Zeile, Chr(10)) - 2) |
| Zeile = Right(Zeile, Len(Zeile) - InStr(Zeile, Chr(10))) |
| Wend | |
| Tabelle1.Cells(i, 1) = Zeile | |
| | End Sub | |
| Text aus Textbox auf | Sub cmdButton1_Click() | Hier muss der Text in der Textbox nicht umge- |
| verschiedene Zellen | Dim i%, e%, h$, var$ | brochen werden; das Makro liest die Zeilen |
| aufteilen | var = Me.TextBox1 | einzeln heraus und überträgt sie zeilenweise |
| Me.TextBox1.SetFocus | auf ein Worksheet. |
| SendKeys "^{HOME}" | Kompletten Text in Variable sichern. |
| Do | |
| i = i + 1 | |
| SendKeys "^{HOME}" | Cursor an den Anfang des Textes. |
| SendKeys "+{END}" | Bis zum Ende der Zeile markieren. |
| e = DoEvents() | Übergeben der Ablaufsteuerung ans System. |
| h = Me.ActiveControl.SelText | Hier steckt der auszulesende Text. |
| Cells(i + 3, 3) = h | Überträgt Text zeilenweise vertikal in Spalte 3. |
| SendKeys "{DEL}" | Markierten Text löschen. |
| Loop Until h = "" | |
| MsgBox "Anzahl der Zeilen war: " & i | |
| Me.TextBox1 = var | Kompletten Text aus Variable in TextBox |
| | End Sub | zurückschreiben. |
| Alle ausgeblendeten Zellen | Sub AlleAusgeblendetenZeilenAnzeigen() | |
| eines Arbeitsblattes anzeigen | Dim r | |
| For Each r In ActiveSheet.UsedRange.Rows | |
| If r.Hidden = True Then r.Hidden = False | |
| Next r | |
| | End Sub | |
| HTML-Datei mit fester Fenster- | Sub InternetExplorer_Oeffnen() | |
| größe öffnen | Dim objExplorer As Object, varFile As Variant | |
| varFile = Application.GetOpenFilename("HTML-Dateien (*.ht*), *.ht*") |
| Set objExplorer = CreateObject("InternetExplorer.Application") |
| With objExplorer | |
| .Navigate varFile | |
| .StatusBar = False | |
| .MenuBar = False | |
| .Toolbar = False | |
| .Visible = True | |
| .Resizable = False | |
| .Offline = True | |
| .Width = 650 | |
| .Height = 550 | |
| End With | |
| | End Sub | |
| Werte aus einer Textfeld-Serie | Sub cmdUebertragen_Click() | |
| in Arbeitsblatt übertragen | Dim objCtr As Control, intRow% | |
| intRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 | |
| For Each objCtr In Controls | |
| If TypeName(objCtr) = "TextBox" Then | |
| Cells(intRow, 1) = objCtr.Text | |
| intRow = intRow + 1 | |
| End If | |
| Next objCtr | |
| Unload Me | |
| | End Sub | |
| Zeigt Workbook Blatt für Blatt | Sub Intervall() | |
| in zeitlichen Intervallen an | Dim Anzahl%, i%, Button% | |
| Anzahl = ActiveWorkbook.Worksheets.Count | |
| For i = 1 To Anzahl | |
| Worksheets(i).Activate | |
| Application.Wait Now + TimeValue("00:00:03") | |
| Worksheets(i).Select | |
| Next | |
| Button = MsgBox(Prompt:="Die Slide-Show ist nun beendet. Sollen die _ |
| Arbeitsblätter nun nach Namen sortiert werden?", Buttons:=vbOKCancel _ |
| + vbQuestion) | |
| If Button = vbOK Then ArbBlattSortieren | |
| | End Sub | |
| WochenEnden kenntlich machen | Sub WochenendenFärben() | |
| For Each oCell In Range(Cells(1, 4), Cells(1, 34)) | |
| If WeekDay(oCell.Value) = 7 Or WeekDay(oCell.Value) = 1 Then |
| With oCell.Interior | |
| .Pattern = xlGray16 | |
| .PatternColorIndex = 42 | |
| End With | |
| End If | |
| Next oCell | |
| | End Sub | |
| Fußzeile erzeugen | Sub FussZeileErzeugen() | |
| With ActiveSheet.PageSetup | |
| .LeftFooter = "&""Arial,Fett""&12&A" | Linksbündig Dateiname |
| .RightFooter = "Seite &P von &N" | Rechtsbündig Seitenzahlen |
| .CenterFooter = ActiveSheet.Parent.FullName | Dateinamen inclusive Pfadangabe |
| End With | |
| Worksheets("Sheet1").PageSetup.CenterFooter _ | Name der Arbeitsmappe und Seitenzahl |
| = "&F Seite &P" | |
| | End Sub | |
| Aufruf eines externen | Sub ProgrammAusExcelAufrufen() | |
| Programms aus Excel | Status = Shell("notepad.exe"; 1) | Weitere Beispiele: Calc.exe = Taschenrechner. |
| | End Sub | MsPaint.exe = Zeichenprogramm. Sol.exe = Solitär. |
| Anzahl der Excel-Dateien eines | Sub ExcelDateienZählen() | |
| Verzeichnisses ausgeben | With Application.FileSearch | |
| .NewSearch | |
| .LookIn = "C:\Eigene Dateien" | |
| .FileName = "*.xls" | |
| .Execute | |
| MsgBox .FoundFiles.Count | |
| End With | |
| | End Sub | |
| Nur aktives Tabellenblatt | Sub JeweilsNurDasAktiveTabellenblattBerechen() | |
| berechnen | Application.MaxChange = 0.001 | |
| ActiveWorkbook.PrecisionAsDisplayed = False | |
| ActiveSheet.Calculate | |
| | End Sub | |
| Sekunden in dreistelligem | Function milHours(dteTime As Date) | Bruchteile von Sekunden werden bei einer |
| Dezimalwert anzeigen | Dim i% | Zeitformatierung dezimal dargestellt: |
| i = Second(dteTime) | also hh:mm:000, z.B. 12:05:456 |
| i = i / 60 * 1000 | Dieses Modul mit folgendem Syntax auf |
| milHours = Format(Hour(dteTime), "00") & ":" & _ | dem Worksheet aktivieren: |
| Format(Minute(dteTime), "00") & ":" & i | =Projektname.xls!milHours(A1) |
| | End Function | |
| Töne am PC erzeugen | Sub PcPiep() | |
| AnzBeeps = InputBox("Wie oft soll gepiepst werden ?") |
| For Count = 1 To AnzBeeps | |
| Beep | |
| Application.Wait Now() + TimeValue("00:00:01") | Zwischen jedem Pieps liegt eine Pause von |
| Next Count | einer Sekunde. |
| | End Sub | |
| Öffnen-Dialogfeld beim Laden | Sub Auto_Open() | |
| der Anwendung zeigen | On Error Resume Next | |
| Application.Dialogs(xlDialogOpen).Show | |
| Application.Dialogs(xlDialogOpen).Show "Muster.xls" | Bei Angabe des Dateinamens springt der |
| | End Sub | Dialog gleich ins richtige Verzeichnis. |
| Bildschirm auf Ganzansicht | Sub AnsichtGanzerBildschirm() | |
| umstellen | Application.DisplayFullScreen = True | |
| | End Sub | |
| Benutzerdefinierte Namen | Sub AlleNamenInMappeLöschen() | |
| löschen | Dim definedName As Object | |
| For Each definedName In ActiveWorkbook.Names | Löscht Namen in allen Worksheets |
| definedName.Delete | |
| Next | |
| | End Sub | |
| Namen der aktiven Datei in | Function DateiName() | |
| eine Zelle schreiben | DateiName = ActiveWorkbook.Name | In Zelle A1 z.B. den Befehl: =DateiName() |
| | End Function | eingeben. |
| Aktives Tabellenblatt | Sub ArbeitsblattUmbenennen() | |
| umbenennen | ActiveSheet.Name="Neuer Name" | |
| | End Sub | |
| Tastatureingabe (KeyAscii) | Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) |
| abfragen | MsgBox Prompt:="Der KeyAscii lautet " & KeyAscii | |
| | End Sub | |
| Tabelle automatisch sortieren | Sub Worksheet_Activate() | |
| (zwei Möglichkeiten) | UsedRange.Select | Markiert benutzten Bereich. |
| Selection.Sort Key1:=Range(.......... ) | Bereich vorher über Makro ermitteln. |
| Range("A1").Select: Range("A2").Select | Setzt Markierung zurück. |
| End Sub | |
| Sub Worksheet_Change(ByVal Target As Excel.Range) |
| UsedRange.Select | Markiert benutzten Bereich. |
| Selection.Sort Key1:=Range(..........) | Bereich vorher über Makro ermitteln. |
| Target.Select | Setzt Markierung zurück. |
| | End Sub | |
| Inhalt + Länge eines Textfeldes | Sub TextAusTextfeld() | |
| ausgeben | Dim t%, z% | |
| With ActiveSheet.TextBoxes(1) | |
| For z = 1 To .Characters.Count Step 255 | |
| t = t & .Characters(z, 255).Text | Das erste Textfeld des aktiven Tabellen- |
| Next z | blattes wird ausgelesen. |
| End With | |
| MsgBox Len(t) & " " & t | Der Operator & verkettet die Anzahl der |
| | End Sub | Zeichen und den Inhalt des Textfeldes. |
| Mit Doppelklick auf eine Zelle, | Sub Worksheet_BeforeDoubleClick(ByVal Target As _ |
| die einen Blattnamen beinhaltet, | Excel.Range, Cancel As Boolean) |
| zum jeweiligen Arbeitsblatt | Dim i% | |
| springen | Cancel = True | |
| On Error GoTo ErrorHandler | |
| Worksheets(Target.Value).Select | |
| i = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 |
| ActiveSheet.Cells(i, 1).Select | |
| Exit Sub | |
| ErrorHandler: | |
| MsgBox "Tabellenblatt nicht gefunden!" | |
| | End Sub | |
| Hyperlink mit E-Mailadresse | Sub HyperlinkMitEmailEinfügen() | |
| einfügen und aktivieren | Range("A1").Select | |
| ActiveSheet.Hyperlinks.Add Anchor:=Selection, _ | |
| Address:= "mail:me@a.com" | |
| End Sub | |
| Sub HyperlinkAktivieren() | |
| Range("A1").Select | |
| Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True |
| | End Sub | |
| Werte per Tastenkombination | Sub Auto_Open() | |
| einfügen (STRG + W) | Application.OnKey "^w", "WerteEinfügen" | |
| End Sub | |
| Sub WerteEinfügen() | |
| Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _ |
| SkipBlanks:= False, Transpose:=False | |
| | End Sub | |
| Über InputBox einen Eintrag | Sub EingabeÜberInputbox() | |
| vornehmen und in Zelle | Dim wert01$ | |
| zurückschreiben | wert01 = InputBox("Wert eingeben", "Bitte geben Sie einen Wert ein") |
| Range("a1").Value = wert01 | |
| | End Sub | |
| Immer das erste Worksheet im | Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ |
| Workbook ansprechen | Cancel As Boolean) | |
| Sheets(1).Activate | |
| | End Sub | |
| Web-Symbolleiste nicht | Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, _ |
| anzeigen | ByVal Target As Hyperlink) | |
| Application.CommandBars("Web").Visible = False | |
| | End Sub | |
| Bei Klick auf das Schließkreuz | Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) |
| einer UserForm soll das | If CloseMode = vbFormControlMenu Then _ | Auch möglich: |
| Cancel = True | If CloseMode <> 1 Then Cancel = 1 |
| Schließen verhindert werden | End Sub | |
| Grafiken und Zeichnungen aus | Sub Grafiken_Entfernen() | |
| Worksheet entfernen | Dim xShape As Shape | |
| On Error GoTo ende | |
| Application.ScreenUpdating = False | |
| For Each xShape In ActiveSheet.Shapes | |
| xShape.Delete | |
| Next xShape | |
| Exit Sub | |
| ende: | |
| Exit Sub | |
| | End Sub | |
| Hyperlinks aus Worksheet | Sub Hyperlinks_Entfernen() | |
| entfernen | Dim xLink As Hyperlink | |
| On Error GoTo ende | |
| Application.ScreenUpdating = False | |
| For Each xLink In ActiveSheet.Hyperlinks | |
| xLink.Delete | |
| Next xLink | |
| Cells.Select | |
| Selection.Font.Name = "Arial" | Setzt den Schrifttyp zurück. |
| Selection.Font.Size = 8 | |
| Range("a1").Select | |
| Exit Sub | |
| ende: | |
| Exit Sub | |
| | End Sub | |
| Hyperlinks im Worksheet | Sub Hyperlinks_Markieren() | |
| markieren | On Error GoTo end1 | |
| FirstCell = 1 | |
| For Each xLink In ActiveSheet.Hyperlinks | |
| If FirstCell = 1 Then | |
| Set xRange = xLink.Range | |
| FirstCell = 0 | |
| Else | |
| Set xRange = Application.Union(xRange, xLink.Range) |
| End If | |
| Next xLink | |
| xRange.Select | |
| end1: Exit Sub | |
| | End Sub | |
| Error-Object abfragen | Sub ProgrammXYZ() | |
| If Err > 0 Then | Error-Objekt. |
| Err.Clear | |
| irgendwelche Befehle | |
| End If | |
| On Error Goto 0 | |
| | End Sub | |
| Zeiteingaben vereinfachen: | Sub TimeXYZ() | Makro mit Schaltfläche auf dem Worksheet: |
| Keine Eingabe des | Dim c As Range | Spalte des Worksheets als Text formatieren. |
| Doppelpunktes notwendig | For Each c In Selection | Zeiten per Tastatur eingeben: z.B. 1215. |
| c = TimeSerial(Left(c, 2), Right(c, 2), 0) | Eintragungen anschließend selektieren. |
| c = Format(c, "hh:mm") | Programm mit CommandButton starten. |
| Next c | Ergebnis: 12:15 |
| | End Sub | |
| Sanduhr aktivieren / deaktivieren | Sub ProgramXYZ() | Screen.MousePointer = vbHourglass |
| Application.Cursor = xlWait | schaltet die Sanduhr ein. |
| irgendwelche Befehle | Screen.MousePointer = vbDefault |
| Application.Cursor = xlNorthwestArrow 'oder: xlDefault | schaltet den Zeiger wieder ein. |
| | End Sub | |
| Spaltenbreite automatisch | Sub Worksheet_Calculate() | Dieses Makro in die Tabelle einbinden! |
| anpassen | Columns("A:G").AutoFit | Die Spaltenbreite wird immer nach Zell- |
| | End Sub | Eingabe automatisch angepasst. |
| Spaltenbreite automatisch | Sub Workbook_SheetCalculate(ByVal Sh As Object) | Dieses Makro in das Workbook einbinden. |
| anpassen | Columns("B:E").AutoFit | Die Spaltenbreite wird nur für das aktuell |
| | End Sub | bearbeitete Worksheet nach Zell-Eingabe automatisch angepasst. |
| Tabellenblatt kopieren und für | Sub Neues_Blatt_Anlegen() | |
| dieses eine dreistellige fort- | Dim wks As Worksheet, nme As Name, intNme%, strNme$ |
| laufende Nummerierung | For Each nme In ThisWorkbook.Names | Bereits vergebene Namen dürfen sich auch |
| vergeben | strNme = Right(nme.Name, 3) | dann nicht wiederholen, wenn die Blätter |
| If Len(strNme) = 3 And IsNumeric(strNme) Then | inzwischen gelöscht wurden. |
| If CInt(strNme) > intNme Then | |
| intNme = CInt(strNme) | |
| End If | |
| End If | |
| Next nme | |
| With ThisWorkbook | |
| .Worksheets(1).Copy after:=.Worksheets(.Worksheets.Count) |
| End With | |
| ActiveSheet.Name = Format(intNme + 1, "000") | |
| Set nme = ActiveWorkbook.Names.Add("wks" & _ | |
| Format(intNme + 1, "000"), Range("A1"), False) | |
| nme.Visible = False | |
| | End Sub | |
| Alle Zeilen ausblenden, wenn | Sub Hide_All_Rows() | In die Symbolleiste z.B. ein Icon einbinden, |
| Datum kleiner HEUTE ist | Dim zeile%, zelle As Range | mit dem man das Makro ständig ein- oder |
| zeile = 1 | ausschalten kann. Startzeile (kann auch z.B. |
| Set zelle = ActiveSheet.Cells(zeile, 1) | mit 5 beginnen). Startzelle = A1. |
| Do Until zelle(zeile, 1) = Date | Makro ausführen, bis HEUTE in Spalte 1 |
| If zelle(zeile, 1).Value <= Date And _ | gefunden wird. Andere Möglichkeit: |
| Rows(zeile).EntireRow.Hidden = False Then | ...Value < DateSerial(1999, 10, 30). |
| Rows(zeile).EntireRow.Hidden = True | Alle Zeilen verstecken, bis HEUTE gefunden |
| Else | wird. |
| Rows(zeile).EntireRow.Hidden = False | Alle Zeilen wieder sichtbar machen. |
| End If | |
| zeile = zeile + 1 | Zeilenzähler. |
| Loop | |
| zelle(zeile, 2).Select | Am Schluss wird jene Zelle in der 2. Spalte |
| | End Sub | selektiert, die in der HEUTE-Zeile steht. |
| Dateiname aus Zelle auslesen | Sub Lies_Datei() | |
| und Datei öffnen | Workbooks.Open FileName:=[A1] | |
| | End Sub | |
| Bei Eingabe in Zeile 2 Datum in | Sub Worksheet_Change(ByVal Target As _ | |
| erste Zeile schreiben | Excel.Range) | |
| If Target.Row = 2 Then Cells(Target.Row - 1, _ | |
| Target.Column) = Date | |
| | End Sub | |
| Bei Eingabe in Spalte 2 Datum | Sub Worksheet_Change(ByVal Target As _ | |
| und Zeit in Spalte 1 schreiben | Excel.Range) | |
| If Target.Column = 2 Then Cells(Target.Row, _ | |
| Target.Column - 1) = Now | |
| | End Sub | |
| Dezimalzahlen mit Nachkomma- | Sub einfuegen() | Die Microsoft-Lösung: |
| stellen in Zellen schreiben | Sheets(1).Cells(1, 2) = CDbl(InputBox.Text) | Format(InputBox.Text, "##0.0000") |
| (z.B. aus Input-Box) | End Sub | bringt falsche Nachkommastellen. |
| Worksheet als neues | Sub Blatt_kopieren() | |
| Workbook speichern | Dim wksQuell As Worksheet | |
| Dim wkbQuell As Workbook | |
| Dim wksZiel As Worksheet | |
| Dim wkbZiel As Workbook | |
| Set wkbQuell = ActiveWorkbook | |
| Set wksQuell = ActiveSheet | |
| wksQuell.Copy | Das Blatt wird ohne Zielangabe kopiert, eine |
| Set wkbZiel = ActiveWorkbook | neue Datei entsteht. |
| Set wksZiel = ActiveSheet | |
| wksZiel.Cells(1, 1) = "Hallo" | |
| wkbZiel.Close savechanges:=True | |
| Set wkbZiel = Nothing | Am Ende nicht vergessen, den Speicher wieder |
| Set wksZiel = Nothing | frei zu geben. |
| Set wkbQuell = Nothing | |
| |