mit Suchen (bei IE Tastenkombination Strg+F) kann man schnell zu den einzelnen Themen springen
F5:
Booten im abgesicherten Modus
F8:
Das Bootmenü wird aktiviert
Shift+F5 Booten der
Eingabeaufforderung
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")
Sub test() |
Füge eine Textmarke in die Dokumentenvorlage ein mit dem
Namen "MeineMarke" und kopiere folgenden Code in die Dokumentenvorlage:
Sub AutoNew() |
Sub Start() Sub Schließen() |
=WERT(LINKS(TEXT(A1;"???/???");3)) bzw. |
userform.DoEvents 'Userform neu aufbauen |
Sub BlätterSortieren() |
folgende Prozedur sollte Dein "Problem" lösen - inklusive
Sicherheitsabfrage, falls die Zelle A1 leer ist ...
Sub Tabellenname() |
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 |
Sub Drucken() |
Const VK_NUMLOCK = &H90 Sub Numlock_aus() |
Const VK_NUMLOCK = &H90 Sub Numlock_ein() Sub Numlock_aus() Sub Numlock_umkehren() |
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
=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).
Sub Zurueck() |
Wenn
also die TextBox den Focus bekommt, erscheint im Label "Hallo". Beim Verlassen
wird das Label wieder zurückgesetzt.
Private Sub TextBox1_Enter() |
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 |
' Ersetzen von äöü |
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 |
das geht mit folgender VBA-Zeile:
Fußzeile Mitte
ActiveSheet.PageSetup.CenterFooter =
ActiveWorkbook.FullName & "\" & ActiveSheet.Name |
im Projekt-Explorer auf die Tabelle1 doppelklicken und
diesen Code einfügen, fertig.
Private Sub Worksheet_Deactivate() |
Sub ListeFarben() |
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))
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() |
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!
Tabellenname in Zelle einfügen ??
1)Pfad, Dateiname und Blattname |
...aber probier mal das da:
------------------------------------
Private Sub Workbook_Open() |
Public Rueckmeldung As Integer Private Sub Workbook_BeforeClose(Cancel As
Boolean) |
Du fügst in Deine Arbeitsmappe eine neue Tabelle ein, in der Du die ganzen Sverweise aufführst.
Dort
listest Du mit
Sub TabNamen() |
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.
Workbooks.Open FileName:="C:\Eigene
Dateien\test.xls", password:="Paßwort" Schutz auf einem Register aufheben |
Application.RecentFiles.Add Name:="hurra.xls"
|
wenn
der kommentar angezeigt wird mit rechter maustaste reinklicken
teste mal folgendes makro
Sub KommentarSchrift() |
=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
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))
Range("A" & Cells(Rows.Count, 1).End(xlUp).Row +
1).Select
für spalte A
Tastenkombination
Strg + Bild nach
unten-Taste
nzw.
Strg + Bild
nach oben-Taste drücken
hier
ein makro zur Anzeige der Datein in einem bekannten Ordner
Sub Test() |
schreibe folgenden Code
Private Sub TextBox1_Change() |
speicherst Du auch mit:
ActiveWorkbook.SaveAs FileName:= "Test.csv",
FileFormat:=xlCSV
Das FileFormat ist wichtig. Bei mir klappt's.
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 &.
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 |
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
so
siehts aus:
Sub DiagrammMArkierenundGIFErstellen() |
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
das
klappt z.b. wie folgt:
Sub InLetzteZelle()
Range("A65536").End(xlUp).Select
MsgBox ActiveCell.Row
End Sub
=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
'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
Sub
FusszeileMitUPfad() |
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