Einen Code kleiner schreiben

  • Excel

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Einen Code kleiner schreiben

    Hallo Leute

    wie kann ich den Code kürzer schreiben? ?(

    VB.NET-Quellcode

    1. If TextBox2.Text = 1 Then
    2. Tabelle1.Cells(11, 400) = TextBox1.Text
    3. Tabelle1.Cells(11, 401) = TextBox3.Text
    4. Tabelle1.Cells(11, 402) = TextBox5.Text
    5. Tabelle1.Cells(11, 403) = TextBox9.Text
    6. Tabelle1.Cells(11, 404) = TextBox4.Text
    7. Tabelle1.Cells(11, 405) = TextBox6.Text
    8. Tabelle1.Cells(11, 406) = TextBox7.Text
    9. Tabelle1.Cells(11, 407) = TextBox8.Text
    10. End If
    Die Zellen mit Range ansprechen und die Textboxen in der Form gleich benennen wie die Adresse der Zellen.
    Bsp. Wenn die Range-Adresse der Zelle "OJ11" ist, dann TextBox.Name = "OJ11".

    Dann kannst du diesen Code benutzen.

    Visual Basic-Quellcode

    1. ​If TextBox2.Text = "1" Then
    2. Dim cCont As Control
    3. For Each cCont In Me.Controls
    4. If InStr(cCont.Name, "11") <> 0 Then
    5. Tabelle1.Range(cCont.Name) = cCont.Text
    6. End If
    7. Next cCont
    8. End If
    Ist schwer zu sagen, könnte beides sein.
    Aber ich gehe von VBA aus, weil Standard-Excel-Objektnamen verwendet werden.
    Wenn er mit Interop programmiert hätte, hätte er wahrscheinlich anstatt dem Objekt Tabelle1 das Arbeitsblatt aus der Auflistung gezogen Sheets("Tabelle1").

    Und mit Option Strict On hätte er auch noch die Cells in einen Excel.Range casten müssen.
    Aber das fällt ja eh aus, sonst würde ​If TextBox2.Text = 1 Then auch nicht gehen.


    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    danke für das nachdenken, hat sich schon alles erledigt.
    Ich hätte da doch noch was.

    VB.NET-Quellcode

    1. If Target.Address = "$F$5:$O$5" Or Target.Address = "$E$5" Then zeile = 5: Call ladenUserForm1 '1
    2. If Target.Address = "$F$6:$O$6" Or Target.Address = "$E$6" Then zeile = 6: Call ladenUserForm1 '2
    3. If Target.Address = "$F$7:$O$7" Or Target.Address = "$E$7" Then zeile = 7: Call ladenUserForm1 '3
    4. If Target.Address = "$F$8:$O$8" Or Target.Address = "$E$8" Then zeile = 8: Call ladenUserForm1 '4
    5. If Target.Address = "$F$9:$O$9" Or Target.Address = "$E$9" Then zeile = 9: Call ladenUserForm1 '5


    das ganze soll bis "$F$55:$O$55" gehen.
    ich bekomme es einfach nicht hin. X(

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Shantoo“ ()

    Hart adressieren ist immer nur die zweitbeste Lösung.
    Aber ich fürchte, deine Art zu programmieren ist eh nicht besonders ausgeklügelt.
    Also konzentrieren wir uns auf das Detailproblem:

    Visual Basic-Quellcode

    1. If Not Intersect(Target,Range("E:O"),Range("5:55")) Is Nothing Then
    2. Zeile = Target.Row
    3. ​ ladenUserForm1
    4. End If
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    petaod, du hast vollkommen recht. Ich habe kein Plan wie man richtig programmiert. Es macht mir aber sehr viel Spaß auszuprobieren wie man was schreiben kann (oder auch nicht) um eine Lösung zu finden. Was ich schreibe ist echt kompliziert und meistens um die eigentliche Sache drumrum. Am ende klappt es sogar und hole mir dann aber Tipps von euch, um es besser, logischer und auch kürzer, zu schreiben.
    Ich danke Euch "Dir"! :thumbup:

    dani02 schrieb:

    Jedoch was ich empfehle sind die Zeichnung von Struktogrammen, da kann man sich verschiedene Lösungen hinskizzieren und dann Schritt für Schritt implementieren.
    Wenn du nicht weißt, was das zugrunde liegende Objektmodell alles her gibt, kannst du Struktogramme zeichnen, solange du willst.
    Du wirst immer nur die Zu-Fuß-Methode entwickeln.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --