mit Suchen (bei IE Tastenkombination Strg+F) kann man schnell zu den einzelnen Themen springen

Funktionstasten beim Start
Indirekt Wieviele Tabellen sind in der Mappe?
Automatische Dokumentnamenvergabe Userform nach bestimmter Zeit schließen
Zähler und Nenner einer Bruchzahl ermitteln Userform aktualisieren (neu aufbauen)
Tabellenblätter innerhalb einer Mappe sortieren Worksheets automatisch benennen
Feiertage kennzeichnen (kein VBA) Blatt mehrmals ausdrucken
mit Seitennummerierung
Numlock über VBA abfragen Numlock ein- /ausschalten
Bedingte Formatierung Wochentag Zeilenumbruch
Kontextmenü reaktivieren Text, wenn Label angeklickt
Bearbeitungsleiste ein-/ausblenden Umwandlung von Sonderzeichen zu Umlauten
Ladebalken mit Userform möglich? Aktueller Datenpfad in Kopf oder Fußzeile
Beim Verlassen Tabelle1, Tabelle1 ausblenden Eigene Farbliste
Zellenfarbe suchen Leuchtdiodenanzeige in Excel
Dateinamen in eine Zelle schreiben ist die Datei bereits geöffnet?
Workbook_BeforeClose funktioniert nicht wie sie soll komplizierter sverweis (mehrere tabellen durchsuchen)
Leseschutz aufheben, Passwort bekannt Zuletzt eröffnete Dateien' in VBA Makro aktualisieren
Kommentare formatieren Formel für Spaltenbezeichnung gesucht!!!
Zelle in Vornamen, von, Namen, aufteilen ohne VBA Letzte Zelle Aktivieren
Von Tabelle zu Tabelle ohne Maus Ordner öffnen mit VBA
Großschrift in Userform Speichern von CSV-Dateien
Zusammengesetztes Suchkriterium mit Sverweis Daten in Listbox bekommen
Outlook-Mail-Text in ExcelSheet einfügen (VBA) Excel-Chart in Gif-Bild exportieren
Bereich komfortabel mit Maus eingeben Zeilennummer des Letzen Eintrags
Summewenn mit 2 Suchkriterien Betrag in Buchstaben
Dateipfad in Fußzeile Label zur Balkenanzeige vergewaltigen

 

Funktionstasten

F5:                Booten im abgesicherten Modus
F8:                Das Bootmenü wird aktiviert
Shift+F5       Booten der Eingabeaufforderung

Indirekt

in der Zelle A1 steht z.B. hallo
in Zelle B1 soll folgendes stehen:=[Datei2.xls]arbeitsblatt_hallo!$C$1
Das hallo in der Formel soll er sich aus Zelle A1 holen =indirekt("[Datei2.xls]"&A1&"!$C$1")

Wieviele Tabellen sind in der Mappe?

Sub test()
hugo = ThisWorkbook.Sheets.Count
End Sub

Automatische Dokumentnamenvergabe

Füge eine Textmarke in die Dokumentenvorlage ein mit dem Namen "MeineMarke" und kopiere folgenden Code in die Dokumentenvorlage:

Sub AutoNew()
Textmarke = "MeineMarke"
    With ActiveDocument
        If .Bookmarks.Exists(Textmarke) Then
             Titel = .Bookmarks(Textmarke).Range.Text & _
             .BuiltInDocumentProperties(wdPropertyRevision).Value
             .BuiltInDocumentProperties(wdPropertyTitle).Value = Titel
             ActiveWindow.Caption = Titel
        End If
    End With
End Sub

Userform nach bestimmter Zeit schließen

Sub Start()
    Application.OnTime Now + TimeValue("00:00:02"), "Schließen"
    UserForm1.Show
End Sub

Sub Schließen()
    Unload UserForm1
End Sub

Zähler und Nenner einer Bruchzahl ermitteln

=WERT(LINKS(TEXT(A1;"???/???");3)) bzw.
=WERT(RECHTS(TEXT(A1;"???/???");3))
sofern Deine Ausgangswert in Zelle A1 steht.

Userform aktualisieren (neu aufbauen)

userform.DoEvents 'Userform neu aufbauen

Tabellenblätter innerhalb einer Mappe sortieren

Sub BlätterSortieren()
Dim WS As Worksheet
    Set WS = ActiveSheet
    Anzahl = ActiveWorkbook.Worksheets.Count
    For x = 1 To Anzahl
        For y = x To Anzahl
            If Worksheets(y).Name < Worksheets(x).Name Then
                Worksheets(y).Move Before:=Worksheets(x)
            End If
        Next y
    Next x
End Sub

Worksheets automatisch benennen

folgende Prozedur sollte Dein "Problem" lösen - inklusive Sicherheitsabfrage, falls die Zelle A1 leer ist ...

Sub Tabellenname()
For i = 1 To Sheets.Count
    If Sheets(i).Range("a1").Value <> "" Then Sheets(i).Name = Sheets(i).Range("A1").Value
Next I
End Sub

Feiertage kennzeichnen (kein VBA)

Du musst dazu in einem Tabellenbereich die Feiertage des Kalenderjahres eintragen.
Markiere dann die Zelle L3 und wähle Menü "Format" - "Bedingte Formatierung".
Wähle dann in der Drop-Down-Liste den Eintrag "Formel ist" und schreib folgende Formel in das Eingabefeld:
=ODER(L$3=Feiertage) --> ich habe den Bereich "Feiertage" benannt. Ohne Namen geht es natürlich auch, z.B.
=ODER(L$3=$F$4:$F$20) Über die Schaltfläche "Format" musst Du noch festlegen, ob bei Zutreffen die Schrift oder der Hintergrund farbig dargestellt werden soll, oder du kannst auch einen Rahmen vergeben.
Diese Formel musst Du entweder für Zellen, in denen ein Datum steht, festlegen oder durch Kopieren übertragen.
Nach dem Kopieren sind zwar die Formeln weg, aber das sollte kein Problem sein. ;) Wenn jetzt in einer Zelle mit einer bedingten Formatierung ein Datum steht, das auch im Bereich "Feiertage" vorkommt, wird es Deiner Festlegung entsprechend angezeigt.

Bewegliche Feiertage (Gaußsche Osterformel)

Die Jahreszahl steht in Zelle H1
H3 =H4-2 für Karfreitag
H4 =DM((TAG(MINUTE(H1/38)/2+55)&".4."&H1)/7;)*7-WENN(JAHR(1)=1904;5;6) für Ostersonntag
H5 =H4+1 Ostermontag
H6 =H4+39 Himmelfahrt
H7 =H4+49 Pfingstsonntag
H8 =H4+50 Pfingstmontag
H9 =H4+60 Fronleichnam
Obige (sehr vereinfachte) Osterformel gilt nur zwischen 1900 und 2078
Davor und Dahinter muß man die ausführliche Formel von Gauß heranziehen

Blatt mehrmals ausdrucken mit Seitennummerierung

Sub Drucken()
    For x = 1 To 10
        ActiveSheet.PageSetup.CenterFooter = x
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Next x
End Sub

Numlock über VBA abfragen

Const VK_NUMLOCK = &H90
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Private kbArray As KeyboardBytes
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Sub Numlock_aus()
GetKeyboardState kbArray
If kbArray.kbByte(VK_NUMLOCK) = 1 Then
     MsgBox "Numlock ist eingeschaltet.", vbOKOnly + vbInformation, "Eingeschaltet"
Else
    MsgBox "Numlock ist ausgeschaltet.", vbOKOnly + vbInformation, "Ausgeschaltet"
End If
kbArray.kbByte(VK_NUMLOCK) = 0
SetKeyboardState kbArray
End Sub

Numlock ein- /ausschalten

Const VK_NUMLOCK = &H90
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Private kbArray As KeyboardBytes
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Sub Numlock_ein()
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = 1
SetKeyboardState kbArray
End Sub

Sub Numlock_aus()
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = 0
SetKeyboardState kbArray
End Sub

Sub Numlock_umkehren()
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = I
If(kbArray.kbByte(VK_NUMLOCK) = 1, 0, 1)
SetKeyboardState kbArray
End Sub

Bedingte Formatierung Wochentag

stehen die Datumswerte in A1 und darunter, geht folgendes Format für A1
Format - Bedingte Formatierung ...
Formel ist:=WOCHENTAG(A1;2)>5 ‚ 2 Damit die Woche auch mit Montag anfängt!
Format: rote Schriftfarbe
Danach von A1 mit Symbol "Format übertragen" auf A2 und darunter

Zeilenumbruch

=A1&ZEICHEN(10)&B1
Das Zeichen(10) steht dafür, daß an dieser Stelle eine neue Zeile begonnen werden soll, in VBA wäre es chr(10).

Kontextmenü reaktivieren

Sub Zurueck()
CommandBars("Cell").Reset
End Sub

Text, wenn Label angeklickt

Wenn also die TextBox den Focus bekommt, erscheint im Label "Hallo". Beim Verlassen wird das Label wieder zurückgesetzt.

Private Sub TextBox1_Enter()
Label1.Caption = "Hallo"
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Label1.Caption = ""
End Sub

Bearbeitungsleiste ein-/ausblenden

Wenn du die Bearbeitungsleiste nur in einer bestimmten Mappe ausblenden willst kannst du folgendes probieren:
Alle vier Schnipsel unter " Diese Arbeitsmappe " speichern

'beim öffnen der Datei Bearbeitungsleiste ausblenden
Private Sub Workbook_Open()
Application.DisplayFormulaBar = False
End Sub

'beim schließen der Datei Bearbeitungsleiste wieder einblenden
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFormulaBar = True
End Sub

'beim Wechsel in eine andere Datei B-Leiste wieder einblenden
Private Sub Workbook_Deactivate()
Application.DisplayFormulaBar = True
End Sub

'beim erneuten aktivieren dieser Datei B-Leiste ausblenden
Private Sub Workbook_Activate()
Application.DisplayFormulaBar = False
End Sub

Umwandlung von Sonderzeichen zu Umlauten

' Ersetzen von äöü
  Dim J As Integer
  For J = 1 To Len(Nachname)
      Select Case Mid(Nachname, J, 1)
            Case "ä"
                Nachname = Mid(Nachname, 1, J - 1) & "ae" & Mid(Nachname, J + 1)
            Case "ö"
                Nachname = Mid(Nachname, 1, J - 1) & "oe" & Mid(Nachname, J + 1)
            Case "ü"
                Nachname = Mid(Nachname, 1, J - 1) & "ue" & Mid(Nachname, J + 1)
            Case "ß"
                Nachname = Mid(Nachname, 1, J - 1) & "ss" & Mid(Nachname, J + 1)
        End Select
Next J

Ladebalken mit Userform möglich?

Es soll so eine Art Ladebalken dargestellt werden. Mit einer Schleife wird die Breite von 'Label2' verändert (ein leeres Feld mit blauen Hintergrund).

Label2.Width = a
DoEvents ‚Aktualisierung der User Form
a = a + 1

Aktueller Datenpfad in Kopf oder Fußzeile

das geht mit folgender VBA-Zeile:
Fußzeile Mitte

ActiveSheet.PageSetup.CenterFooter = ActiveWorkbook.FullName & "\" & ActiveSheet.Name
'(Komplette Dateiname einschl. Pfad + Register)

Kopfzeile Links:
Worksheets("Tabelle1").PageSetup.LeftHeader = ThisWorkbook.Path & "\" '(nur Phad)

Left=Links; Center=Mitte; Right=Rechts
Header=Kopfzeile; Footer=Fußzeile

Beim Verlassen Tabelle1, Tabelle1 ausblenden

Ein Tabellenblatt muß eingeblendet bleiben

im Projekt-Explorer auf die Tabelle1 doppelklicken und diesen Code einfügen, fertig.

Private Sub Worksheet_Deactivate()
    Sheets("Tabelle1").Visible = xlVeryHidden
End Sub

Eigene Farbliste

Sub ListeFarben()
  On Error Resume Next
  For x = 1 To 56
      With Range("A" & x)
          .Interior.ColorIndex = x
          .Pattern = xlSolid
      End With
  Range("B" & x) = x
  Next x
End Sub

oder
Selection.Interior.Color = RGB(....)
Meinung von Sven
Ja, aber wenn Du Dich mit dem RGB Modell auskennst ist das durchaus möglich, es wird aber nicht dargestellt...
Du kannst die Zellfarbe entweder mit Cells(z, s).Interior.ColorIndex = 3 festlegen oder
mit dem RGB Wert arbeiten Cells(z, s).Interior.Color = RGB(255,0,0)
Beides sorgt dafür das die Zelle rot wird. (Leider muss sie das auch, wie gesagt,
Excel stellt die feineren Abstufungen nicht dar, es werden nur die 56 möglichen Farbwerte angezeigt
(In einer Userform ist das allerdings möglich))

Zellenfarbe suchen

Ist es unter Excel möglich bestimmte Zeilen in einer anderen Tabelle aufzulisten,
wo nur die Zeilen aufgelistet werden, wenn eine bestimmte Zelle der Zeile ein
bestimmtes Format hat, z.B. Schriftfarbe rot. Also alle Zeilen auflisten wenn eine der
Zellen in den Zeilen die Schriftfarbe rot hat.
Hier ein ganz "billige" Lösung mittels VBA:

Sub MachWas()
  Dim Zelle As Range:Zeile = 0
  For Each Zelle In Worksheets("Tabelle1").UsedRange
      If Zelle.Font.ColorIndex = 3 Then
          Worksheets("Tabelle1").Select
          Rows(Zelle.Row & ":" & Zelle.Row).Select
          Selection.Copy
          Zeile = Zeile + 1
          Sheets("Tabelle2").Select
          Range("A" & Zeile).Select
          ActiveSheet.Paste
      End If
  Next Zelle
End Sub

Leuchtdiodenanzeige in Excel

Manchmal könnte man in Excel eine Art Balkenanzeige oder Leuchtdiodenanzeige gebrauchen.
Recht einfach aber effektiv wäre z.B. das, probiert es doch mal aus:

In Zelle "B17" steht die maßgebliche Zahl.

In Zelle "A17" diese Formel:
=WENN(B17<0;WIEDERHOLEN("l";B17*-1);"")

In Zelle "C17" diese Formel:

=WENN(B17>0;WIEDERHOLEN("l";B17*1);"")

Damit steht nun das Grundgerüst.
Gibst Du in Zelle "B17" eine positive Zahl ein, wird in "C17" die positive Anzeige erfolgen.
Gibst Du in Zelle "B17" eine negative Zahl ein, wird in "A17" die negative Anzeige erfolgen.

Jetzt die Formatierungen:
Den Zellen "A17" und "C17" den Schriftfont Wingdings zuweisen,
Schriftfarbe der Zelle "A17" =rot, "C17" =grün.

Die Bedeutung der Werte in der Formel:
"l" (kleines L) in der Formel ist für die Darstellung des Zeichens verantwortlich, hier der senkrechte Balken, der Wert hinter B17 ist der Multiplikator, mit ihm stellst Du die Feinheit der Anzeige ein.

Ein bißchen Probieren und etwas Phantasie!

Dateinamen in eine Zelle schreiben

Tabellenname in Zelle einfügen ??

1)Pfad, Dateiname und Blattname
=ZELLE("DATEINAME")
2)nur Dateiname mit Endung
=TEIL(ZELLE("DATEINAME");FINDEN("[";ZELLE("DATEINAME"))+1;FINDEN("]";ZELLE("DATEINAME"))-FINDEN("[";ZELLE("DATEINAME"))-1)
3)nur Dateiname ohne Endung
=TEIL(ZELLE("DATEINAME");FINDEN("[";ZELLE("DATEINAME"))+1;FINDEN("]";ZELLE("DATEINAME"))-FINDEN("[";ZELLE("DATEINAME"))-1)

 

 

ist die Datei bereits geöffnet?

...aber probier mal das da:

------------------------------------

Private Sub Workbook_Open()
For Each x In Workbooks
If x.Name = "test.xls" Then
MsgBox "Datei ist schon geöffnet!"
GoTo weiter
End If
Next
MsgBox "Test wird automatisch geöffnet!"
Workbooks.Open FileName:="\\netz\werk\pfad\test.xls"
weiter: < Sub>

Workbook_BeforeClose funktioniert nicht wie sie soll

Public Rueckmeldung As Integer

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Rueckmeldung As Integer
    If Rueckmeldung <> 7 Then
        Rueckmeldung = MsgBox("GP 2001 soll beendet werden." + Chr(13) & Chr(10) + "Sind neue Datensätze angelegt worden, sollte die Datei gespeichert werden.", 3, "GP 2001")
        Select Case Rueckmeldung
            Case 2
                Cancel = True
                Rückmeldung = 0
            Case 7
                ActiveWorkbook.Close SaveChanges:=False
            Case 6
                ActiveWorkbook.Save
        End Select
    End If
End Sub

komplizierter sverweis (mehrere tabellen durchsuchen)

Du fügst in Deine Arbeitsmappe eine neue Tabelle ein, in der Du die ganzen Sverweise aufführst.

Dort listest Du mit

Sub TabNamen()
For z = 1 To Sheets.Count
Cells(z, 1) = Sheets(z).Name
Next
End Sub

in Spalte A erst mal alle Tabellennamen auf die du durchsuchen wills.

in B1 schreibst DU dann dann =SVERWEIS("suche";INDIREKT(A1&"!A:C");3;0)
das entspricht =SVERWEIS("suche";INDIREKT("Tabelle1!A:C");3;0)
bzw. =SVERWEIS("suche";Tabelle1!A:C;3;0)< /FONT >

diese Formel kannst Du dann runterkopieren.

Leseschutz aufheben, Passwort bekannt

Workbooks.Open FileName:="C:\Eigene Dateien\test.xls", password:="Paßwort"

Schutz auf einem Register aufheben
ActiveSheet.Unprotect ("Paßwort")

Zuletzt eröffnete Dateien' in VBA Makro aktualisieren

Application.RecentFiles.Add Name:="hurra.xls"

Kommentare formatieren

wenn der kommentar angezeigt wird mit rechter maustaste reinklicken
teste mal folgendes makro

Sub KommentarSchrift()
Dim Cmt As Comment
    ActiveCell.Select
    Set Cmt = Cells(5, 5).AddComment
    Cmt.Text "Mein Kommentar"
    With Cmt.Shape.TextFrame.Characters.Font
        .Name = "Arial"
        .Size = 14
    End With
End Sub

Formel für Spaltenbezeichnung gesucht!!!

=ADRESSE(ZEILE();SPALTE();4)
Referiert auf die aktuelle Zelle, Typ 4 steht für relativem Bezug für Spalte wie für Zeile
oder
dann gehts doch nur mit 'wenn' (aber ohne Ganzzahl und Zeichen):

=WENN(SPALTE()<27;LINKS(ADRESSE(ZEILE();SPALTE();4);1);LINKS(ADRESSE(ZEILE();SPALTE();4);2))

oder ...weiter verkürzt:

=WENN(SPALTE()<27;LINKS(ADRESSE(1;SPALTE();4);1);LINKS(ADRESSE(1;SPALTE();4);2))

weil die Zeile wurscht ist. Funktioniert auch.

oder

=LINKS(ADRESSE(1;SPALTE();4);WENN(SPALTE()>26;2;1))

oder

=LINKS(ADRESSE(1;Spalte();4);1+(Spalte()>26))

oder =TEIL(ADRESSE(ZEILE();SPALTE();4);1;LÄNGE(ADRESSE(ZEILE();SPALTE();4))-LÄNGE(ZEILE()))

Au net schöner oder einfacher. Halt einfach noch ein Weg ins Ziel

Zelle in Vornamen, von, Namen, aufteilen ohne VBA

Vorname(n)
=WENN(UND(CODE(TEIL(A1;FINDEN(" ";A1)+1;1)) < 97;LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";))=2);TEIL(A1;1;FINDEN(" ";A1;FINDEN(" ";A1)+1));TEIL(A1;1;FINDEN(" ";A1)))

Nachname (mit von und zu / auf und davon)
=WENN(UND(CODE(TEIL(A1;FINDEN(" ";A1)+1;1)) < 97;LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";))=2);TEIL(A1;FINDEN(" ";A1;FINDEN(" ";A1)+1)+1;100);TEIL(A1;FINDEN(" ";A1)+1;100))

Letzte Zelle Aktivieren

Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Select
für spalte A

Von Tabelle zu Tabelle ohne Maus

Tastenkombination
Strg + Bild nach unten-Taste
nzw.
Strg + Bild nach oben-Taste drücken

Ordner öffnen mit VBA

hier ein makro zur Anzeige der Datein in einem bekannten Ordner

Sub Test()
    strVerzeichnis = "C:\WINDOWS\DESKTOP\Herstellerhinweise"
    StrDatei = Dir(strVerzeichnis & "\*.*")
    MsgBox "Datei:" & StrDatei, , "Bilder"
    Do While StrDatei <> ""
    StrDatei = Dir()
    If StrDatei = "" Then Exit Do
    MsgBox "Datei:" & StrDatei, , "Bilder"
    Loop
End Sub

 

Großschrift in Userform

schreibe folgenden Code

Private Sub TextBox1_Change()
    TextBox1 = UCase(TextBox1)
End Sub

 

Speichern von CSV-Dateien

speicherst Du auch mit:

ActiveWorkbook.SaveAs FileName:= "Test.csv", FileFormat:=xlCSV

Das FileFormat ist wichtig. Bei mir klappt's.

Zusammengesetztes Suchkriterium mit Sverweis

Je nachdem, woran ich zuerst denke nehme ich die eine oder andere Formel.
Infos über eine Spielpaarung: Array-Formel
In Spalte A steht die Nummer des Spieltags (jede Zelle; kann man modifizieren)
In Spalte B steht das Datum des Spieltags (dito)
In Spalte C und D die jeweiligen Gegner

Die Spielpaarung (Gegner), über die Du infos möchtest werden in F5 und G5 eingegeben.
Das Datum dieses matches ist {=INDEX(B1:B100;VERGLEICH(F5&G5;C$1:C$100&D$1:D$100;0))}
Der Spieltag dieses matches ist {=INDEX(A1:A100;VERGLEICH(F5&G5;C$1:C$100&D$1:D$100;0))}

Der clou hier ist der Matrix-Vergleich mit &.

Daten in Listbox bekommen

Wenn ich das richtig verstehe, willst Du die jeweils 1. (Spalte A), die 11. (Spalte K) und weitere Spalten der Zeile, in der sich augenblicklich der Cursor befindet, in die Listbox eintragen, also eigentlich nur die Zeile variabel ist.
Wenn dem so ist kannst Du das folgendermaßen machen:

With UserForm1
    .ListBox1.Clear                                                          ' Listbox leeren
    .ListBox1.AddItem Cells(1, ActiveCell.Column).Text      ' Spalte A
    .ListBox1.AddItem Cells(11, ActiveCell.Column).Text   ' Spakte K
    .ListBox1.AddItem Cells(21, ActiveCell.Column).Text   ' Spalte U
    .Show                                                                       ' Dialog anzeigen
End With

 

Outlook-Mail-Text in ExcelSheet einfügen (VBA)

Das folgende Beispiel fügt den Body der 1. Mail im Posteingang Zeilenweise in eine Excel-Tabelle ein:

Dim olApp As Object
Dim txt As String
Dim zeile As Integer

Set olApp = CreateObject("Outlook.Application")
txt = olApp.GetNamespace("MAPI").GetDefaultFolder(6).Items(1).Body   ' Body der 1. Mail im Posteingang ermitteln
zeile = 1
While InStr(txt, vbCrLf) <> 0                                       ' Bis keine Zeilenumbrüche mehr vorhanden sind
    Cells(zeile, 1).Value = Left(txt, InStr(txt, vbCrLf) - 1)       ' Text vor Zeilenumbruch einfügen
    txt = Mid(txt, InStr(txt, vbCrLf) + 2)                           ' Text anpassen
    zeile = zeile + 1                                               ' nächste Zeile
Wend
Cells(zeile, 1) = txt                                               ' letzter Text einfügen
Set olApp = Nothing

Excel-Chart in Gif-Bild exportieren

so siehts aus:

Sub DiagrammMArkierenundGIFErstellen()
Dim mychart As Chart
Set mychart = ActiveSheet.ChartObjects(1).Chart
mychart.Export FileName:="c:\Eigene Dateien\Dia1.gif", FilterName:="GIF"
End Sub

Bereich komfortabel mit Maus eingeben

Linne hat nach einer Methode gefragt, wie man mit einem Symbolleistenknopf in einer beliebigen Zelle die Funktion MITTELWERT eingeben und dabei die Maus zur Bereichsmarkierung verwenden kann.

Die Methode InputBox des Objektes (nicht zu verwechseln mit der Funktion InputBox von VBA) erlaubt das Füllen der Textbox durch Mausklick, Taste halten, Mausziehen, Taste loslassen außerhalb des Inputfensters.

Hier das Beispiel zu Mittelwert:

Option Explicit

Sub MittelwertFormel()
  Dim a As String

  a = Application.InputBox("Eingabe", Type:=0)
  a = Right(a, Len(a) - 1)
' Istgleich-Zeichen abtrennen
  ActiveCell.FormulaLocal = "=MITTELWERT(" & a & ")"
End Sub

Genaueres zur InputBox-Methode liefert die Online-Hilfe

Zeilennummer des Letzen Eintrags

das klappt z.b. wie folgt:

Sub InLetzteZelle()
Range("A65536").End(xlUp).Select
MsgBox ActiveCell.Row
End Sub

Summewenn mit 2 Suchkriterien

=SUMMEWENN(B6:B10;"Disk";C6:C10)+SUMMEWENN(B6:B10;"Test";C6:C10)

ODER noch besser:
eine MAtrixfunktion:
=SUMME((D10:D70="Disk-Kapazität")*(B10:B70="Sonstige")*(F10:F70))
Mit Tastenkombination STRG + Umschalt + Enter abschließen

Betrag in Buchstaben

'Bei mir gehts, in ein Modul kopieren und in der Tabelle Formel einfügen;
Beispiel: Die Zahl steht in A1 und in B1 soll der Text erscheinen, so schreibe in B1 =Textziffern(A1) - dies gilt für das ganze Blatt
---------------------------------------------------------------------------------------------------------
Verbesserte Funktion
Bei Eingabe 2356,12 Ausgabe Zweitausenddreihundertsechsundfünfzig und 12/100

>>Kopiere diese Funktion ab hier<<

Function inWorten$(wert$)
Const Blöcke = 4
'max Anzahl von Dreierblöcken in einer Zahl (z.B. 4 = max bis 999 999 999 999)
Dim Block$(Blöcke)
Dim Text$(Blöcke)
Dim Gruppe$(Blöcke)
Dim GrEndSg$(Blöcke)
Dim GrEndPl$(Blöcke)
Dim Einer$(10)
Dim Einer2$(10)
Einer$(0) = ""
Einer$(1) = "eins"
Einer$(2) = "zwei"
Einer$(3) = "drei"
Einer$(4) = "vier"
Einer$(5) = "fünf"
Einer$(6) = "sechs"
Einer$(7) = "sieben"
Einer$(8) = "acht"
Einer$(9) = "neun"
Einer2$(0) = ""
Einer2$(1) = "ein"
Einer2$(2) = "zwei"
Einer2$(3) = "drei"
Einer2$(4) = "vier"
Einer2$(5) = "fünf"
Einer2$(6) = "sech"
Einer2$(7) = "sieb"
Einer2$(8) = "acht"
Einer2$(9) = "neun"
Gruppe$(1) = ""
Gruppe$(2) = "tausend"
Gruppe$(3) = " Million"
Gruppe$(4) = " Milliarde"
' Gruppenendung Singular
GrEndSg$(1) = ""
GrEndSg$(2) = ""
GrEndSg$(3) = " "
GrEndSg$(4) = " "
' Gruppenendung Plural
GrEndPl$(1) = ""
GrEndPl$(2) = ""
GrEndPl$(3) = "en "
GrEndPl$(4) = "n "
For i = 1 To Blöcke
Block$(i) = ""
Text$(i) = ""
Next
'**************************************************************************
'* Alle Punkte entfernen
'**************************************************************************
pos = InStr(wert$, ".")
While pos > 0
wert$ = Left$(wert$, pos - 1) + Right$(wert$, Len(wert$) - pos)
pos = InStr(pos, wert$, ".")
Wend
'**************************************************************************
'* Nachkommastellen NK$ schreiben
'**************************************************************************
pos = InStr(wert$, ",")
If pos > 0 Then
NK$ = Right$(wert$, Len(wert$) - pos)
wert$ = Left$(wert$, pos - 1)
Else
NK$ = ""
End If

For i = 1 To Blöcke
If Len(wert$) > 3 Then
Block$(i) = Right$(wert$, 3)
wert$ = Left$(wert$, Len(wert$) - 3)
Else
Block$(i) = wert$
wert$ = ""
End If
If Block$(i) <> "" Then
If Len(Block$(i)) = 3 Then
If Block$(i) = "000" Then
Text$(i) = ""
ElseIf Left$(Block$(i), 1) = "1" Then
Text$(i) = "einhundert"
ElseIf Left$(Block$(i), 1) = "0" Then
Text$(i) = ""
Else
Text$(i) = Text$(i) + Einer$(Val(Left$(Block$(i), 1))) + "hundert"
End If
Block$(i) = Right$(Block$(i), 2)
End If

If Len(Block$(i)) = 2 Then
If Left$(Block$(i), 1) = "0" Then
Text$(i) = Text$(i) + Einer$(Val(Right$(Block$(i), 1)))
ElseIf Left$(Block$(i), 1) = "1" Then
If Left$(Block$(i), 2) = "11" Then
Text$(i) = Text$(i) + "elf"
ElseIf Left$(Block$(i), 2) = "12" Then
Text$(i) = Text$(i) + "zwölf"
Else
Text$(i) = Text$(i) + Einer2$(Val(Right$(Block$(i), 1))) + "zehn"
End If
ElseIf Left$(Block$(i), 1) = "2" Then
If Left$(Block$(i), 2) = "21" Then
Text$(i) = Text$(i) + "ein"
Else
Text$(i) = Text$(i) + Einer$(Val(Right$(Block$(i), 1)))
End If
If Left$(Block$(i), 2) <> "20" Then
Text$(i) = Text$(i) + "und"
End If
Text$(i) = Text$(i) + "zwanzig"
ElseIf Left$(Block$(i), 1) = "3" Then
If Left$(Block$(i), 2) = "31" Then
Text$(i) = Text$(i) + "ein"
Else
Text$(i) = Text$(i) + Einer$(Val(Right$(Block$(i), 1)))
End If
If Left$(Block$(i), 2) <> "30" Then
Text$(i) = Text$(i) + "und"
End If
Text$(i) = Text$(i) + "dreißig"
Else
If Right$(Block$(i), 1) = "1" Then
Text$(i) = Text$(i) + "ein"
Else
Text$(i) = Text$(i) + Einer$(Val(Right$(Block$(i), 1)))
End If
If Right$(Block$(i), 1) <> "0" Then
Text$(i) = Text$(i) + "und"
End If
Text$(i) = Text$(i) + Einer2$(Val(Left$(Block$(i), 1))) + "zig"
End If
End If
If Len(Block$(i)) = 1 Then
Text$(i) = Text$(i) + Einer$(Val(Right$(Block$(i), 1)))
End If
End If
If Text$(i) <> "" Then
End If
Next
For i = Blöcke To 1 Step -1
If Text$(i) <> "" Then
If Text$(i) = "eins" Then
If i > 2 Then
Text$(i) = "eine"
ElseIf i = 2 Then
Text$(i) = "ein"
End If
Text$(i) = Text$(i) + Gruppe$(i)
Text$(i) = Text$(i) + GrEndSg$(i)
Else
Text$(i) = Text$(i) + Gruppe$(i)
Text$(i) = Text$(i) + GrEndPl$(i)
End If
End If
TextG$ = TextG$ + Text$(i)
Next
If TextG$ = "" Then
TextG$ = "null"
End If
If (NK$ <> "") And (NK$ <> "0") And (NK$ <> "00") Then
If Len(NK$) = 1 Then
NK$ = NK$ + "0"
End If
TextG$ = TextG$ + " und " + NK$ + "/100"
End If
' TextG$ = Chr$(Asc(Left$(TextG$, 1)) - 32) + Right$(TextG$, Len(TextG$) - 1)
inWorten$ = TextG$
End Function

 

Dateipfad in Fußzeile

Sub FusszeileMitUPfad()
ActiveSheet.PageSetup.LeftFooter = ActiveWorkbook.FullName
End Sub

Label zur Balkenanzeige vergewaltigen

Manchmal brauche ich in einer UserForm eine einfache Balkenanzeige zur Visualisierung von Zahlenwerten. Dazu vergewaltige ich Labels!
Und das geht so:

1. Ein Label in eine UserForm einfügen.
2. Der UserForm untenstehenden Code unterjubeln.
3. In Zelle [A1] eine Zahl eingeben und staunen. Hihihi...

Ok, mein Code ist sicher primitiv, aber er soll Euch ja auch nur zum Nachdenken anregen, macht was draus! Es brauchen ja nicht nur Werte aus irgendwelchen Zellen zu sein, sondern ....

 

Private Sub UserForm_initialize()

Label1.Height = 10 'ordnet Label1 eine Höhe zu
Label1.Caption = [a1].Value 'ordnet Label1 die Zahl aus Zelle [A1] als Text zu

If [a1].Value > = 0 Then 'wenn Zahl aus Zelle [A1] größer/gleich Null dann
Label1.BackColor = &H8000& 'Hintergrundfarbe Label 1 = grün
Label1.Width = [a1].Value * 2 'Länge von Label1 = Zahl aus Zelle [A1] *2
ElseIf [a1].Value < 0 Then 'wenn Zahl aus Zelle [A1] kleiner Null dann
Label1.BackColor = &HC0& ''Hintergrundfarbe Label 1 = rot
Label1.Width = [a1].Value * -2 'Länge von Label1 = Zahl aus Zelle [A1] *-2
End If

End Sub