Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1200to1204
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nutzung der Aktiven Zelle

Nutzung der Aktiven Zelle
Guenter
Hallo,
Ich habe hier ein kleineres Excelprogramm und ein Teil ist sozusagen noch
nicht nutzbar.
Da ich eben null Ahnung von Programmierung habe, frage ich mal hier, ob
das überhaupt möglich ist, was ich da "will".
Ich fang mal an:
isPigmV : Bereich von C11 bis L23 /beinhalten Zahlen in %
wenn aktive Zelle in Bereich isPigmV
dann %-Abweichung zur aktiven Zelle anzeigen im Bereich C48 bis M48
wenn aktive Zelle nicht in Bereich isPigmV
im Bereich C48 bis M48 keinen Wert anzeigen oder anderer Vorschlag?
Function isPigmV(c As Range) As Boolean
'prüft ob die Zelle im Zellbereich "PigmV" enthalten ist
For Each r In Tabelle1.Range("PigmV")
If c.Address = r.Address Then
isPigmV = True
'       MsgBox c.Address
Else
isPigmV = False
End If
Next r
End Function

Hoffe, jemand kann mir helfen,
Günter
AW: Nutzung der Aktiven Zelle
17.02.2011 00:48:51
Josef

Hallo Guenter,
Berechnungen mit der aktiven Zelle haben nichts in einer UDF verloren. Dazu gibt's die entsprechenden Events.
Deine Aufgabe ist allerdings nicht ganz klar, meinst du so?
https://www.herber.de/bbs/user/73594.xls

Gruß Sepp

AW: Nutzung der Aktiven Zelle
17.02.2011 01:08:43
Guenter
Hallo Sepp,
Ich weiß zwar nicht was UDF ist, aber so wie ich sehe, ist das Problem gelöst ;)
Werds mal morgen in das Excelprogramm einbauen, jetzt is schon bischen spät.
Bewundernswert, wie klasse deine xls funktioniert.
Ich bedanke mich erstmal bei Dir,
Günter
Anzeige
AW: Nutzung der Aktiven Zelle
17.02.2011 01:24:52
Guenter
Hallo,
habs doch noch versucht,
Option Explicit , wo muss ich das eintragen? Ganz oben oder direkt vor dem Private Sub.
Die Zeile verhält sich nicht so, wie ich dachte.
Ähh, ich bräuchte die Differenz zu dem der aktuellen Zelle.
Sorry, das ich nerve,
Günter
...In der 1.Zeile! Übrigens muss man nicht...
17.02.2011 02:49:01
Luc:-?
…so dogmatisch sein, was die aktive Zelle betrifft, Günter (s. unten),
aber normalerweise hat Sepp insofern recht, dass eine EventProc wie bspw _SelectionChange hier leichter zu handhaben ist. Das hängt ganz von deiner (schlecht dargestellten) Zielstellung ab…
Außerdem würde die udFkt (auch meine ohne Arg2) bei jeder Eingabe/Berechnung ständig neu berechnet wdn und hätte demzufolge eher einen zufälligen Wert, was höchstwahrscheinl nicht in deinem Sinne ist…
Luc :-?
Anzeige
...ansonsten hast du halt zu wenig Angaben...
17.02.2011 03:07:17
Luc:-?
…gemacht, Günter,
Sepp konnte auch nur raten, also beklag' dich nicht…! ;-)
Wenn die Zellenzuordnung, die Sepp vermutet hat, stimmt, musst du doch nur den Divisionsoperator '/' gg den Subtraktionsoperator '-' austauschen (ggf alles nach '=' noch umkehren)…
Anderenfalls solltest du erst mal sagen, wo die Werte, von denen bzw die abgezogen wdn soll(en), stehen.
Luc :-?
AW: Nutzung der Aktiven Zelle
20.02.2011 14:52:12
Reinhard
Hallo Günter,
BDF = Benutzerdefinierte Funktion, udf ist das aus Englisch.
Im VB-EDitor Exrras---Optionen
[X] Varriablendeklaration erforderlich,
dann steht Option Explicit in allen Modulen. Gilt für alle neuen Mappen, Module ab dem Häkchensetzen.
Gruß
Reinhard
Anzeige
Die Fkt ist zwar umständl, sollte aber fktn,...
17.02.2011 02:38:54
Luc:-?
…Günter,
du musst sie nur in einer ZellFml oder einer Subprozedur (Makro) einsetzen! Allerdings sollte die udFkt für diesen speziellen Zweck noch etwas erweitert wdn…
Rem Fkt prüft, ob Arg2 in Arg1 enthalten ist und gibt  bei
'   Arg3=fehlt/0[FALSCH] Arg2/Nothing bzw =1[WAHR] Wahr/Falsch zurück
Function IsCellOf(Bereich As Range, Optional Bezug As Range, Optional ByVal NurEx As Boolean)
If Bezug Is Nothing Then Set Bezug = ActiveCell
IsCellOf = Intersect(Bezug, Bereich)
If NurEx Then IsCellOf = Not IsCellOf Is Nothing
End Function
Habe die udFkt gleich auf das unbedingt Notwendige zurechtgestutzt und außerdem verallge­meinert, so dass du diese Prüfung auch mit jedem anderen Zellbereich und jeder beliebigen Zelle von jeder beliebigen FmlStandortZelle aus durchführen kannst.
In ZellFml → C48:=WENN(IsCellOf(PigmV;;1);IsCellOf(PigmV)-vglwertzelle;"") Unter der Voraussetzung, dass das Ergebnis der 1.vglwertzelle in C48 angegeben wdn soll und der Bereichsname von C11 bis L23 PigmV ist.
Das ist im Prinzip nur ein Anwendungsbsp, da ich hierzu nicht mehr sagen kann, weil du die Beziehungen der betroffenen Zellen nicht vollständig dargestellt hast (welche Zellen wdn aktiviert, nach welchem Modus sollen die Zellen von C48 bis M48 gefüllt wdn → nach1ander bis alle Werte enthalten, können sie auch mehrfach neu berechnet/gefüllt wdn, wie ist sonst die Beziehung zu PigmV, enthalten sie evtl schon Werte und können/sollen deshalb keine Fml aufnehmen…). Wenn dir das schwerfällt, solltest du eine BspDatei hier hochladen.
Wenn du das Ganze lieber ohne ZellFmln durchführen willst/musst, kannst du die udFkt auch aus einer Subroutine heraus aufrufen. Allerdings musst du in der dann noch alles pgmieren, was die Bereitstellung der FktsArgumente und das Schreiben des FktsErgebnisses in die richtige Zelle betrifft.
Gruß Luc :-?
Anzeige
AW: Die Fkt ist zwar umständl, sollte aber fktn,...
17.02.2011 16:59:45
Guenter
Hallo,
versuch mal Beispieldatei hochzuladen.
Hab die xls von Sepp dazu hergenommen.
Hoffenlich klappt mein erster Dateiupload.
Bis bald,
Günter
https://www.herber.de/bbs/user/73603.xls
Habe entsprd Teil korrigiert, bezweifle aber,...
18.02.2011 01:19:43
Luc:-?
…dass das deinen Intentionen voll entspricht, Günter,
    If Target(1, 1)  0 Then
Cells(48, lngC) = Cells(Target(1, 1).Row, lngC) / Target(1, 1)
ElseIf Cells(Target(1, 1).Row, lngC)  0 Then
Cells(48, lngC) = "·"
Else: Cells(48, lngC) = "-"
End If
Mir ist nämlich immer noch nicht klar, wovon abgezogen subtrahiert oder was auch immer wdn soll und was das Ganze für einen Sinn macht bzw Zweck verfolgt. Da du uns das wohl nicht verraten willst, war's das von mir aus.
Gruß Luc :-?
Anzeige
AW: Habe entsprd Teil korrigiert, bezweifle aber,...
18.02.2011 01:32:44
Guenter
Hallo,
sorry, aber ich habe es bis jetzt nicht geschafft, plausibel zu erklären, was ich will.
Hab damit Schwierigkeiten :(
Aber ich lade mal einen Screen hoch, vieleicht verdeutlicht das etwas, worums mir geht.
Gruss,
Günter
Userbild
Nanu, noch aktiv?! Andere Zeitzone? Na, das...
18.02.2011 01:53:53
Luc:-?
…ist doch mal endlich was, Günter,
damit wdn wir hoffentl was anfangen können — aber nicht mehr jetzt! ;-)
Gute Nacht! Luc :-?
PS: Hatte mir beinahe gedacht, dass es um Pigmente geht, da passen meine ökonomisch-statistischen Ersatzzeichen doch wahrscheinl ohnehin nicht…
Anzeige
Also, es tut mir leid,...
19.02.2011 22:33:35
Luc:-?
…Günter,
aber es ist aus deinen beiden Bspp beim besten Willen für mich nicht ersichtlich, was da wie gerechnet wdn soll, denn du hast keine einzige Formel mit Zellbezug (als Bsp!) angegeben. Es ist nur klar, dass du mal diese und mal jene Zellen innerhalb des Bereiches PigmV auswählen willst, was dann zu einem jeweils spezifischen Ergebnis in C48:M48 (?) führen soll. Klar ist außerdem, dass eine Differenz (von %Werten) gebildet wdn soll. Was nicht klar ist, ist der Bildungsalgorithmus. Was soll wovon abgezogen wdn? Außerdem: Wie groß soll die Zellauswahl sein? 1 oder mehrere Zellen (Sepp ging von 1er ganzen Zeile aus, deren Zellen er zur jeweils 1. ins Verhältnis gesetzt hat, was offensichtl nicht dem entspricht, was du haben willst.
Man kann das sicher so oder so machen, mit auf dem Moment der Auswahl und der Auswahl aufsetzender Ereignisprozedur oder meinethalben auch mit 1er udFkt wie deiner von mir weiterentwickelten. Das nutzt aber alles rein gar nichts, wenn nicht klar wird, ob und wenn ja, was überhpt gerechnet wdn soll. Und das musst du wissen, denn du bist für den fachlichen Inhalt zuständig, wir können dir nur bei der Durchführung helfen…
Gruß+schöSo, Luc :-?
Anzeige
AW: hmm, wo liegt das Problem,
20.02.2011 01:26:52
Guenter
denn Sepp lag doch gar nicht "falsch"! Nur das Ergebnis sollte eben nicht die volle Prozentzahl, sondern nur die Differenz (+/-) zu den 100% der aktiven Zelle sein. Bezug ist immer, wie in Sepps File, jeweils jede einzelne Zelle auf der Ebene der aktiven Zelle.
also, wenn D11 aktiv ist, dann ist D48 bei 100%. C48 soll hier dann die Differenz von c11 zu D11 anzeigen.
E48 Differenz von E11 zu D11, F48 Differenz von F11 zu D11, usw.
Gruss,
Günter
Das hattest du bis jetzt noch gar nicht gesagt,...
20.02.2011 17:38:08
Luc:-?
…Günter,
obwohl ich schon danach gefragt hatte…!
Mal seh'n…! Gruß Luc :-?
AW: Das hattest du bis jetzt noch gar nicht gesagt,...
22.02.2011 00:21:03
Guenter
Hallo,
ich habe mir jetzt unprofessionell, da ich eben nix von VBA verstehe, damit beholfen, die Werte in
C49:M49 schreiben zu lassen, und mit "=WENN(C49=0%;"";WENN(C49=100%;100%;C49-100%))" in
C48:M48 das jeweilige Ergebnis schreiben zu lassen.
Beim Ergebnis über 0% und unter 100% wär noch ein + vor dem Wert super, aber das wird noch!
Besten Dank aber für die bisherige VBA-Umsetzung,
Günter
Anzeige
Sepp musste schon raten und hat das ganz...
22.02.2011 01:15:23
Luc:-?
…bestimmt nicht so gemacht wie du es haben willst, Günter,
und auch für mich geht das Ratespiel weiter, das ich inzwischen leid bin. Aus deinen Angaben ergeben sich deine Ergebnisse nicht! Versuche es doch mal mit einer einfachen manuellen Umsetzung, so, wie jeder mal anfängt. Du scheinst wirklich so wenig Ahnung von Kalkulationspgmm (nicht nur von VBA u. Xl!) zu haben, dass es dir nicht möglich zu sein scheint, exakt zu beschreiben bzw mit einfachen Formeln vorzuzeigen, was gemacht wdn soll. Da muss bestimmt noch mehr gerechnet wdn, über die von dir jetzt angegebene Hilfsformel hinaus!
Dein Auftakt mit irgendwoher besorgter udFkt hat irgendwie verwischt, dass du im Grunde genommen völlig ahnungslos bist (was du ja auch beim Level angegeben hast).
Falls sich aber deine Hilfsformel erfolgreich auf Sepps Ergebnis bezieht, dann hat nicht gestimmt, was du mir geschrieben hast, u/o die Formatierung von PigmV stimmt nicht, u/o stand das etwa in der udFkt (fiel mir nicht auf!), u/o…?
Wenn du hierauf klickst, kannst du meinen letzten Stand herunterladen, aber der entspricht nicht deinen Werten, nur die Sache mit dem Pluszeichen ist jetzt in der (benutzerdefinierten) Formatierung.
Gruß Luc :-?
PS: Durch Vgl der 2-3 PgmVersionen kommst du evtl darauf, wie die Berechnung richtig sein muss…
Anzeige
Mann, das doppelte % ist verwirrend, dann...
22.02.2011 01:56:52
Luc:-?
…lag Sepp im Prinzip schon richtig, Günter,
und hat deshalb nicht mehr geantwortet und die Auswahlzelle ist die 100%, auch, wenn sie den Wert 0 hat! Das muss ich gleich mal probieren…
So, probiert und Algorithmus geändert, aber deine Vorgabe in C50:M50 kommt doch nicht ganz raus! Hast du dich da evtl geirrt? Auch, was bei Vglswert=0 passieren soll, ist nicht klar. Ich habe den dann jetzt mal =1 gesetzt. Naja, irgendwie kommt mir das alles recht „spanisch“ vor…
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const QBerAdr As String = "PigmV", ZBerAdr As String = "C48:M48"
Dim VglZ As Range, QBer As Range, VBer As Range, ZBer As Range
Set QBer = Me.Range(QBerAdr): Set ZBer = Me.Range(ZBerAdr)
If Target.Cells.Count = 1 And Not Intersect(Target, QBer) Is Nothing Then
Set VBer = WorksheetFunction.Index(QBer, Target.Row - 10, 0)
For Each VglZ In VBer
If Target  0 Then
ZBer(VglZ.Column - 2).Value = VglZ / Target - 1
Else: ZBer(VglZ.Column - 2).Value = VglZ - 1
End If
Next VglZ
Else: ZBer = Empty
End If
Set QBer = Nothing: Set VBer = Nothing: Set ZBer = Nothing
End Sub
Kannst ja mit den roten Formeln noch experimentieren bis es stimmt…
Gruß Luc :-?
AW: Mann, das doppelte % ist verwirrend, dann...
22.02.2011 12:44:31
Guenter
Hallo,
jetzt funktionierts super; hatte auch in Zelle C50 +83,00% angegeben, das war falsch, sind -83,00%.
Nur sollte der Wert der aktiven Zelle immer auch 100% anzeigen.
Alles in allem haben wir ja jetzt kein Verständigungsproblem mehr; ist aber auch schwer zu erklären gewesen.
Bis bald,
Günter
AW: Stopp, war zu schnell ;)
22.02.2011 13:30:11
Guenter
Hallo,
nach kurzer Überlegung, ist es doch besser, die 0% beim Wert der aktiven Zelle zu belassen !
Aber könnte man integrieren, das das Feld mit dem Pigmentnamen (auf der Ebene der aktiven Zelle) farblich hervorheben?
Ich bedanke mich nochmals für die tolle Hilfe, und gehe evtl. anderen Verbesserungen des "Programms" nach ;)
Bis demnächst,
Günter
Sicher, sehe ich mir heute abend noch an,...
22.02.2011 16:38:52
Luc:-?
…dann finde ich sicher raus, Günter,
was genau du jetzt meinst… ;-)
Im Prinzip kann man alles so schön bunt machen wie es dein Screenshot des Originals zeigt… ;-)
Naja, bin auch froh, dass das doch noch was geworden zu sein scheint!
Bis dann, Gruß Luc :-?
Falls du de facto Target aus der Subroutine...
23.02.2011 02:49:32
Luc:-?
…meinst, Günter,
also die ausgewählte Zelle, ist das recht einfach. Gleiches gilt für den Titel Versuch nn. Das wäre dann nur eine HalbFestAdresse (Zeile fest, Spalte=Target.Column). Es gibt aber prinzipiell 2 Möglichkeiten, die unter xl2003 auch beide problemlos fktn würden. Die gängige 1. färbt die Zelle direkt, was den Nachteil hat, dass man die Zelle merken muss, um sie bei Auswahl einer anderen, ggf auch bei Blattwechsel, wieder zu entfärben. Dafür haben sich im Herber-Archiv (Button Alle Recherchen) über die Jahre hinweg Unmengen von Lösungen angesammelt.
Ich würde allerdings die 2.Möglichkeit bevorzugen, die auf bedingter Formatierung basiert und diese einstellt bzw ändert, was den Vorteil hat, dass idR nicht rückgefärbt wdn muss; das macht dann die xlAutomatik. Es könnte aber sein, dass das hier anderweitig doch zu aufwendig wird, aber das muss ich tagsüber noch ausprobieren. Jetzt wird's allerdings knapp, denn heute nacht verschwindet der Thread für immer im Archiv. Notfalls musst du noch mal nachfragen.
Ansonsten viel Erfolg beim Probieren und evtl Anpassen!
Gruß Luc :-?
So, jetzt habe ich die BspDatei noch 1mal...
23.02.2011 09:35:03
Luc:-?
…überarbeitet, Günter,
und dir für deinen letzten Wunsch mehrere Möglichkeiten eingebaut. Wenn der Pigmentname nicht vor die Ergebniszeile geschrieben wdn darf/kann, musst du aus der Ereignisproz alles entfernen, was mit TBer anfängt bzw zusammenhängt (war auch in der 1.Version nicht enthalten). Die BedingtFormatierung der PigmNamenSpalte musst du dann allerdings nach dem Vorbild der Versuche-Kopfzeile umgestalten (natürlich mit ZEILEn- statt SPALTEn-Vgl). In deren BedingtFormat-Formeln kommt (ebenso wie in der der Ergebniszeile) deine udFkt in meiner Variante als IsCellOf (noch 1mal korrigiert) zum Einsatz.
Einfach hier klicken!
Gruß und viel Erfolg, Luc :-?
Danke, Fall abgeschlossen ;)
23.02.2011 22:30:09
Guenter
Danke, an alle Helfer, die sich um mein Problem gekümmert haben
und meiner Excel-Datei mehr Qualität eingehaucht haben!
Bis demnächst,
Günter
Bitte sehr! Gruß owT
24.02.2011 00:57:25
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige