Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Formel optimieren

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 Sub
Mein 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.

Ich bedanke mich schon mal für eure Hilfe

  

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

'Überall ein "I" eingeben (alle Zellen vorladen) und in die gewünschte Zelle "O" schreiben
Sub Alle9_KuzVersion()
Range("A1:D1") = "I"
End Sub

'Hier wird der Range Bereich auf "O" geprüft und <> Zellen mit "I" ausgefüllt
Sub Alle9_ForNext_Version()
For Each i In Range("A1:D1")
   If i.Value = "O" Then Else i.Value = "I"
Next i
End Sub
Gruss 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 Sub
Gruß 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.

GrußformelHomepage


  

Betrifft: AW: Das war gewollt o.T. von: Gerd L
Geschrieben am: 05.10.2014 10:42:50

Gruß Gerd


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Formel optimieren"