Z
| Problem | Makro |
| Zellen fotografieren und Inhalt einfügen | Sub Kamera() [A1:A9].CopyPicture [B1].Activate ActiveSheet.Paste End Sub |
| Zellinhalt ohne Formatierung verschieben Die betreffende Zelle anklicken und das Makro kopiert den Inhalt eins weiter nach recht |
von Martin Beck: Sub Ohne_Format_Verschieben() |
| Sonderzeichen | Siehe Extraseite |
| Text für Zwischenablage schreiben | Sub Zwischenablage() Dim xtext Set Testtext = New DataObject xtext = "Testtext für Zwischenablage" Testtext.SetText xtext 'kein = verwenden Testtext.PutInClipboard End Sub |
| Zufallspasswort erzeugen | Sub ZufallsPW() Dim Wert1, Wert2, Klein, Groß Klein = 96 'Zusatz für Schriftzeichen a=97 Groß = 64 'Zusatz für Schriftzeichen A=65 Randomize ' Zufallszahlengenerator initialisieren. Wert1 = Int((26 * Rnd) + 1) ' Zufallszahlen im Bereich von 1 bis 26 Wert2 = Chr(Wert1 + Klein) Wert1 = Int((26 * Rnd) + 1) Wert2 = Wert2 & Chr(Wert1 + Groß) Wert1 = Int((26 * Rnd) + 1) Wert2 = Wert2 & Chr(Wert1 + Klein) Wert1 = Int((26 * Rnd) + 1) Wert2 = Wert2 & Chr(Wert1 + Groß) Wert1 = Int((26 * Rnd) + 1) Wert2 = Wert2 & Chr(Wert1 + Klein) Wert1 = Int((10 * Rnd) + 1) Wert2 = Wert2 & Right(Wert1, 1) 'Zahl MsgBox Wert2 End Sub |
| komplette Zeilen löschen
Info: |
Folgendes Makro prüft pro Zeile die Zellfarbe
der SpalteA und löscht die
Zeile in der die Zelle Rot ist: Sub RoteZeilenLöschen() lZeile = Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row 'makro zählt Rückwärts! For i = lZeile To 1 Step -1 If Cells(i, 1).Interior.ColorIndex = 3 Then Rows(i).Delete End If Next i End Sub |
| aktive Zeile hervorheben (keine sonstigen farbige Zellen möglich) |
'Makro im VBA-Editor in die betreffende Tabelle schreiben! Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) 'Alle Farben in Tabelle löschen Cells.Interior.ColorIndex = xlNone 'neue Zeile einfärben Rows(Target.Row).Interior.ColorIndex = 34 End Sub |
| Mit importierten Zahlen kann man nicht
rechnen (sind als Text importiert) |
'Zu formatierenden Bereich selektieren Sub TextZuZahl() Dim C As Range 'Zahlenformat Standard Selection.NumberFormat = "General" For Each C In Selection 'Zahl mit 1 multiplzieren wegen Typumwandlung C = C * 1 Next C End Sub |
| Zeilenumbrüche ohne Zeilenumbruch: Das Quadrat
muss weg. Hier wird geprüft, ob die Zelle noch mit Zeilenumbruch formatiert ist. Nur wenn nicht, wird gelöscht. |
'Zeilenumbruch Chr(10)
durch anderes Zeichen im Bereich ersetzen Sub ZeilenumbruchImBereichErsetzen() Dim C As Range Dim Zn 'Ersetzung zu Zeichen: Zn = "" '<--Hier "" für nichts, " " für Leertaste For Each C In Selection If C.WrapText = False Then C.Replace What:=Chr(10), Replacement:=Zn, LookAt:=xlPart End If Next C End Sub |
| Zeichen(folge) in Text suchen | Sub ZeichenSuchen() Text = "Bert Körn" Suche = "ö" 'ganze Wörter möglich 'InStr(Erstes Zeichen, Suchtext, was?) x = InStr(1, Text, Suche) MsgBox x End Sub |
| Zeilenhöhe
in Zentimeter festlegen
|
von Frank Arendt-Theilen: Sub ZeilenhoeheInCm() Dim sHoehe As Single Dim sAktuell As Single Dim strText As String Dim strAntwort As String sAktuell = Selection.RowHeight / 29.5 strText = "Aktuelle Zeilenhöhe: " & Format(sAktuell, "###0.00 cm") _ & Chr(13) & "Geben Sie die gewünschte Zeilenhöhe für die " & _ "aktuelle Zeile oder Markierung in cm ein:" strAntwort = InputBox(strText, "Neue Zeilenhöhe festlegen", _ Format(sAktuell, "###0.00")) If strAntwort <> "" Then sHoehe = CSng(strAntwort) Selection.RowHeight = sHoehe * 29.5 End If End Sub |
| Jede zweite Zeile farbig | 'Jede ungerade Zeile wir
Grau hinterlegt, bei jeder geraden die Farbformatierung gelöscht. Sub JedeZweiteZeileGrau() Start = 3 ' Start erst ab dieser Zeile lZeile2 = Cells(Rows.Count, 1).SpecialCells(xlLastCell).Row For i = Start To lZeile2 If i Mod 2 = 1 Then Rows(i).Interior.ColorIndex = 15 Else Rows(i).Interior.ColorIndex = xlNone End If Next i End Sub |
| Zelladresse beim Verlassen dieser ausgeben | 'Makro hinter die
Tabelle, nicht in ein allgemeines Modul Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) MsgBox "Die alte Adresse lautete: " & [c1] [c1] = Target.Address End Sub Hier wird die Zelle C1 als Zwischenspeicher mißbraucht. |