![]() |
Betrifft: VBA Formel optimieren
von: EmanuelG
Geschrieben am: 04.10.2014 19:24:05
Hallo Zusammen,
da ich mit meinen Excel Kenntnissen nicht weiter komme, versuche ich mich jetzt mit VBA.
Habe mir da mal eine Formel erstellt, und Sie funktioniert.
Nun meine bitte: Kann ich diese Formel einfacher gestalten?
Sub Alle9() 'wenn in Zelle A1 ein O eingegeben wird dann mach in die Zellen B1,C1,D1 ein I If Range("A1") = "O" Then Range("B1, C1, D1") = "I" End If 'wenn in Zelle B1 ein O eingegeben wird dann mach in die Zellen A1,C1,D1 ein I If Range("B1") = "O" Then Range("A1, C1, D1") = "I" End If 'wenn in Zelle C1 ein O eingegeben wird dann mach in die Zellen A1,B1,D1 ein I If Range("C1") = "O" Then Range("A1, B1, D1") = "I" End If 'wenn in Zelle D1 ein O eingegeben wird dann mach in die Zellen A1,B1,C1 ein I If Range("D1") = "O" Then Range("A1, B1, C1") = "I" End If End SubMein Ziel ist es in einer Zelle A1, B1, C1 oder D1 ein O einzufügen und dann soll in den anderen Zellen ein I stehen.
![]() ![]() |
Betrifft: AW: VBA Formel optimieren
von: Adis
Geschrieben am: 04.10.2014 22:34:22
Hallo
vom fachlichen: es handelt sich nicht um eine Formel sondern einen Makro Code.
Mit dem kann man spielen. Hier der bereinigte Original Code und 2 Beispiele.
'bereinigter Makro Code (bei kurzen Befehlen kann man End If weglasssen)
Sub Alle9_bereinigt() 'wenn in Zelle A1 ein O eingegeben wird dann mach in die Zellen B1,C1,D1 ein I If Range("A1") = "O" Then Range("B1, C1, D1") = "I" 'wenn in Zelle B1 ein O eingegeben wird dann mach in die Zellen A1,C1,D1 ein I If Range("B1") = "O" Then Range("A1, C1, D1") = "I" 'wenn in Zelle C1 ein O eingegeben wird dann mach in die Zellen A1,B1,D1 ein I If Range("C1") = "O" Then Range("A1, B1, D1") = "I" 'wenn in Zelle D1 ein O eingegeben wird dann mach in die Zellen A1,B1,C1 ein I If Range("D1") = "O" Then Range("A1, B1, C1") = "I" End Sub
Sub Alle9_KuzVersion() Range("A1:D1") = "I" End Sub
Sub Alle9_ForNext_Version() For Each i In Range("A1:D1") If i.Value = "O" Then Else i.Value = "I" Next i End SubGruss Adis
![]() ![]() |
Betrifft: AW: VBA Formel optimieren
von: EmanuelG
Geschrieben am: 04.10.2014 23:40:37
Hallo Adis,
erstmal vielen dank für dein Makro, nur wenn ich diesen in mein Excelblatt einfüge bekomme ich folgende fehler Meldung
![]() ![]() |
Betrifft: AW: Variablen sind zu deklarieren
von: Gerd L
Geschrieben am: 04.10.2014 23:57:09
Hallo E.,
klar.
Dim i As Range fehlte.
Es geht ohne Schleife.
Sub d() Dim X As Variant, stext As String X = Application.Match(0, Range("A1:D1"), 0) If IsNumeric(X) Then stext = ("I,I,I,I") Mid(stext, X * 2 - 1, 1) = "0" Range("A1:D1") = Split(stext, ",") End If End SubGruß Gerd
![]() ![]() |
Betrifft: AW: Variablen sind zu deklarieren
von: EmanuelG
Geschrieben am: 05.10.2014 00:28:50
N´abend Gerd,
danke für deine promte antwort, leider tut sich da nix! Habe dein Makro als Modul4 in mein Excelblatt eingefügt. Habe in Zelle B1 ein O eingetragen und es mit der F8 Taste durchlaufen lassen, leider tat sich dann nix, das Makro läuft durch doch die Zellen A1, C1 und D1 bleiben anschließend leer.
Ich bedanke mich für eure mühe einem Anfänger zu Helfen
Emanuel
![]() ![]() |
Betrifft: AW: Der Code ist für Nullen nicht für O(h)
von: Gerd L
Geschrieben am: 05.10.2014 09:28:06
Hallo E.,
zur Not kannst du deine Datei hochladen. Bei mit funktioniert es, mit Null.
Gruß Gerd
![]() ![]() |
Betrifft: AW: Der Code ist für Nullen nicht für O(h)
von: Hajo_Zi
Geschrieben am: 05.10.2014 10:25:55
Hallo Gerd,
In der heutigen Zeit ist es nicht mehr üblich eine Rückmeldung zu geben. Also lasse doch den Fragesteller entscheiden ob noch offen.
In Deiner Variante ist der Beitrag 6 Tage offen.
![]() ![]() |
Betrifft: AW: Das war gewollt o.T.
von: Gerd L
Geschrieben am: 05.10.2014 10:42:50
Gruß Gerd
![]() |