Ursprungszelle herausfinden

Hallo!

(hab zwar schon einiges programmiert, VBasic ist mir aber noch neu)

Vorhaben:

  • Zelle in Excel-tabelle mit Zahlenwert
  • in gleicher Zelle (am Rand) zwei Dreiecke (Autoformen)
  • diese jeweils verknuepft mit dem Makro „plus_1“ und „minus_1“
  • diese Makros sollen den Wert der Zelle um eines erhoehen/runtersetzen
  • wohlgemerkt: den Wert der Zelle mit den Dreiecken
  • NICHT die aktive Zelle (die soll unveraendert bleiben!)

-> wie kann das Makro die Zelle, in denen die „aufrufenden“ Dreiecke stehen herausfinden?

wer hat Tips fuer mich?

Danke

cu
kai

Hallo Kai,

da Autoformen frei über dem Blatt „schweben“, wissen die nicht zu welcher Zelle die gehören. Du könntest aber die Zellreferenz z.B. fest in den zugehörgen Makros eingeben.

Allerdings frage ich mich, warum du nicht den SpinButton aus der Steuerelement-Toolbox verwendest. Der sollte eigentlich genau für diesen Zweck existiern. Der hat eine Eigenschaft LinkedCell, dort gibst du einfach ein welche Zelle er betrifft, der Rest geht von allein.

Mfg
Daniel

Hallo!

danke fuer die Infos!:

da Autoformen frei über dem Blatt „schweben“, wissen die nicht
zu welcher Zelle die gehören. Du könntest aber die
Zellreferenz z.B. fest in den zugehörgen Makros eingeben.

naja so hab ich es ja auch geloest
-> nur will ich halt sowas in verschiedenen Dateien/Blaettern nutzen
-> dann unterscheiden die Zellen sich…
(bisher hab ich dann dort halt eine „dummy-Zelle“ auf die ich mich in der „Pfeilchen-Zelle“ beziehe mit =E1 oder so…)

Allerdings frage ich mich, warum du nicht den SpinButton aus
der Steuerelement-Toolbox verwendest.

jo weil ich es schlicht nicht kenne…

Der sollte eigentlich genau für diesen Zweck existiern. Der hat eine
Eigenschaft LinkedCell, dort gibst du einfach ein welche Zelle er
betrifft, der Rest geht von allein.

-> kannst Du mir was nachhelfen?
-> im besten Fall kleines Beispielmakro oder mir sagen,
-> was ich da erstellen muss (in meiner Tabelle)?
-> mit welchen Befehlen ich da im Makro drauf zugreife?
(die „Kleinweich“-Onlinehilfen finde ich immer arg unuebersichtlich, man findet nur was, wenn man es schon vorher weiss - ich hasse diese Dinger…)

cu
kai

Hallo Kai,

naja so hab ich es ja auch geloest
-> nur will ich halt sowas in verschiedenen
Dateien/Blaettern nutzen
-> dann unterscheiden die Zellen sich…
(bisher hab ich dann dort halt eine „dummy-Zelle“ auf die ich
mich in der „Pfeilchen-Zelle“ beziehe mit =E1 oder so…)

Die Idee mit der dummy-Zelle finde ich an sich gar nicht so schlecht, da du dann wenigstens ohne Code-Änderung auskommst. Alternativ wäre z.B. eine benannte Zelle möglich, dann musst du nur in jedem Workbook die Zelle entsprechend benennen, wo die dann liegt ist egal.

Allerdings frage ich mich, warum du nicht den SpinButton aus
der Steuerelement-Toolbox verwendest.

jo weil ich es schlicht nicht kenne…

-> kannst Du mir was nachhelfen?
-> im besten Fall kleines Beispielmakro oder mir sagen,
-> was ich da erstellen muss (in meiner Tabelle)?
-> mit welchen Befehlen ich da im Makro drauf zugreife?
(die „Kleinweich“-Onlinehilfen finde ich immer arg
unuebersichtlich, man findet nur was, wenn man es schon vorher
weiss - ich hasse diese Dinger…)

Also zuerst: Makro brauchst du dafür keines, da geht vollautomatisch :wink:. Und so sollte es klappen:

  1. Rechtsklick auf eine Symbolleiste und einblenden der Symbolleiste Steuerelement-Toolbox
  2. dort sollte ein Symbol mit 2 Pfeilen (hoch und runter) durch einen Querstrich getrennt sein, lt. Quickhelp nennt sich das Drehen-Schaltfläche
  3. das Ding anklicken und an der gewünschten Position auf die Arbeitsmappe legen
  4. Rechtsklick auf das neue Objekt, Menüpunkt Eigenschaften
  5. im Eigenschaftenfenster die Eigenschaft Linked Cell auf die gewünschte Zelle einstellen (z.B. A2)
  6. Beenden des Entwurfsmodus durch klicken auf das Symbol mit Dreieck, Lineal und Bleistift in der Toolbox, das Symbol darf danach nicht mehr „gedrückt“ sein
  7. Fertig

Ich hoffe mal das du damit klar kommst, sonst einfach nochmal fragen.

MfG
Daniel

1 Like

Hallo Daniel!

erstmal Danke fuer Deine Antwort -> *Sternchen verdient hast!!*

Alternativ wäre z.B. eine benannte Zelle möglich, dann musst
du nur in jedem Workbook die Zelle entsprechend benennen, wo
die dann liegt ist egal.

gute Idee, werde ich mal testen (wenn man den Namen in versch. Blättern einer Datei unterschiedlch festlegen kann…)

Allerdings frage ich mich, warum du nicht den SpinButton aus
der Steuerelement-Toolbox verwendest.

Also zuerst: Makro brauchst du dafür keines, da geht
vollautomatisch :wink:. Und so sollte es klappen:

  1. Fertig

hat einwandfrei geklappt - nachdem ich das mit den Min/Max-Eigenschaften gerafft habe (meine Werte gehen von 600-651 statt von 0-100…)

Ein Doppelklick im Entwurf-Modus auf das Element oeffnet eine leeres Sub in VBasic -> kann man dort z.B. Spruenge in der Ziffernfolge realisieren? (in o.g. Bereich von 600-651 gibt es eigentlich nur 600-602,604-609,usw…,629,630,632,651)
-> kann man bei Klick auf Erhöhen bei aktuellem Wert von 602 z. B. automatisch bis 604 erhoehen/weiterklicken lassen?
-> wie muesste ich da vorgehen? Welches Objekt/Element/… ist dazu in VBasic anzusprechen?

Danke cu
kai

Hallo Kai,

das Change-Ereignis reicht dafür leider nicht ganz aus, da du ja wissen musst ob du von oben oder von unten auf einen bestimmten Wert kommst. (602 auf 603 sollte auf 601 springen, 601 auf 603 sollte auf 604 springen).

Zum Glück gibt’s auch dafür schon alles vorbereitet, die passenden Methoden heissen SpinButton1_SpinUp() und SpinButton1_SpinDown(), wobei SpinButton1 der Name des Controls ist. Hier bloss mal ein Beispiel wie man die 603 auslassen kann:

Private Sub SpinButton1_SpinDown()
If Range(„A1“).Value = 603 Then Range(„A1“).Value = 602
End Sub

Private Sub SpinButton1_SpinUp()
If Range(„A1“).Value = 603 Then Range(„A1“).Value = 604
End Sub

Gruß
Daniel

Hallo!

das Change-Ereignis reicht dafür leider nicht ganz aus, da du
ja wissen musst ob du von oben oder von unten …kommst.

Zum Glück gibt’s auch dafür schon alles vorbereitet…
Private Sub SpinButton1_SpinDown()
If Range(„A1“).Value = 603 Then Range(„A1“).Value = 602
End Sub

Private Sub SpinButton1_SpinUp()
If Range(„A1“).Value = 603 Then Range(„A1“).Value = 604
End Sub

Danke fuer die Infos, aber so stehe ich ja wieder beim alten Problem:
diese Makros passen wieder nur auf die Datei wo die Linked Cell auf A1 steht, beim anderen Blatt wo die Linked Cell meinetwegen B5 ist wurschteln die ja irgendwo im Nirwana rum, oder?!

-> kann SpinButton1_SpinUp/Down nicht die entsprechende Linked Cell herausfinden?

cu
kai