Tag Archives: vba

#Excel #VBA #Funktion verkettet Verweisergebnisse

Tipp VBA SVerweisM

Mit VBA können Sie eigene Funktionen kreieren.

Die hier hab ich SVerweisM genannt. Sie sucht wie der SVERWEIS nach dem Vorkommen einen Schlüsselbegriffs, liefert aber eine Textwurst aus allen möglichen Treffern (Trennzeichen ist das vierte Argument).

War übrigens eine Auftragsarbeit 🙂

Public Function SVerweisM(was As Variant, wo As Range, Ergebnisspalte As Long, Trennzeichen As Variant) As Variant
Dim Erg As Variant
Dim Zeile As Long
Erg = „“

For Zeile = 1 To wo.Rows.Count
If wo.Cells(Zeile, 1).Value = was Then
Erg = Erg & IIf(Erg <> „“, Trennzeichen, „“) & wo.Cells(Zeile, Ergebnisspalte)
End If
Next Zeile

SVerweisM = Erg

End Function

#VBA Codeschnipsel füllt #Luecken in #Excel

Tipp VBA LueckenFuellenZur Abwechslung etwas VBA.

Folgende Prozedur füllt die Lücken in einem markierten einspaltigen Bereich in Excel nach unten aus – und zwar so lange, bis ein neuer Inhalt kommt, dann wird die nächste Lücke mit dem neuen Inhalt gefüllt, und so weiter, …

ach was, genug der Worte: siehe vorher-nachher-Bild!

 

 

Sub LueckenFuellen()

Dim sRng As Range
Set sRng = Selection
Dim aZeile As Long
Dim eZeile As Long
Dim Zeile As Long
Dim Spalte As Long

aZeile = sRng.Row
eZeile = sRng.Row + sRng.Rows.Count – 1
Spalte = sRng.Column
Dim zCont As Variant

For Zeile = aZeile To eZeile
If Not IsEmpty(Cells(Zeile, Spalte)) Then
zCont = Cells(Zeile, Spalte).Value
Else
Cells(Zeile, Spalte).Value = zCont
End If
Next Zeile
End Sub

(Lässt sich übrigens noch ein wenig aufpolieren, klar. Allerdings: weniger dirty bedeutet immer auch weniger quick. Dem Kunden genügt’s jedenfalls auch so 🙂 )

#Spaltenbuchstabe in #Excel per #VBA

#Spaltenbuchstabe in #Excel per #VBA

Jetzt haben Sie in Excel VBA mühevoll die Nummer einer Spalte herausgefunden, brauchen aber nun für eine Situation (Möglichkeiten gibt’s da viele – Sortieren, Duplikatsuche, …) den passenden Spaltenbuchstaben?

Hier ist eine hübscher Ausdruck, der genau das liefert:

Split(Cells(1, myCol).Address, „$“)(1)

myCol = die Zahl, die in einen Spalten-buchstaben umgewandelt werden soll, z.B. 28
Cells(1,myCol).Address ist dann nämlich z.B. „AB1“
Und Split nimmt aus dieser Textwurst das Häppchen nach dem ersten und vor dem zweiten Dollarzeichen  AB

#VBA #Shape #Rainbow

#VBA #Shape #Rainbow

Regenbogen leicht gemacht:
Linie zeichnen, Makro ausführen. Das Makro versechsfacht die gerade markierte Linie mit Versatz (von der Stärke der Linie abhängig), und weist ihr jeweils eine der vorhandenen Linienformatvorlagen zu – wenn die Theme Colours einen Regenbogen ergeben, wird’s farbenprächtigst. Am Schluss wird noch gruppiert, damit das spätere Handling leichter wird.
Was, Sie wollen sich das Makro nicht selbst ausdenken? Bitte sehr, nehmen Sie dieses:

Sub Rainbow()

 Dim myShp As ShapeRange
 Dim I As Long
 Dim FF(6) As String
 Dim Style(6) As Long
 Dim Offset As Long
 'Styles (Formatvorlagen) muss man einfach abzählen - 14 ist zB der letzte der moderaten Styles
 Style(1) = msoLineStylePreset14
 Style(2) = msoLineStylePreset9
 Style(3) = msoLineStylePreset11
 Style(4) = msoLineStylePreset13
 Style(5) = msoLineStylePreset10
 Style(6) = msoLineStylePreset12
 
 Set myShp = Selection.ShapeRange
 Offset = myShp.Line.Weight * 0.75 'Versatz muss weniger sein als die Linie dick ist
 FF(1) = myShp.Name
 myShp.ShapeStyle = Style(1)
 For I = 2 To 6
 Selection.Copy
 Selection.PasteAndFormat (wdPasteDefault)
 Set myShp = Selection.ShapeRange
 FF(I) = myShp.Name
 ActiveDocument.Shapes.Range(Array(FF(I))).Select
 myShp.Left = myShp.Left + Offset
 myShp.Top = myShp.Top + Offset
 myShp.ShapeStyle = Style(I)
 Next I

 ActiveDocument.Shapes.Range(Array(FF(1), FF(2), FF(3), FF(4), FF(5), FF(6))).Select

 Selection.ShapeRange.Group
End Sub