8.2k Aufrufe
Gefragt in Tabellenkalkulation von dommel Mitglied (361 Punkte)
Ich habe folgenden VBA Code und wollte etwas hinzufügen. sodass er z.B. bei Zeile 11 genau das gleiche wie aktuell in Zeile 13 .
Nur wenn ich da einfach kopiere wie abgebildet und das unter einander setzte, funktioniert das nur bedingt. er macht das dann zwar bei Zeile 11 aber nicht mehr bei Zeile 13.

Woran könnte das liegen?


Sub Kundendaten_hinzufuegen()
Dim lngRow As Long
Dim intColumn As Integer


If Tabelle3.ComboBox1.ListIndex >= 0 And Tabelle3.TextBox1.Text <> "" Then
lngRow = Tabelle3.ComboBox1.List(Tabelle3.ComboBox1.ListIndex, 2)
intColumn = Tabelle3.ComboBox1.List(Tabelle3.ComboBox1.ListIndex, 1)
If intColumn = 13 Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & " " & _
Tabelle3.TextBox1.Text
Else
Tabelle1.Cells(lngRow, intColumn) = Tabelle3.TextBox1.Text
End If


[i] If intColumn = 11 Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & " " & _
Tabelle3.TextBox1.Text
Else
Tabelle1.Cells(lngRow, intColumn) = Tabelle3.TextBox1.Text
End If [/]


MsgBox "Eintrag erfolgreich hinzugefügt", vbInformation, "Meldung..."
Else
MsgBox "Es wurde keine Kategorie ausgewählt oder kein Text in das entsprechende Feld eingegeben!", _
vbInformation, "fehlende Daten"
End If
End Sub


Danke für eure Hilfe

36 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
schreibe elseIF

    If Tabelle3.ComboBox1.ListIndex &gt;= 0 And Tabelle3.TextBox1.Text &lt;&gt; &quot;&quot; Then
        lngRow = Tabelle3.ComboBox1.List(Tabelle3.ComboBox1.ListIndex, 2)
        intColumn = Tabelle3.ComboBox1.List(Tabelle3.ComboBox1.ListIndex, 1)
    ElseIf intColumn = 13 Then
        Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) &amp; &quot; &quot; &amp; _
            Tabelle3.TextBox1.Text
    ElseIf intColumn = 11 Then
        Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) &amp; &quot; &quot; &amp; _
            Tabelle3.TextBox1.Text
    Else
        Tabelle1.Cells(lngRow, intColumn) = Tabelle3.TextBox1.Text
    End If


Gruß Hajo
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
das macht er so nicht mit dem ElseIf , da meckert er leider.
Es würde dann ja quasi so aussehen:


Sub Kundendaten_hinzufuegen()
Dim lngRow As Long
Dim intColumn As Integer


If Tabelle3.ComboBox1.ListIndex >= 0 And Tabelle3.TextBox1.Text <> "" Then
lngRow = Tabelle3.ComboBox1.List(Tabelle3.ComboBox1.ListIndex, 2)
intColumn = Tabelle3.ComboBox1.List(Tabelle3.ComboBox1.ListIndex, 1)
ElseIf intColumn = 13 Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & " " & _
Tabelle3.TextBox1.Text
ElseIf intColumn = 11 Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & " " & _
Tabelle3.TextBox1.Text
Else
Tabelle1.Cells(lngRow, intColumn) = Tabelle3.TextBox1.Text
End If

MsgBox "Eintrag erfolgreich hinzugefügt", vbInformation, "Meldung..."
Else
MsgBox "Es wurde keine Kategorie ausgewählt oder kein Text in das entsprechende Feld eingegeben!", _
vbInformation, "fehlende Daten"
End If
End Sub
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
ich baue die Datei nicht nach. Ich sehe keinen Grund warum mein Code falsch sein soll.
Deinen Code vergleiche ich nicht mit meinem.
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
du brauchst nix nachzubauen...

er akzeptiert das ElseIF nicht... ich kanns aber noch mal ausprobieren
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
er beschwert sich bei mir schon über die Textboxen nicht das else
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
er sagt, Fehler beim Kompilieren
Else ohne IF
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
aha... mir gehts halt darum, dass ich statt nur Spalte 13 , auch Spalte 11 angesprechen kann und bei beiden die gleiche / eine anderen Befehl zuordnen kann.

Bisher sagt er ja, dass er in Spalte 13 an jeden bereits vorhandenen Text ein Leerzeichen dranhängt und dazu den neuen text hintendran.

Diesen Befehl möchte ich jetzt auch in Spalte 11 haben.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Dommei,

also Dein Code sollte eigentlich funktionieren. Bist Du Dir denn sicher, dass die Variable "intColumn " auch mal den Wert 13 für Spalte M erhält, so dass die If-Abfrage auf Spalte 13 ausgeführt werden kann?

@HaJo, Du bist der Meinung, dass Dein Code funktioniert. So wie Du ihn in Deiner AW1 geschrieben hast, mag das stimmen. Nur leider hast Du nur einen Teil des Codes aufgeführt, so dass Dein Code mit dem restlichen Teil des Codees aus der Fragestellung nicht funktionieren kann. Bei Dir fehlt

MsgBox "Eintrag erfolgreich hinzugefügt", vbInformation, "Meldung..."
Else
MsgBox "Es wurde keine Kategorie ausgewählt oder kein Text in das entsprechende Feld eingegeben!", _
vbInformation, "fehlende Daten"
End If
und deshalb erhält @Dommei den Fehler.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

*huhu* bin auch noch da :-)))

gruss nighty

If intColumn = 13 Or intColumn = 11 Then
'dein code
End If
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo nighty,

das ist glaube ich nicht das Richtige. Denn wenn intColumn = 13, dann soll in Spalte 13 geschrieben werden und wenn intColumn = 11, dann soll in Spalte 11 geschrieben werden. Das wird bei Deinem Code etwas schwierig.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
...