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 dommel Mitglied (361 Punkte)
Also ich habe zuerst folgendes Versucht, indem ich den Code kopiert habe. und einfach aus der 13 eine 11 gemacht habe.

@coros

Was meinst du genau mit:
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?

So?

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

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

was würde er denn schreiben intColumn = 11 to 13
da hat er auch nicht gewollt.

Er hat das auch mal gemacht, dass er das bei beiden macht.

@coros du warst ja so nett mir das so zu machen mit dem Code..

nur kann ich die Datei nicht öffnen (xlsm.) , da du ja von mir weißt das mein Betriebssystem sich wahrscheinlich aufgehängt hat . Und der aktuell PC Excel 03 hat. und ich hier kein neues 2007 ner Programm habe und installieren kann.

http://www.excelbeispiele.de/Beispiele_Supportnet/Projektarbeitprobe(1)_bearbeitet.zip

Das war der Link, wäre es dir möglich mir das als excel datei für 2003 zu speichern und es mir wieder hochzuladen (aber nur wenn es keine Mühe macht)
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
@ nighty

dein vorschlag funktioniert sehr gut....

If intColumn = 13 Or intColumn = 11 Then

da schließt der Code dann nur die beiden spalten ein...und es funktioniert.

Danke

Ich halt noch zudem die Idee z.b. jeder anderen Spalte jenach meiner Wahl, andere "Befehle" zuzuweisen.
Er meckert halt, wenn ich das einfach so Einfüge.
Muss ich da vl irgendwas bei beachten. (bin noch nicht so VBA Experte)

Bsp.


If intColumn = 13 Or 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


If intColumn = 10 Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & ", "& _
Tabelle3.TextBox1.Text
Else
Tabelle1.Cells(lngRow, intColumn) = Tabelle3.TextBox1.Text
End If
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Dommei,

hier die Datei, die Du in Excel 2000 - 2003 öffnen kannst:
ktarbeitprobe(1)_bearbeitet.xls">http://www.excelbeispiele.de/Beispiele_Supportnet/Projektarbeitprobe(1)_bearbeitet.xls

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 coros Experte (4k Punkte)
Hallo,

ich nochmal. Da ist wohl etwas von dem Link auf der Strecke geblieben. Hier nochmal der Link:

http://www.excelbeispiele.de/Beispiele_Supportnet/Projektarbeitprobe(1)_bearbeitet.xls


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 dommel Mitglied (361 Punkte)
Danke coros

leider macht das Makro dort auch nicht mehr das was es gemacht hat. Dort ist das gleiche Problem.

Er nimmt zwar die zusätzlichen Dinge an (keine Fehlermeldung), allerdings ignoriert er dann die anderen Spalten vollendes, dort fügt er nur einfach ein.


dann macht er mit der spalte 10 nix , sondern nur mit spalte 11 und 13
so läuft das halt auch wenn ich andere spalten so einfüge. Er bezieht sich nur auf den ersten Befehl.

Kann man da nicht einfach ein "Oder / If / Else" zwischensetzten sodass er beide oder mehrere "Befehle" als "gleichwertig" ansieht


If intColumn = 13 Or 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


If intColumn = 10 Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & ", "& _
Tabelle3.TextBox1.Text
Else
Tabelle1.Cells(lngRow, intColumn) = Tabelle3.TextBox1.Text
End If
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Dommei,
das ist die Datei aus Deinem Link, eben nur wie gewünscht als xls-Datei. Die Änderungen musst Du schon selber machen.
MfG,
Oliver
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
jo habe ich bereits gemacht, (danke für dein Umformatieren)

nur muckt er dann da genau so rum, wenn ich die sachen ergänze...
und er führt es nur wie beschrieben aus..
Er führt halt nur den allerersten befehl aus (Zeile 11 und 13).. alle weiteren Befehle die Spalten betreffend missachtet er.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo,

wie sieht denn Dein gesamter VBA-Code aus? Hellsehen können wir hier alle noch nicht. Eventuell lädst Du ja nochmal Deine Datei mit dem angepassten Code hoch. Dann kann man schauen, wo der Fehler liegt.

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 dommel Mitglied (361 Punkte)
Also mein VBA Code sähe so aus;

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

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

If intColumn = 9 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



@coros mit dem int column = 13 Or int column = 11 scheinst du recht zu haben, das funzt so net..
@nighty habe mich da leider geirrt, (trotzdem danke für deine Hilfe), denn die Idee war schon nicht schlecht, die beiden Zeilen hat er angesprochen.. nur er dupliziert das eingegeben z.b. fff, fff, anstat anzuhängen
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Dommei,

das Makro funktioniert schon. Das Problem liegt eher an der Datei. Ich nehme jetzt mal die Datei aus dem Link aus AW14, die ich Dir ohne Änderungen bzw. Anpassungen als xls-Datei hochgeladen habe. Dort kann, wie bereits von mir in AW8 vermutet, die Variable "intColumn" einige Spaltenindexzahlen, u.a. die Indexzahl 11, nicht erhalten, da diese in der ComboBox gar nicht auftauchen. Die Indexzahl 11 wird in der ComboBox nicht aufgeführt, da in Blatt "Hauptdatei" in Spalte K, für die die Spaltenindexzahl 11 steht, gar keine Überschrift steht und somit auch nicht in der ComboBox aufgeführt wird.
Das kannst Du selber kontrollieren, wenn Du in dem Makro "Kundennummer_suchen" in der Zeile

.ComboBox1.ColumnWidths = "7cm; 0cm; 0cm"
mal die 0cm gegen z.B. 2cm austauscht. Dann siehst Du die beiden zusätzlichen Spalten in der ComboBox und da wirst Du sehen, dass die Spalte K, bzw. die Indexzahl 11 dort nicht auftaucht. Du musst also Deine Datei ändern. Sollte in Deiner Datei, mit der Du arbeitest, dort eine Überschrift stehen, dann liegt es an etwas anderem, was man aber ohne die Datei zu sehen aus der Ferne nicht beheben kann. Dann musst Du die Datei nochmal hochladen.

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]
...