Microsoft Excel

Herbers Excel/VBA-Archiv

Vorbelegung | Herbers Excel-Forum


Betrifft: Vorbelegung von: Sandra
Geschrieben am: 13.11.2009 18:04:32

Hallo zusammen,

stehe vor folgemdem Problem.

Wenn ich in A2 was eintrage, dann soll in D2 60 % und E2 40 % eingetragen werden. Dieser Wert soll aber auch manuell überschrieben werden können (z.B. D2 = 70 %). Diese Art Wenn-Formel möchte ich dann bis A1000 runterziehen.

Kann mir hier jemand helfen?

Vielen Dank

Viele GRüße
Sandra

  

Betrifft: AW: Vorbelegung von: Heinz A. Wankmüller
Geschrieben am: 13.11.2009 18:10:30

Hallo Sandra,
in einer Zelle können nicht gleichzeitig eine Formel und ein Wert stehen. Wenn du einmal einen Wert manuell eingegeben hast, ist die Formel unwiderruflich weg (außer natürlich gleich danach mit zurück).
Du könntest eventuell folgende Formel (in D2) verwenden (indem du in F2 den neuen Wert einträgst):
=WENN(F2<>"";F2;A2) , was allerdings nicht viel Sinn ergibt, da könntest du ja gleich den Wert in A2 verändern, oder?
in E2 würde immer die Formel =100-D2 stehen.
Gruß
Heinz


  

Betrifft: AW: Vorbelegung von: Sandra
Geschrieben am: 13.11.2009 19:39:02

Gibt es denn eine andere Lösung für mein Problem? Beispielsweise über VBA?


  

Betrifft: AW: Vorbelegung von: Christian
Geschrieben am: 13.11.2009 20:39:44

Hallo Sandra,
Schreibe zB in D1 den Wert 0,6 (Format = %)
In D2 die Formel: = A2 * $D$1
in E2 die Formel: = A2 - D2
Jetzt kannst du die Anteile zentral in der Zelle D1 ändern. Das gilt dann natürlich für alle Zeilen D2 bis Ende und E2 bis Ende.

Gruß
Christian


  

Betrifft: ähnliches problem... von: robert
Geschrieben am: 13.11.2009 21:09:36

hi,

vielleicht hilft dieser beitrag...

gruß
robert

https://www.herber.de/forum/messages/1115507.html


  

Betrifft: AW: ähnliches problem... von: Sandra
Geschrieben am: 14.11.2009 12:23:26

Hallo Robert,

vielen Dank für den Beitrag. Ich habe von VBA aber eigentlich keine Ahnung.

ICh möchte - wenn ich in A2 was eintrage - , dass in D2 60 % und in E2 40 % eingetragen wird. Dieser Wert soll anschließend manuell änderbar sein (= also keine Formel, wie ich jetzt gelernt habe).

Die Funktion oder wie man das nennt, soll bis A1000 möglich sein. Es handelt sich hier um ein Kassenbuch, was sich so langsam füllt.

Kann mir hier jemand helfen?

VG
Sandra


  

Betrifft: kannst ja mal testen ob es so geht. von: Tino
Geschrieben am: 14.11.2009 12:49:25

Hallo,

kommt als Code in Tabelle

Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Bereich As Range 
Set Bereich = Intersect(Range("A2:A1000"), Target) 
 
If Not Bereich Is Nothing Then 
 With Bereich 
    .Offset(0, 3).FormulaR1C1 = "=IF(RC[-3]="""","""",RC[-3]*60%)" 
    .Offset(0, 3).Value = .Offset(0, 3).Value 
    .Offset(0, 4).FormulaR1C1 = "=IF(RC[-4]="""","""",RC[-4]*40%)" 
    .Offset(0, 4).Value = .Offset(0, 4).Value 
 End With 
End If 
 
End Sub 
 



Gruß Tino


  

Betrifft: ..da tut sich nichts-warum?.. von: robert
Geschrieben am: 14.11.2009 13:09:12




  

Betrifft: Bei mir tut sich aber was... von: Sandra
Geschrieben am: 14.11.2009 13:41:38

Also bei mir tuts sich was. Aber in den Spalten D und E werden folgende Werte eingetragen.

24089,4 16059,6

Überschreiben kann ich sie auch.

Jetzt muss da nur noch 60 % bzw 40 % stehen. Dann glaube ich, ist es genau das was ich gerne
hätte. :-)


  

Betrifft: AW: Bei mir tut sich aber was... von: Nepumuk
Geschrieben am: 14.11.2009 13:53:10

Hallo,

versuch es mal so:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bereich As Range
    
    Set Bereich = Intersect(Range("A2:A1000"), Target)
    
    If Not Bereich Is Nothing Then
        Application.EnableEvents = False
        With Bereich
            .Offset(0, 3).Value = 0.6
            .Offset(0, 4).Value = 0.4
        End With
        Application.EnableEvents = True
    End If
    
    Set Bereich = Nothing
End Sub

Die Spalte D und E als Prozent formatieren!

Momentan ist es aber so, wenn der Wert in Spalte A nochmal geändert wird, das Programm wieder die 60% bzw. 40% rein schreibt. Wenn das nicht sein soll, dann müssen wir das ganze in eine Schleife packen und eine Abfrage vor dem schreiben setzen.

Gruß
Nepumuk


  

Betrifft: ..hier meine Datei... von: robert
Geschrieben am: 14.11.2009 13:53:30

hi,

was ist zu deiner datei anders ?

gruß
robert

https://www.herber.de/bbs/user/65896.xls


  

Betrifft: AW: ..hier meine Datei... von: Sandra
Geschrieben am: 14.11.2009 14:01:33

Hallo Nepumuk,

das klappt bestens. Beim sortieren bleiben die Werte auch erahlten. Wenn ich da jetzt doch noch einmal an Spalte A ran muss, dann muss ich dran denken. Im Normalfall sind die Werte 60 / 40, so dass es selten zu einer Korrektur kommen wird.

Könntest Du mir vielleicht zeigen, wie man das umbauen müsste, wenn man statt Spalte A nun auf Spalte B prüfen will. Und hier die Besonderheit: nur bei Eingabe 2 und 5 sollen die Zellen D und E mit 60 und 40 vorbelegt werden.

Könnte nämlich sein, dass mein Chef diese Variante bevorzugt. Auch hierfür vielen Dank!

VG
Sandra


  

Betrifft: AW: ..hier meine Datei... von: Nepumuk
Geschrieben am: 14.11.2009 14:03:26

Hallo Robert,

so wie ich das verstanden habe, soll da tatsächlich immer 60% bzw. 40% drin stehen. Aber nich die vom eingegebenen Betrag sondern einfach so, ohne was zu berechnen.

Gruß
Nepumuk


  

Betrifft: @Robert von: Tino
Geschrieben am: 14.11.2009 14:07:30

Hallo,
es wird in die Spalte D 60% von A eingetragen und in E 40% von A.

Der Code kommt in die entsprechende Tabelle nicht in ein Modul.

Gruß Tino


  

Betrifft: @Robert, hier noch meine Beispieldatei von: Tino
Geschrieben am: 14.11.2009 14:14:41

Hallo,
zum spielen.

https://www.herber.de/bbs/user/65898.xls

Gruß Tino


  

Betrifft: Habe noch ne Frage... von: Sandra
Geschrieben am: 14.11.2009 14:20:41

Hallo Nepumuk,

das klappt bestens. Beim sortieren bleiben die Werte auch erahlten. Wenn ich da jetzt doch noch einmal an Spalte A ran muss, dann muss ich dran denken. Im Normalfall sind die Werte 60 / 40, so dass es selten zu einer Korrektur kommen wird.

Könntest Du mir vielleicht zeigen, wie man das umbauen müsste, wenn man statt Spalte A nun auf Spalte B prüfen will. Und hier die Besonderheit: nur bei Eingabe 2 und 5 sollen die Zellen D und E mit 60 und 40 vorbelegt werden.

Könnte nämlich sein, dass mein Chef diese Variante bevorzugt. Auch hierfür vielen Dank!

VG
Sandra


  

Betrifft: danke ich bin aber nicht Nepumuk, von: Tino
Geschrieben am: 14.11.2009 14:29:35

Hallo,
vielleicht bin ich mal irgendwann so Gut wie er. ;-)


Für Spalte B mach aus der Zeile

Set Bereich = Intersect(Range("A2:A1000"), Target)

diese

Set Bereich = Intersect(Range("B2:B1000"), Target)

Gruß Tino


  

Betrifft: Stopp, ich habe meinen Beitrag von: Sandra
Geschrieben am: 14.11.2009 14:34:46

einfach wiederholt, weil plötzlich nur noch Robert im Mittelpunkt stand. :-)

Deine Lösung betrifft aber nur die Änderung der Spalte, ich hatte aber auch was anderes gefragt.

Könntest Du mir vielleicht zeigen, wie man das umbauen müsste, wenn man statt Spalte A nun auf Spalte B prüfen will. Und hier die Besonderheit: nur bei Eingabe 2 und 5 sollen die Zellen D und E mit 60 und 40 vorbelegt werden.

Wenn Männer sich unterhalten, bleiben die Frauen auf der Strecke..... :-(


  

Betrifft: AW: Stopp, ich habe meinen Beitrag von: Tino
Geschrieben am: 14.11.2009 15:13:31



Hallo,

hier mit zwei Varianten, einmal den Prozentwert aus Spalte B wenn in B 5 oder 6 steht.
Format der Zelle wird auf Standard gestellt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range

Set Bereich = Intersect(Range("B2:B1000"), Target)
 
If Not Bereich Is Nothing Then
 Application.EnableEvents = False
 With Bereich
    .Offset(0, 2).FormulaR1C1 = "=IF(AND(RC[-2]<>2,RC[-2]<>5),"""",RC[-2]*60%)"
    .Offset(0, 2).NumberFormat = "General"
    .Offset(0, 2).Value = .Offset(0, 2).Value
    .Offset(0, 3).NumberFormat = "General"
    .Offset(0, 3).FormulaR1C1 = "=IF(AND(RC[-3]<>2,RC[-3]<>5),"""",RC[-3]*40%)"
    .Offset(0, 3).Value = .Offset(0, 3).Value
  End With
 Application.EnableEvents = True
End If
 
End Sub
Und hier wird 60% oder 40% in die Zellen geschrieben und das Format auf Prozent gestellt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range

Set Bereich = Intersect(Range("B2:B1000"), Target)

If Not Bereich Is Nothing Then
 Application.EnableEvents = False
 With Bereich
    .Offset(0, 2).FormulaR1C1 = "=IF(AND(RC[-2]<>2,RC[-2]<>5),"""",60%)"
    .Offset(0, 2).NumberFormat = "0%"
    .Offset(0, 2).Value = .Offset(0, 2).Value
    .Offset(0, 3).NumberFormat = "0%"
    .Offset(0, 3).FormulaR1C1 = "=IF(AND(RC[-3]<>2,RC[-3]<>5),"""",40%)"
    .Offset(0, 3).Value = .Offset(0, 3).Value
 End With
 Application.EnableEvents = True
End If

End Sub
Gruß Tino

www.VBA-Excel.de




  

Betrifft: meinte, wenn in Spalte B 2 oder 5 steht. oT. von: Tino
Geschrieben am: 14.11.2009 15:21:10




  

Betrifft: Variante 2 funktoniert aber nicht. Es von: Sandra
Geschrieben am: 14.11.2009 15:49:15

passiert gar nichts, Tino.

Und ich habe den neuen Beitrag nur eröffnet, weil ich von Dir keine Antwort mehr erhalten habe. Was sollte ich sonst tun? Immer wieder Frage offen?

Ich habe m.E. nett formuliert. Jedenfalls passiert bei Deiner zweiten Variante nix. Bei 2 oder 5 hätte ich nun einen Eintrag erwartet. Mache mal wieder Frage offen. :-)


  

Betrifft: AW: Variante 2 funktoniert aber nicht. Es von: Tino
Geschrieben am: 14.11.2009 16:05:05

Hallo,
ich bin auch nur ein Mensch und kann keinen Code aus dem Ärmel schütteln.

hier die Beispieldatei.
Den zweiten Code habe ich auskommentiert,
falls dieser gewünscht diesen aktivieren (Hochkommas löschen) und den anderen löschen.

https://www.herber.de/bbs/user/65904.xls

Gruß Tino


  

Betrifft: Problem besteht noch von: Sandra
Geschrieben am: 14.11.2009 16:45:10

Hallo Tino,

natürlich bist Du nur ein Mensch und ich kenne Dich eigentlich auch nur als einen sehr hilfsbereiten. Aber ich weiß ehrlich nicht, warum Du jetzt so böse auf mich bist.

Zum Fehler selbst:
Ich bekomme in einer geschützten Datei (die Felder, wo Du die Werte einträgst sind aber ungeschützt) immer einen Laufzeitfehler (Anwendungs- oder objektdefinierter Felder). Im Editor ist diese Zeile markiert:
.Offset(0, 6).FormulaR1C1 = "=IF(AND(RC[-6]<>2,RC[-6]<>5),"""",60%)"

Weißt Du woran es liegen könnte? Habe es schon versucht, den Schutz vorher rauszuznehmen, aber der Fehler kommt trotzdem.

Wenn nicht, ist es auch kein Weltuntergang. Dann trage ich die Werte manuell ein.

Liebe Grüße
Sandra


  

Betrifft: AW: Problem besteht noch von: Tino
Geschrieben am: 14.11.2009 17:00:52

Hallo,
ich finde es einfach nicht schön einfach einen neuen Beitrag anzufangen und die anderen links liegen zu lassen.

Zu Deinem Problem, kannst Du mal eine Datei hochladen wo dieser Fehler auftritt.
Kann auch geschützt sein, schreibe nur das Kennwort dabei damit ich damit was machen kann.
Wenn ich dich richtig verstanden habe, möchtest Du die 2. Variante.

Gruß Tino


  

Betrifft: AW: Problem besteht noch von: Sandra
Geschrieben am: 14.11.2009 17:22:15

Hallo,

ich habe es doch schon begründet. Es wurden zwischen Euch beiden immer mehr Beiträge und meine Fragen wurden nicht "beachtet" bzw. wieder überschrieben. Ich kann ja verstehen, dass Du Robert helfen willst aber es gehört sich auch nicht von Robert, da einfach seine eigenen Beiträge reinzubringen. Ich würde zumindest nicht machen. Aber das Thema ist nun durchgekaut, es tut mir leid. Du warst ja gar nicht gemeint.

Ich habe die Tabelle jetzt aus der Datei kopiert und da funktioniert der Code. Jetzt verstehe ich die Welt gar nicht mehr. Muss mal schauen, was sich da gegenseitig ärgert. Die ganze Datei kann ich Dir nämlich nicht zu schicken.

Weißt Du spontan, woran sowas liegen könnt?

Liebe Grüße
Sandra


  

Betrifft: AW: Problem besteht noch von: Tino
Geschrieben am: 14.11.2009 17:30:33

Hallo,
so spontan weis ich auch nicht.
Ist die Tabelle geschützt, kannst Du dies Zeile noch einfügen und testen.

ActiveSheet.Protect Password:="xxx", UserInterfaceOnly:=True

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range

Set Bereich = Intersect(Range("B2:B1000"), Target)

If Not Bereich Is Nothing Then
 Application.EnableEvents = False
 'Dein Passwort anpassen 
 ActiveSheet.Protect Password:="xxx", UserInterfaceOnly:=True
    With Bereich
       .Offset(0, 2).FormulaR1C1 = "=IF(AND(RC[-2]<>2,RC[-2]<>5),"""",60%)"
       .Offset(0, 2).NumberFormat = "0%"
       .Offset(0, 2).Value = .Offset(0, 2).Value
       .Offset(0, 3).NumberFormat = "0%"
       .Offset(0, 3).FormulaR1C1 = "=IF(AND(RC[-3]<>2,RC[-3]<>5),"""",40%)"
       .Offset(0, 3).Value = .Offset(0, 3).Value
    End With
 Application.EnableEvents = True
End If

End Sub
Gruß Tino


  

Betrifft: @ Tino : jetzt kappt es --> von: Sandra
Geschrieben am: 14.11.2009 17:31:03


Habe jetzt alle Blätter mit den Codes in eine neue Datei gepackt und da funktioniert es.

Vielen Dank und schönes Wochenende!


  

Betrifft: super, noch schönes WE oT. von: Tino
Geschrieben am: 14.11.2009 17:35:33




  

Betrifft: @Sandra... von: robert
Geschrieben am: 14.11.2009 17:48:46

hi,

dass du nicht allein auf der welt bist, hast du schon mitbekommen-oder?

schau dir mal einige beiträge an,
da kann es schon vorkommen, dass querfragen kommen, die das ursprüngliche thema betreffen.

ungeduld-dein name ist .....

und es freut mich zu lesen, dass du genau weisst, was zu tun und nicht zu tun ist.

gruß
robert


  

Betrifft: AW: @Tino... von: robert
Geschrieben am: 14.11.2009 14:37:18

hi Tino,

der code steht doch in meiner datei im tabellenblatt1 !

auch bei deiner datei zum spielen tut sich nichts !!!

irgendwelche einstellungen falsch ?

gruß
robert


  

Betrifft: sind Makros aktiv bei Dir? oT. von: Tino
Geschrieben am: 14.11.2009 14:50:07




  

Betrifft: ja das wars! aus-PERSONL.XLS owT von: robert
Geschrieben am: 14.11.2009 14:57:57