Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
592to596
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
592to596
592to596
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eingabe und Ausgabe in der gleichen Zelle

Eingabe und Ausgabe in der gleichen Zelle
07.04.2005 19:10:46
Dr.
Schönen guten Tag,
ich habe folgendes Problem.
Ich würde gerne eine Subtraktion durchführen ;)
Soweit sogut, ABER es muss alles in einer Zelle ablaufen.
Beispiel:
Ich möchte 4500 subtrahieren in der Zelle C5
Ich schreibe in die Zelle C5 nun 5000 rein und springe zur nächsten Zelle und nun sollte in C5 500 stehen.

Ist das machbar?
Ich hab leider in Excel keine Hilfe dazu gefunden und hier im Forum auch schon rumgestöbert, aber bisher noch nicht fündig geworden.
Is ja auch verdammt viel los hier ;)
Kennt sich mit der Problematik jemand aus?
Kann mir jemand weiterhelfen?
Grüße, Doc Hilflos

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ohne VBA keine chance...
07.04.2005 19:35:43
ransi
hallo hilfloser
realnames sind hier eigentlich üblich.
Ohne VBA wirst du da nicht weiter kommen.
versuchs mal so:
rechte maus auf den tabellenreiter.
code anzeigen
in das sich öffnende fenster diesen code reinkopieren.


      
Option Explicit
Dim zelle As Double
Private 
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$5" Then
    Application.EnableEvents = True
    
Exit Sub
End 
If
On Error Resume 
Next
If IsNumeric(Target.Value) Then
    Application.EnableEvents = False
    Target.Value = zelle - Range(
"c5").Value
    zelle = Range(
"c5").Value
End 
If
Application.EnableEvents = True
End 
Sub 


..und dann mal ein wenig damit experimentieren..
ransi
Anzeige
ziehe meine antwort zurück
07.04.2005 19:51:55
ransi


      
hallo
war blödsinn eben die antwort.
ersetz den code mal durch diesen:
Option Explicit
Private 
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$5" Then
   
If IsNumeric(Target.Value) Then
        Application.EnableEvents = False
        Target.Value = Target.Value - 4500
    End 
If
End 
If
Application.EnableEvents = True
End 
Sub
ransi 


Anzeige
AW: ziehe meine antwort zurück
08.04.2005 13:56:40
Dr.
Hiho ransi,
herzlichen Dank für die superschnelle Antwort.
Hat voll gut funktioniert.
Mensch hat das gedauert, bis ich heute diesen Thread wieder gefunden hab, is ja echt viel los hier.
So, jetzt geht meine Arbeit erst richtig los. Ich muss dat Ding jetzt für ca. 100 Zellen anpassen. gibts da eigentlich en Trick, wie ich das Teil einfacher in die Zellen kopieren kann oder muss ich 100 mal in der VBA Abfrage die Zelle ändern?
Sorry wenn ich Dich mit Fragen löchere, aber ich hab leider kein Plan von VBA.
Und ich such mir immer deshalb ein Pseudonym aus, weil ich es witzig finde und es in meinen Augen im Endeffekt mehr aussagt als ein Name oder man wenigstens drüber lachen kann. Denn ein Name im Netz ist im Prinzip ja genauso anonym, wie ein Pseudonym.
Ok genuch philosophiert ;)
Danke nochmals und viele Grüße,
Torsten
Anzeige
geht mit intersect, aber mehr infos sind nötig.
08.04.2005 15:15:27
ransi
hallo torsten
man kann mit intersect abfragen ob die activecell in einem bereich liegt für den das ganze gelten soll.
wenn nicht, dann exit sub.
ist das ein zusammenhängender bereich oder sind die zellen wild über das blatt verstreut?
ransi
AW: geht mit intersect, aber mehr infos sind nötig
08.04.2005 15:35:18
Dr.
Hiho wieder mal,
die Zellen sind nur in einer Spalte, aber nicht aneinanderhängend.
Es geht los mit K3, dann K5, dann K7, dann K9 usw. bis K109.
Aber mach Dir mal keinen Stress, wenn das ganze zu viel act für Dich wird, dann kopier ich deinen geilen Code, bzw. einen Teil davon eben 109 mal und änder es von Hand ab. Hast mir jetzt schon viel geholfen.
Bis denne,
Torsten
Anzeige
für jede zelle 4500?
08.04.2005 15:54:25
ransi
hallo thorsten

das mit dem 109 mal kopieren lass mal lieber.
du willst ja schließlich auch noch mit excel arbeiten.
kannst du mämlich nicht mehr vernünftig wenn bei jeder zellenänderung 109 codes ablaufen.
vor lauter sanduhr geht dann nix mehr.
soll für jede zelle die 4500 gelten?
ransi
AW: für jede zelle 4500?
08.04.2005 16:08:19
Dr.
Hiho ransi,
ja in jeder Zelle soll 4500 subtrahiert werden.
Na in dem Fall nochmal Danke,
Torsten
AW: für jede zelle 4500?
08.04.2005 16:21:08
ransi
hallo thorsten
Dim bereich As Range

Private Sub Worksheet_Activate()
Dim spalten As Long
For spalten = 3 To 109 Step 2
If bereich Is Nothing Then Set bereich = Range("K3")
Set bereich = Application.Union(bereich, Cells(spalten, 11))
Next
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, bereich) Is Nothing Then
If IsNumeric(Target.Value) Then
Application.EnableEvents = False
Target.Value = Target.Value - 4500
End If
End If
Application.EnableEvents = True
End Sub

in der ersten procedur wird der bereich festgelegt für den das gelten soll.
die variable "Bereich" wird bei jeder zelländerung abgefragt.
wenn die geänderte zelle dadrin liegt wird abgezogen.
musste mal ein wenig mit experimentieren...
ransi
Anzeige
AW: für jede zelle 4500?
08.04.2005 19:24:49
Dr.
Hiho ransi,
ich habs ausprobiert und bekomme immer einen Laufzeitfehler 5 und diese Spalte
If Not Intersect(Target, bereich) Is Nothing Then
ist gelb markiert. Ich hab auch schon viel rumprobiert und experimentiert, aber eher geraten als gewusst. Hat natürlich nichts gefruchtet.
Wäre nett, wenn Du mir dieses eine Mal noch aus der Patsche helfen würdest.
Grüße,
Torsten
AW: für jede zelle 4500?
08.04.2005 21:07:30
ransi


      
hallo thorsten
habe den code zum bestimmen des bereiches in das worksheet_activate gepackt damit der bereich nur EINMAL festgelegt werden muss.
das passiert wenn du das blatt aktivierst.
also von einem anderen blatt in das eigentliche blatt wechselst.
versuchs mal so:
Dim bereich As Range
Private 
Sub Worksheet_Change(ByVal Target As Range)
Dim spalten As Long
If Not bereich Is Nothing Then GoTo weiter
For spalten = 3 To 109 Step 2
    
If bereich Is Nothing Then Set bereich = Range("K3")
    Set bereich = Application.Union(bereich, Cells(spalten, 11))
Next
weiter:
If Not Intersect(Target, bereich) Is Nothing Then
   
If IsNumeric(Target.Value) Then
        Application.EnableEvents = False
        Target.Value = Target.Value - 4500
    End 
If
End 
If
Application.EnableEvents = True
End 
Sub
hoffentlich ist das nicht zu verwirrend.
ransi 


Anzeige
AW: für jede zelle 4500?
10.04.2005 14:39:06
Dr.
Jippppppiieeeeeeeeeee
jippie jippieee jipppiiee
es klappt,
es klappt.
Danke, danke, danke, ransi.
Hast mir echt super gholfen.
Bis dann,
Torsten
freut mich wenns klappt..o.T.
10.04.2005 16:37:32
ransi

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige