467 Aufrufe
Gefragt in Tabellenkalkulation von k-siebke Einsteiger_in (81 Punkte)

Hallo Liebes Fohrum, hir ist wider der VBA anfänger Ich habe zwei TextBoxen in Tabelle1 mit den ich werte in Tabelle3 eintrage in Spalte A und B.

Wen ich beide TextBoxen mit Angaben fühle werden die werte auch ordnungsgemäß ein Angabe nach er anderen untereinander in die Tabelle eingetragen und ein Zeit-Stempel erzeugt. Leider funktioniert es nicht wen ich nur eine TextBox fühle dann werden die Angaben nicht korrekt untereinander in die Tabelle eingetragen und kein Zeit-Stempel erzeugt. daher möchte ich gerne, dass die TextBoxen vor der Eingabe gehüpft werden ob sie lehr sin, und wen sie lehr sind in die Spalten entsprechend eine null eingetragen wird als Platzhalter

https://supportnet.de/forum/?qa=blob&qa_blobid=9722576339002154594

mein Ansatz: Die Abfrage (Blau) habe ich im Internet gefunden Leider funktioniert es nicht wie gedacht da Fehler angezeigt werden 

    .Cells(lfreerow, 1) = Worksheets("Tabelle1").Shapes("TextBox5").OLEFormat.Object.Object.Value
    .Cells(lfreerow, 2) = Worksheets("Tabelle1").Shapes("TextBox6").OLEFormat.Object.Object.Value
    
With Cells(Zeile, Spalte)
If IsNumeric(Me.TextBox5) Then
.Value = CDbl(Me.TextBox5)
ElseIf Me.TextBox5 = "" Then
.Value = 0
Else
MsgBox "Keine nummerische Eingabe in Textbox5"
Exit Sub
End If
End With


With Cells(Zeile, Spalte)
If IsNumeric(Me.TextBox6) Then
.Value = CDbl(Me.TextBox6)
ElseIf Me.TextBox6 = "" Then
.Value = 0
Else
MsgBox "Keine nummerische Eingabe in Textbox6"
Exit Sub
End If
End With
    

End With
End Sub

   Sub Leeren()
Worksheets("Tabelle3").Range("A2:A1000,B2:B1000,D2:D1000").ClearContents

18 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

dann probiere es mal so:

Sub Spalten_pruefen()
Dim lngZeile As Long
Dim intSpalte As Integer
Dim bLeer As Boolean

'prüfen ob in Spalten A bis D etwas steht
'wenn in einer Spalte etwas steht, dann in die nächste Zeile springen

'1. zu prüfende Zeile festlegen, aber 1 weniger
'hier wird ab Zeile 2 geprüft
lngZeile = 1

'Schleife für Prüfung
Do
  'Marker für leere Spalte auf wahr setzen
  bLeer = True
  'Variable für zu prüfende Zeile erhöhen
  lngZeile = lngZeile + 1
  'Spalten A bis D prüfen
  For intSpalte = 1 To 4
    If ThisWorkbook.Worksheets("Tabelle3").Cells(lngZeile, intSpalte) <> "" Then
       'falls Zelle nicht leer, dann Marker auf falsch setzen
       bLeer = False
       'Schleife verlassen
       Exit For
    End If
  Next intSpalte
Loop Until bLeer = True
 
MsgBox "Die nächste leere Zeile ist die Zeile " & lngZeile

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
Leider funktioniert deine Lösung nicht,habe immer noch das gleiche Problem
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

wieso funktioniert meine Lösung nicht?

Private Sub Übergeben_Click()
Dim lngZeile As Long
Dim intSpalte As Integer
Dim bLeer As Boolean

'prüfen ob in Spalten A bis D etwas steht
'wenn in einer Spalte etwas steht, dann in die nächste Zeile springen

'1. zu prüfende Zeile festlegen, aber 1 weniger
'hier wird ab Zeile 2 geprüft
lngZeile = 1

'Schleife für Prüfung
Do
  'Marker für leere Spalte auf wahr setzen
  bLeer = True
  'Variable für zu prüfende Zeile erhöhen
  lngZeile = lngZeile + 1
  'Spalten A bis D prüfen
  For intSpalte = 1 To 4
    If ThisWorkbook.Worksheets("Tabelle3").Cells(lngZeile, intSpalte) <> "" Then
       'falls Zelle nicht leer, dann Marker auf falsch setzen
       bLeer = False
       'Schleife verlassen
       Exit For
    End If
  Next intSpalte
Loop Until bLeer = True

With Worksheets("Tabelle3")
     .Cells(lngZeile, 1).Value = TextBox28.Text
     .Cells(lngZeile, 2).Value = TextBox29.Text
     .Cells(lngZeile, 3).Value = ComboBox2.Value
      Call InfoFuellen
       
       Me.TextBox28 = ""
       Me.TextBox29 = 1
       Me.ComboBox2 = ""
  End With
End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
wieder angezeigt
Wall immer noch die vorhergehenden Eingaben gelöscht werden.Ich bekomme zwar eine Meldung das Zeile XY Lehr ist,das war's aber schon.Deine Lösung greift leider nicht bei den Texboxsen aus meiner UserForm !
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

ich habe mir das jetzt mal angeschaut. Du hast im VBA-Projekt von Tabelle3 einen Worksheet_Calculate-Code hinterlegt. Da stehen u.a. die folgenden Zeilen:

Klärfälle.TextBox28 = Range("A2:A1000").Text                                                  'liest von Zelle
Klärfälle.TextBox28 = Range("B2:B1000").Text                                                'liest von Zelle
Klärfälle.ComboBox2 = Range("E2:E1000").Text

Sobald also im Tabellenblatt 3 die Spalte A aus der Userform gefüllt wird löst das Calculate-Ereignis aus und dann soll die Textbox28 (zweimal?) sowie die ComboBox2 mit Daten aus einem ganzen Bereich (Zeilen 2 bis 1000) gefüllt werden. Das funktioniert jedoch nicht, so dass die TextBox28 und die ComboBox2 mit "Nichts" gefüllt werden, also leer sind.

Löschst du die drei oben geposteten Zeilen aus dem Worksheet-Calculate-Code, dann wird der Inhalt der beiden Textboxen und der ComboBox2 korrekt (mit meinem geposteten Code) in die nächste leere Zeile geschrieben.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo und  Danke noch mal, kannst du Mal einen Beispiel Datei hoch laden  wenn du sagst das es Dann funktioniert?
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
ausgewählt von halfstone
 
Beste Antwort

Hallo,

bitte schön: Download bearbeitete Beispieldatei

Gruß

M.O.

0 Punkte
Beantwortet von
Danke ich bzw.sie haben es sehr gut hinbekomme, jetzt funktioniert alles so wie es soll!!
...