VBA vereinfachen

Diskutiere VBA vereinfachen im Webmaster Hilfe / Programmierer Forum Forum im Bereich Computerprobleme; lol ich schon wieder :D :D aber ich hab da mal wieder eine frage ob man es irgendwie automatisch schreiben lassen kann oder ob ich es immer...

  1. #1 Daniel112, 04.12.2008
    Daniel112

    Daniel112 Benutzer

    Dabei seit:
    09.11.2005
    Beiträge:
    80
    Zustimmungen:
    0
    lol ich schon wieder :D :D
    aber ich hab da mal wieder eine frage ob man es irgendwie automatisch schreiben lassen kann oder ob ich es immer wieder von hand eingeben muß
    denn 47 mal das selbe eingeben ist sehr anstrengend

    hier der code:
    Code:
    Nr = MsgBox("Wollen sie Ihre Zeilen Nummerieren?", vbYesNo)     
    If Nr = 6 Then     
    Select Case srteingabe1     
    Case Is = 1                 ' Nummerieren Nr1     
    Range(A8).Formula = "Nr 1"     
    Range(A8).Font.Bold = True     
    Case Is = 2                 ' Nummerieren Nr1 -2     
    Range(A8).Formula = "Nr 1"     
    Range(A9).Formula = "Nr 2"     
    Range(A8:A9).Font.Bold = True     
    Case Is = 3                 ' Nummerieren Nr1 -3     
    Range(A8).Formula = "Nr 1"    
     Range(A9).Formula = "Nr 2"     
    Range(A10).Formula = "Nr 3"     
    Range(A8:A10).Font.Bold = True     
    Case Is = 4                 ' Nummerieren Nr1 -4     
    Range(A8).Formula = "Nr 1"     
    Range(A9).Formula = "Nr 2"    
     Range(A10).Formula = "Nr 3"     
    Range(A11).Formula = "Nr 4"     
    Range(A8:A11).Font.Bold = True     
    Case Is = 5                 ' Nummerieren Nr1 -5     
    Range(A8).Formula = "Nr 1"    
     Range(A9).Formula = "Nr 2"     
    Range(A10).Formula = "Nr 3"     
    Range(A11).Formula = "Nr 4"     
    Range(A12).Formula = "Nr 5"     
    Range(A8:A12).Font.Bold = True
     
  2. Anzeige

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    indem du entweder eine while oder eine for schlaufe machst! So umgehst du einen "Spaghetti-Code" und kannst es sozusagen Automatisieren!

    Ich würde dir eine for schleife empfehlen, da du ja von anfang an weisst, wie viele durchläufe es gibt!
     
  4. #3 Daniel112, 04.12.2008
    Daniel112

    Daniel112 Benutzer

    Dabei seit:
    09.11.2005
    Beiträge:
    80
    Zustimmungen:
    0
    hi,

    und wie soll so eine schleife aussehen???
     
  5. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    mhhhm

    für for schleife siehe : http://matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=51406

    Code:
    For Schleife (1) (//must du deine Angabe machen, weiss nicht wie oft du es willst)
          Case Is = 'Variable 1'                 ' Nummerieren Nr1    
          For Schleife (2) 
               Range(A'Variable').Formula = "Nr 'Variable 2'" 
               Variable ++
               Variable 2 ++
          End For Schlaufe (2)
    Range(A8:A'Variable').Font.Bold = True  
    Variable 1 ++
    End For Schlaufe (1)
    
    
    Code bitte nicht kopieren, da es nur die idee zeigt, und nicht die richtigen befehle eingesetzt wurden.

    Also die Idee sollte so etwa klappen, probiere es aus, und gebe mir bescheid! ;-)
     
  6. #5 Daniel112, 05.12.2008
    Daniel112

    Daniel112 Benutzer

    Dabei seit:
    09.11.2005
    Beiträge:
    80
    Zustimmungen:
    0
    him verstehe ich nicht was du jetzt so richtig meinst wie soll ich was eintragen

    ich hab auch mal ein bisschen rum probiert aber mit der case funktion funktioniert es nicht so wie ich es gedacht habe
    Code:
    Select Case strEingabe1
        Case Is = 1 - 47         ' Nummerieren Nr1
        Range("A8").Formula = "Nr1"
        Range("A8").Font.Bold = True
        Range("A8").HorizontalAlignment = xlRight
        Case Is = 2 - 47         ' Nummerieren Nr1 -2
        Range("A9").Formula = "Nr 2"
        Range("A9").Font.Bold = True
        Range("A9").HorizontalAlignment = xlRight
        Case Is = 3 - 47      ' Nummerieren Nr1 -3
        Range("A10").Formulaa = "Nr 3"
        Range("A10").Font.Bold = True
        Range("A10").HorizontalAlignment = xlRight
    
    ah ja auf der seite war ich auch schon aber da konnte ich kein richtiges beispiel zu meinem fall finden
     
  7. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    was verstehst du nicht? Weisst du, wie eine For-Schlaufe im VBA gemacht wird?

    Bitte sage mir die zeilen, die du bei meienr code erklährung ned verstehst! danke!
     
  8. #7 Daniel112, 05.12.2008
    Daniel112

    Daniel112 Benutzer

    Dabei seit:
    09.11.2005
    Beiträge:
    80
    Zustimmungen:
    0
    eigendlich fast alles warum hast du Variable ++ und + wie soll sie genau funktionieren...
    Code:
    Range(A'Variable').Formula = "Nr 'Variable 2'"             
    Variable ++            
    Variable 2 ++ 
     
  9. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    aha! ok!

    Variable ++ ist eine Kurzvorm von Variable = Variable + 1! Weisst zwar nicht genau, ob das bei VBA auch geht...


    (A'Variable) Du definierst fest A, und setzt sie zu einem String zusammen mit dem Wert der Variable.


    P.S. Ich frage mich noch etwas: Bei deinem Code überschreibst du immer wieder etwas mit dem gleichen, macht für mich keinen Sinn! Oder was für einen gibt es? Was wolltest du dort machen?

    Ich hätte sonst noch eine andere Lösung im hinterkopf!
     
  10. Weiny

    Weiny Erfahrener Benutzer

    Dabei seit:
    10.07.2007
    Beiträge:
    484
    Zustimmungen:
    0
    Nein, VBA kann diese Kurzform leider nicht
     
  11. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    wusste ich nicht...

    dann schreibt man halt
    variable = variable + 1

    das geht ja!
     
  12. #11 Daniel112, 08.12.2008
    Daniel112

    Daniel112 Benutzer

    Dabei seit:
    09.11.2005
    Beiträge:
    80
    Zustimmungen:
    0
    hi,

    sinn gibs keinen denn ich hab mich bloß ein bisschen probiert...

    aber zur funktion:

    wenn der benutzer auf neue tabele klickt dann kommt eine inputbox mit der
    frage wieviel spalten.

    dann kommt eine inputbox mit der frage wie viel zeilen er braucht und mit der zahl will ich die nummerierung machen also wenn er sagt er will 10 zeilen dann kommt in den einzellen zellen Nr.1 und Nr.2

    aber ihr der ganze code:

    Code:
    Private Sub CommandButton1_Click()
    Dim strEingabe As String
    Dim strError As String
    Dim strEingabe1 As String
    Dim strError1 As String
    Dim neu1 As String
    Dim neu2 As String, neu22 As String
    Dim neu3 As String, neu33 As String, neu333 As String
    Dim neu4 As String, neu44 As String, neu444 As String, neu4444 As String
    Dim neu5 As String, neu55 As String, neu555 As String, neu5555 As String, neu55555 As String
    Dim Löschen As Integer
    Dim Nr As String
    Do
    strError = ""
    strEingabe = InputBox("Bitte Zahl eingen 1-5", "Zahleneingabe")
    If strEingabe <> "" Then
        If IsNumeric(strEingabe) = True Then
            If CInt(strEingabe) > 5 Then
    strError = "Die Zahl darf nicht höher sein als 5"
    MsgBox strError
            End If
        Else
        strError = "Sie müssen eien Zahl eingeben"
        MsgBox strError
        End If
    Else
    If MsgBox("Wollen Sie die Eeingabe wirklich abbrechen?", vbYesNo) = vbYes Then
    Exit Sub
        Else
        strError = "Fehler"
        End If
    End If
    Loop While strError <> ""
    Do
    strError1 = ""
    strEingabe1 = InputBox("Bitte Zahl eingen 1-47", "Zahleneingabe")
    If strEingabe1 <> "" Then
        If IsNumeric(strEingabe1) = True Then
            If CInt(strEingabe1) > 47 Then
    strError1 = "Die Zahl darf nicht kleine als 8 und nicht höher sein als 56"
    MsgBox strError1
            End If
        Else
        strError1 = "Sie müssen eien Zahl eingeben"
        MsgBox strError1
        End If
    Else
    If MsgBox("Wollen Sie die Eeingabe wirklich abbrechen?", vbYesNo) = vbYes Then
    Exit Sub
        Else
        strError1 = "Fehler"
        End If
    End If
    Loop While strError1 <> ""
    
        Löschen = MsgBox("Wollen sie Ihre daten wirklich Löschen?????", vbYesNo, "Löschen")
        If Löschen = 7 Then
        Exit Sub
        End If
        If Löschen = 6 Then
        Range("A4:G56").Font.Underline = False
        Range("A4:G56").Interior.ColorIndex = Automatic
        Range("A4:G56").Formula = ""
        Range("A4:G56").Borders.LineStyle = xlNone
        End If
        Nr = MsgBox("Wollen sie Ihre Zeilen Nummerieren?", vbYesNo)
        If Nr = 6 Then
        Select Case strEingabe1
        Case Is = 1 - 47         ' Nummerieren Nr1
        Range("A8").Formula = "Nr1"
        Range("A8").Font.Bold = True
        Range("A8").HorizontalAlignment = xlRight
        Case Is = 2 - 47         ' Nummerieren Nr1 -2
        Range("A9").Formula = "Nr 2"
        Range("A9").Font.Bold = True
        Range("A9").HorizontalAlignment = xlRight
        Case Is = 3 - 47      ' Nummerieren Nr1 -3
        Range("A10").Formulaa = "Nr 3"
        Range("A10").Font.Bold = True
        Range("A10").HorizontalAlignment = xlRight
        Case Is = 4, 5                ' Nummerieren Nr1 -4
        Range("A11").Formula = "Nr 4"
        Range("A11").Font.Bold = True
        Range("A11").HorizontalAlignment = xlRight
        Case Is = 5                 ' Nummerieren Nr1 -5
        Range("A12").Formula = "Nr 5"
        Range("A12").Font.Bold = True
        Range("A12").HorizontalAlignment = xlRight
        End Select
        End If
        
        Select Case strEingabe
        
        Case Is = 1                                                                                                        ' Auswahl 1
        neu1 = InputBox("Wie soll die Spalte Heißen", "Sie haben 1 gewählt.")
        If neu1 = "" Then ' Wenn inputbox abgebrochen wird dann exit sub
        Exit Sub
        End If
        Range("B7").Formula = neu1
        Range("B7").Font.Bold = True
        Range("B7:B" & strEingabe1 + 7).Borders.LineStyle = xlContinuous
        Range("B7:B7").Borders.LineStyle = xlDouble
        
            Case Is = 2                                                                                                    ' Auswahl 2
            
            neu2 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 2 gewählt! 1/2")
            If (neu2) = "" Then
            Exit Sub
            End If
            neu22 = InputBox("Wie soll die zweite Spalte Heißen?", "Sie haben 2 gewählt! 2/2")
            If (neu2) = "" Then
            Exit Sub
            End If
            Range("B7").Formula = neu2
            Range("B7").Font.Bold = True
            Range("C7").Formula = neu22
            Range("C7").Font.Bold = True
            Range("B7:C" & strEingabe1 + 7).Borders.LineStyle = xlContinuous
            Range("B7:C7").Borders.LineStyle = xlDouble
            
          
                Case Is = 3                                                                                                ' Auswahl 3
               
                neu3 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 3 gewählt! 1/3")
                If (neu3) = "" Then
                Exit Sub
                End If
                neu33 = InputBox("Wie soll die zweite Spalte Heißen?", "Sie haben 3 gewählt! 2/3")
                If (neu33) = "" Then
                Exit Sub
                End If
                neu333 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 3 gewählt! 3/3")
                If (neu333) = "" Then
                Exit Sub
                End If
                
                Range("B7").Formula = neu3
                Range("B7").Font.Bold = True
                Range("C7").Formula = neu33
                Range("C7").Font.Bold = True
                Range("D7").Formula = neu333
                Range("D7").Font.Bold = True
                Range("B7:D" & strEingabe1 + 7).Borders.LineStyle = xlContinuous
                Range("B7:D7").Borders.LineStyle = xlDouble
               
                    Case Is = 4                                                                                            ' Auswahl 4
                    
                    neu4 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 4 gewählt! 1/4")
                    If (neu4) = "" Then
                    Exit Sub
                    End If
                    neu44 = InputBox("Wie soll die zweite Spalte Heißen?", "Sie haben 4 gewählt! 2/4")
                    If (neu44) = "" Then
                    Exit Sub
                    End If
                    neu444 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 4 gewählt! 3/4")
                    If (neu444) = "" Then
                    Exit Sub
                    End If
                    neu4444 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 4 gewählt! 4/4")
                    If (neu4444) = "" Then
                    Exit Sub
                    End If
                    Range("B7").Formula = neu4
                    Range("B7").Font.Bold = True
                    Range("C7").Formula = neu44
                    Range("C7").Font.Bold = True
                    Range("D7").Formula = neu444
                    Range("D7").Font.Bold = True
                    Range("E7").Formula = neu4444
                    Range("E7").Font.Bold = True
                    Range("B7:E" & strEingabe1 + 7).Borders.LineStyle = xlContinuous
                    Range("B7:E7").Borders.LineStyle = xlDouble
                    
                        Case Is = 5                                                                                         ' Auswahl 5
                        
                    neu5 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 5 gewählt! 1/5")
                    If (neu5) = "" Then
                    Exit Sub
                    End If
                    neu55 = InputBox("Wie soll die zweite Spalte Heißen?", "Sie haben 5 gewählt! 2/5")
                    If (neu55) = "" Then
                    Exit Sub
                    End If
                    neu555 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 5 gewählt! 3/5")
                    If (neu555) = "" Then
                    Exit Sub
                    End If
                    neu5555 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 5 gewählt! 4/5")
                    If (neu5555) = "" Then
                    Exit Sub
                    End If
                    neu55555 = InputBox("Wie soll die erste Spalte Heißen?", "Sie haben 5 gewählt! 5/5")
                    If (neu55555) = "" Then
                    Exit Sub
                    End If
                    Range("B7").Formula = neu5
                    Range("B7").Font.Bold = True
                    Range("C7").Formula = neu55
                    Range("C7").Font.Bold = True
                    Range("D7").Formula = neu555
                    Range("D7").Font.Bold = True
                    Range("E7").Formula = neu5555
                    Range("E7").Font.Bold = True
                    Range("F7").Formula = neu55555
                    Range("F7").Font.Bold = True
                    Range("B7:F" & strEingabe1 + 7).Borders.LineStyle = xlContinuous
                    Range("B7:F7").Borders.LineStyle = xlDouble
                   End Select
                  
                    
    End Sub
    
     
  13. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    also nach den Cases könntest du eine Funktion aufrufen, und danach eine While schlaufe, bzw. eine do while schlaufe verwenden. da du immer die gleichen Code-Befehle brauchst.
     
  14. Nico

    Nico Ehemaliges Teammitglied

    Dabei seit:
    28.10.2005
    Beiträge:
    6.676
    Zustimmungen:
    0
    Sorry, dass ich mich einmische.. aber... was ist eine Schlaufe?^^ ich kenn beim Programmieren nur Schleifen ;)
     
  15. Weiny

    Weiny Erfahrener Benutzer

    Dabei seit:
    10.07.2007
    Beiträge:
    484
    Zustimmungen:
    0
    Na ein Schlaufe ist eine Schleife die nur einmal durchlaufen wir XD ^^
     
  16. Anzeige

    Es ist generell erstmal empfehlenswert alle ggf. veralteten oder fehlerhaften Treiber zu scannen und auf neue zu aktualisieren. Hier kannst du einen Treiber-Scanner downloaden. Das erspart oftmals viel Ärger und hilft gegen diverse Probleme.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  17. disler

    disler Erfahrener Benutzer

    Dabei seit:
    05.07.2007
    Beiträge:
    1.654
    Zustimmungen:
    0
    Ort:
    Schweiz
    habe mich da wohl vertippt!(in der schweiz nennen wir dass manchmal so...) ;-) sry
     
  18. #16 Daniel112, 09.12.2008
    Daniel112

    Daniel112 Benutzer

    Dabei seit:
    09.11.2005
    Beiträge:
    80
    Zustimmungen:
    0
    hab schon eine lösung gefunden
    Code:
    Do
      strEingabe1 = InputBox("Bitte eine ganze Zahl zwischen 1 und 47 eingeben.")
      If strEingabe1 = "" Then
        If MsgBox("Wollen Sie die Eeingabe wirklich abbrechen?", _
          vbYesNo) = vbYes Then Exit Sub
      ElseIf IsNumeric(strEingabe1) Then
        If strEingabe1 > 47 Then
          MsgBox "Zahl zu hoch."
        ElseIf CDbl(strEingabe1) <> CInt(strEingabe1) Then
          MsgBox "Bitte Zahl ohne Nachkommastellen eingeben."
        Else
          Exit Do 'Wenn Zahl - Schleife verlassen!
        End If
      End If
    Loop
    If Nr = 6 Then
    'Da du bereits eine Fehlerbearbeitung eingebaut hast,
    'kann auf meine Fehlerbearbeitung mit On Error
    'verzichtet werden.
    For lngZeile = 1 To strEingabe1
        Range("A7").Offset(lngZeile, 0) = "Nr. " & lngZeile
        Range("A8:A" & strEingabe1 + 7).Font.Bold = True
        Range("A8:A" & strEingabe1 + 7).HorizontalAlignment = xlRight
    
    Next 'lngZeile
    End If
    
    danke für eure hilfe ich werd bestimmt noch ein paar fragen haben dann komme ich halt wieder zu euch

    MFG Daniel
     
Thema: VBA vereinfachen
Besucher kamen mit folgenden Suchen
  1. vba wenn inputbox auf abbrechen dann exit sub

Die Seite wird geladen...

VBA vereinfachen - Ähnliche Themen

  1. EXEL VBA Fragen Drucken per VBA und Actionbutton

    EXEL VBA Fragen Drucken per VBA und Actionbutton: Hallo zusammen, ich habe eine Arbeitsmappe mit mehreren Tabellenblättern. Nach dem Laden erscheint die Starttabelle. Hier sind verschiedene...
  2. vba in starbasic

    vba in starbasic: gibt es eine möglichkeit eine excel tabelle mit makros in openoffice 3.2 zu konvertieren ohne das ich alle makros neu schreiben muss. oder gibt...
  3. VBA Problem??

    VBA Problem??: Hallo, Ich bin noch totaler einsteiger in vba, deshalb hab ich mal ne frage. Ich möchte eine msgbox erhalten wenn z.B die Felder ("C5:E5") gelb...
  4. Links die das Leben vereinfachen/schöner machen

    Links die das Leben vereinfachen/schöner machen: Hallo Leute, hier könnt ihr eure Funde im Internet verewigen. Ich mach mal den anfang: Qtom - Musikfernsehn im Internet. Wenn es der Fernseher...
  5. Drucken mit VBA in Excel

    Drucken mit VBA in Excel: Hallo zusammen, ich hoffe ihr könnt mir helfen :) Ich habe eine Exceldatei mit mehreren Dokumentblättern (diese Tabs in Excel). Davon möchte ich...