Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Schleife

Betrifft: Schleife von: Nenesis
Geschrieben am: 17.08.2004 20:50:51

Guten Abend alle

Ich bekomme die if schleife nicht hin
Ich möchte das wen ich auf OptionButton4 clicke
Sich eine input box öffnet und den Wert, den ich da eingebe
Soll in Tabellen Blatt 1 in eine Zelle kopiert werden
das klappt auch
Sollte ich aber auf OptionButton3 clicken, soll in das
Tabellen blatt 1 0 kopiert werden

Mein Code

Private Sub CommandButton2_Click()
Dim Loletztt As Long
Dim vValue As Variant
   Dim eValue As Variant
   With Worksheets("Tabelle1")
  
   If OptionButton4.Value = True Then
   vValue = Application.InputBox( _
      prompt:="Teile Nicht in Ordnung ", _
      Title:="", _
      Type:=1)
     
     
      eValue = TextBox3 - vValue
      
 If OptionButton3.Value = True Then eValue = 0
 
   Loletztt = .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
        .Cells(Loletztt, 8) = TextBox5
        .Cells(Loletztt, 3) = TextBox3
        .Cells(Loletztt, 4).Value = vValue
        .Cells(Loletztt, 6) = TextBox4
        .Cells(Loletztt, 7) = TextBox6
        .Cells(Loletztt, 1) = ComboBox3
        .Cells(Loletztt, 2) = ComboBox2
        .Cells(Loletztt, 5).Value = eValue
     End If
       
 End With

End Sub

Gruß
Nenesis
  


Betrifft: AW: Schleife von: Ramses
Geschrieben am: 17.08.2004 21:04:57

Hallo

Das ist doch keine Schleife,... anyway

Wenn ich das richtig verstanden habe, müsste das so gehen

Private Sub CommandButton2_Click()
Dim Loletztt As Long
Dim vValue As Variant
Dim eValue As Variant
With Worksheets("Tabelle1")
    Loletztt = .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
    If OptionButton4.Value = True Then
        vValue = Application.InputBox( _
        prompt:="Teile Nicht in Ordnung ", _
        Title:="", _
        Type:=1)
        eValue = TextBox3 - vValue
        .Cells(Loletztt, 8) = TextBox5
        .Cells(Loletztt, 3) = TextBox3
        .Cells(Loletztt, 4).Value = vValue
        .Cells(Loletztt, 6) = TextBox4
        .Cells(Loletztt, 7) = TextBox6
        .Cells(Loletztt, 1) = ComboBox3
        .Cells(Loletztt, 2) = ComboBox2
        .Cells(Loletztt, 5).Value = eValue
    End If
    If OptionButton3.Value = True Then
        .Cells(Loletztt, 5).Value = 0
    End If
End With
End Sub



Ganz abgesehen davon, dass meiner Meinung nach ".UsedRange" nicht verwendet werden soll, müsste es funktionieren

Gruss Rainer


  


Betrifft: keinen schleife von: Nenesis
Geschrieben am: 17.08.2004 22:05:52

Hallo Rainer
Danke erst mahl
ok hast ja recht ist keinen schleife
hast mir aber weiter geholfen.

Frage wie so würdest du es ohne UsedRange machen

Gruß Nenesis


  


Betrifft: AW: keinen schleife von: Ramses
Geschrieben am: 17.08.2004 22:15:28

Hallo

UsedRange verursacht folgendes Problem

Tabelle1
 ABCDEF
1SucheErgebnis DatenWert 
2Müller2 Maier1 
3   Müller2 
4   Muster3 
5   Äpfel4 
6      
7      
8      
9      
10      
11      
12      
13      
14      
Formeln der Tabelle
B2 : =SVERWEIS(A2;D2:E5;2;0)
 



Wie du siehst, sind in Zeile 12 3 Zellen mit einem Rahmen versehen, die Daten gehen aber nur bis Zeile 5.
Wenn du nun im Debug.Fenster

Debug.Print Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1

eingibst, dann erhältst du als Ergebnis nicht die erwartete 5 sondern 13.
Nun lösche den Rahmen über Format - Zellen - Rahmen - Kein Rahmen (NICHT DIE ZEILEN LÖSCHEN und gib den Befehl erneut ein.

Interessant nicht,.. gell :-)
Obwohl dort offensichtlich NICHTS mehr steht und auch keine Rahmen mehr sind, betrachtet EXCEL diesen Bereich immer noch als USED.

Deshalb verwende ich es nur sehr ungern,... eigentlich gar nicht.
Du hast Einträge in allen Spalten dieser Zeile, dann kannst du auch die letzte benutzte Zeile in Spalte A suchen lassen

Loletztt = .Cells(65536,1).End(xlUp).Row + 1

Das funktioniert immer, ob dort jetzt Rahmen oder sonstige Farben verwendet werden.
Du erhältst immer die Zeile in welcher der letzte Eintrag in dieser Spalte steht.

Gruss Rainer


 

Beiträge aus den Excel-Beispielen zum Thema "Schleife "