Excel-VBA ('Platzierung')

Hallo,

wollte mir mal paar Gedanken zum Thema von Heike über ihre „Platzierung“ von Schnupfen, Husten, Heiterkeit :wink: hermachen in Form von Makro.

Deshalb hatte ich den Ausgangsgedanken, da eine Function zu schreiben, die ich in Excel selbst aufrufen kann (wie „Anzahl“ oder „Summe“).

Nun habe ich einen Bereich den ich auswerten möchte (zb „B2:G2“). Diesen übergebe ich in der Funktion (nennen wir sie einfach mal „=Platzierung(B2:G2)“ an VBA.

Dort habe ich eine Funktion geschrieben in der ich diesen Bereich als „Bereich“ auch übernehme:

„Function Platzierung(Bereich)“ als erste Zeile.

Doch - ich hab irgendwie Problem, aus „Bereich“ herauszuholen wo nun die erste Zelle ist, die letzte Zelle (habs nur über nen Umweg geschafft, aber ich glaube das geht einfacher *g*), ob ich nun einen Spaltenbereich bearbeiten muss oder einen Zeilenbereich und welche Zelle ich dazu eigentlich auswerten muss.

Meine Überlegung: eigentlich möchte ich zb in B2:G2 die Werte haben und entsprechend in B3:G3 die „Platzierungen“ dazu. Aber nicht immer wird die Platzierung direkt unter dem Bereich sein. Somit müsste ich vielleicht auch noch der Function übergeben, welche Zelle ich bei den Werten überhaupt anspreche (die 1., die 2. …), richtig?

Ich hoffe ihr könnt mir bei beiden Fragen helfen.
Ne, „Nicht-VBA-Lösung“ hatte ich ja schon präsentiert :smile:

LG Tobi@s

Nun habe ich einen Bereich den ich auswerten möchte (zb
„B2:G2“). Diesen übergebe ich in der Funktion (nennen wir sie
einfach mal „=Platzierung(B2:G2)“ an VBA.
Doch - ich hab irgendwie Problem, aus „Bereich“ herauszuholen
wo nun die erste Zelle ist, die letzte Zelle (habs nur über
nen Umweg geschafft, aber ich glaube das geht einfacher *g*),
ob ich nun einen Spaltenbereich bearbeiten muss oder einen
Zeilenbereich und welche Zelle ich dazu eigentlich auswerten
muss.

hallo Tobias,

Function Platz(Ber As Range)
’ Adresse erste Zelle des Bereichs
MsgBox Ber(1, 1).Address
’ Adresse letzte Zelle des Bereichs
MsgBox Ber(Ber.Rows.Count, Ber.Columns.Count).Address
’ Nummer erste Zeile von Bereich
MsgBox Ber.Rows(1).Row
’ Nummer erste Spalte von Bereich
MsgBox Ber.Columns(1).Column
End Function

Meine Überlegung: eigentlich möchte ich zb in B2:G2 die Werte
haben und entsprechend in B3:G3 die „Platzierungen“ dazu. Aber
nicht immer wird die Platzierung direkt unter dem Bereich
sein. Somit müsste ich vielleicht auch noch der Function
übergeben, welche Zelle ich bei den Werten überhaupt anspreche
(die 1., die 2. …), richtig?

Richtig. Prinzipiell brauchst du noch mehr Argumente für die Funktion. Platzierung: Ist der mit den wenigsten Minuspunkten Erster oder der mit den meisten Pluspunkten, Spalten- oder Zeilenorientiert, Art der Platzierung, 1,2,2,4,5 oder 1,2,2,3,4,5.

Gruß
Reinhard