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)
Das mit dem Makro hatte mit dem Code so auch vor einiger Zeit auch funktioniert, von einem Tag auf den anderen war es "kaputt".
Die Indexzahlen von 9 bis 12 erscheinen dort und auch die Überschriften.

ich werde dir die Datei nochmal hochladen , allerdings werde ich wieder einige Tabellenblätter löschen müssen. (datenschutz) .
Ich werde dir andere Daten als Beispiel eingeben.

Also meine Idee war.

In Spalte 9 und 11 soll statt nur einem Leerzeichen nach dem bereits geschriebenen ein ", " erscheinen.

Bei Zeile 10 und 12 soll ein Leerzeichen nach dem bereits geschriebenen erscheinen.

Danke, dass du dich auf die Ursachenforschung begiebst.


http://www.file-upload.net/download-1947032/Probeinternet.xls.html

Gruß DOMMEL
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Dommei,

hier nochmal ein neuer Versuch,m nachdem ich nun glaube verstanden zu haben, was Du meinst.

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 = 12 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
ElseIf intColumn = 10 Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & ", " & _
Tabelle3.TextBox1.Text
ElseIf 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

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)
Genau das wars.. so läufts...als erst If eine Zeile und dann immer ElseIF .. gut

Prima..Danke für die Hilfe....

Eine klitze kleine Hilfe benötige ich doch noch. Da mein Laienwissen leider dafür glaube ich nicht ausreicht

Gibt es irgendeinen Befehl, der überprüft ob schon was in der Zeile steht und dann die obigen Befehle ausführt.

Bsp

Wenn in dem Feld noch nichts drin steht ,soll er weder ein Leerzeichen noch ein Komma setzten,
wenn zum ersten Mal Text in die Zeile gefüllt wird.

Steht z.B. Hallo oder ein anderer Text bereits drin, soll der die Befehle ausführen die oben stehem, sodass dann z.b. das Leerzeichen angehängt wird und dann erst der neue Text.

Quasi irgendwas vor dem if column.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo,

und das fällt Dir nun nach 23 Beitrgen ein, dass Du noch weitere Änderungen haben möchtest? Sind das dann die letzten Änderungen oder fallen Dir noch weitere ein? Denn dann überleg mal noch etwas und schreibe hier alle weiteren Änderungen in einen Beitrag, denn sonst sitzen wir nach Neujahr noch an Deinem Beitrag.

Zu Deine Frage in AW23: Du musst in jede ElseIf-Anweisung eine weitere If-Anweisung einbauen, die prüft, ob bereits etwas in der Zelle steht. Im Prinzip so:

If IsEmpty(Tabelle1.Cells(lngRow, intColumn)) Then
Tabelle1.Cells(lngRow, intColumn) = Tabelle3.TextBox1.Text
Else
Tabelle1.Cells(lngRow, intColumn) = Tabelle1.Cells(lngRow, intColumn) & " " & _
Tabelle3.TextBox1.Text
End If


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)
Einen herzlichen Dank...

Diese Idee kam mir leider mal zu kurzfristig....:-)

Das sollte aber auch meine letzte Frage bleiben, ansonsten kannste mir gegen den Kopp hauen.

Ich werd das gleich mal ausprobieren....

Zu Neujahr schicke ich dir nen Geschenk^^.

Einen schönen Abend wünsche ich dir noch

Vielen Dank für deine Zeit...
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
WANDERFUL... ICH HABS HINBEKOMMEN:: ALLES PRIMA.... Dienstag gehts wieder arbeiten und dank deiner Hilfe ist es richtig gut geworden.
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
Du... mal ne ganz andere Frage ... hört sich dumm an ... aber keiner konnte sie mir bisher beantworten...

Wie kann man in Excel Tabellenblätter verschwinden lassen, sodass man sie nicht mehr sieht, aber sie durch die Makros noch aufgerufen werden können?
Oder geht das überhaupt nicht in Excel... (dann kann ich davon gleichmal in der Firma berichten, das dürfte die auch interessieren)

Gruß Dominik
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Dominik,

mit

Sheets("Tabelle1").Visible = xlSheetVeryHidden
kannst Du ein Tabellenblatt so ausblenden, so dass es nur über die Egenschaft

.Visible = True
wieder einzublenden geht. Ein Einblenden über "Format => Blatt => Einblenden", bzw. ab Excel 2007 unter "Start => Format => Ausbelnden & Einblenden => Blatt einblednen..." ist dann nicht mehr möglich.

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)
Ok danke. den Code binde ich einfach beim VBA Editor unter den einzelnen Tabellenblätter ein.
0 Punkte
Beantwortet von dommel Mitglied (361 Punkte)
möchte aber nicht. vl mache ich das auch falsch.

Private Sub Ausblenden()
Sheets("Hauptdatei").Visible = xlSheetVeryHidden
End Sub
ist das richtig? und dann in den VBA Editor und dann bei den einzelnen Tabellenblättern einfügen.
Es verschwindet nix. Muss ich da irgendwas beachten?
...