online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon DOMMEl vom 13.10.2021, 14:20 Options

Lösung

VBA Code Ergänzung

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


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


Antwort schreiben

Antwort 21 von DOMMEl vom 15.10.2021, 14:20 Options

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

Antwort 22 von coros vom 15.10.2021, 17:46 OptionsLösung

Lösung
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
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 23 von DOMMEl vom 15.10.2021, 19:22 Options

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.

Antwort 24 von coros vom 15.10.2021, 19:55 Options

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
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 25 von DOMMEl vom 15.10.2021, 22:20 Options

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

Antwort 26 von DOMMEl vom 15.10.2021, 22:33 Options

WANDERFUL... ICH HABS HINBEKOMMEN:: ALLES PRIMA.... Dienstag gehts wieder arbeiten und dank deiner Hilfe ist es richtig gut geworden.

Antwort 27 von DOMMEl vom 15.10.2021, 23:02 Options

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

Antwort 28 von coros vom 16.10.2021, 05:00 Options

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
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 29 von DOMMEl vom 16.10.2021, 12:33 Options

Ok danke. den Code binde ich einfach beim VBA Editor unter den einzelnen Tabellenblätter ein.

Antwort 30 von DOMMEl vom 16.10.2021, 12:37 Options

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?

Antwort 31 von coros vom 16.10.2021, 12:45 Options

Hallo Dominik

nur alleine den Code einfügen reicht nicht. Bei dem Code, den Du gepostet hast, handelt es sich um ein Makro, dass man starten muss. Entweder Du schreibst den Code in ein Modul, dann muss Du das "Private" vor dem "Sub" löschen und dann rufst Du das Makro über das Tabellenblattereignis, dass Du verwenden möchtest, auf oder Du startest das Makro über einen Button oder eine Tastenkombination.
Wenn Du aber das "Private Sub" verwenden möchtest, dann kopiere das gesamte Makro in das VBA-Projekt des Tabellenblatts, in dem das Makro ausgeführt werden soll. Aber auch hier musst Du dann über ein entsprechendens Ereignis das Private Sub Makro aufrufen.

Bei was soll den das Tabellenblatt verschwinden?

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

Antwort 32 von DOMMEl vom 16.10.2021, 13:09 Options

Generell soll nur das Starttabellenblatt erscheinen, alle anderen sollen im Hintergrund laufen.
Man kann sie aber nicht über die Tabellenblattlaufzeile aufrufen wie normal.

Normalerweise würde ich ja das Tabellenblatt ausblenden, dann kann aber das Makro nicht mehr auf die Daten zugreifen.

Antwort 33 von coros vom 16.10.2021, 14:09 Options

Hallo Dominik,

kopiere den nachfolgenden VBA-Code in das VBA-Projekt "DieseArbeitsmappe" in das Ereignis "Private Sub Workbook_Open()"

Dim intSheets As Integer

For intSheets = 1 To Sheets.Count
    If LCase(Sheets(intSheets).Name) <> LCase("Was wollen Sie machen") Then
        Sheets(intSheets).Visible = xlSheetVeryHidden
    End If
Next
Damit werden alle Tabellenblätter, aus dem Tabellenblatt mit dem Namen "Was wollen Sie machen", ausgeblendet. Ich habe mich dabei nach der Datei aus Deiner AW21 gerichtet. Heißt Dein Starttabellenblatt anders als "Was wollen Sie machen", so musst Du dies im Code ändern.

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

Antwort 34 von DOMMEl vom 16.10.2021, 15:30 Options

Hi coros

leider ist bei dem Code genau das gleiche Problem wie beim ganz normalen Ausblenden der Tabellenblätter.
Die Makros, die zu den anderen Tabellenblättern gehen, funktionieren nicht mehr., sodass man nicht zu den anderen Tabellenblättern weitergeleitet wird auf denen man die einzelnen Dinge ausführen kann,

Ansonsten funktioniert der Code gut.

Bei einem Klick auf ein Makro (z.B. Suche nach Suchbegriff) sollte man zu dem entsprechenden Tabellenblatt kommen, ohne dass es unten in der Tabellenblattzeile zu sehen ist.

Ziel soll sein, dass man sich immer über die Makros bewegt und nicht in Versuchung gerät auf die einzelnen Tabellenblätter händisch zu gehen.

Und im Internet finde ich leider bisher nichts dazu, weil immer genau das oben beschriebene Problem auftritt, dass die tabellenblätter komplett verschwinden und man über Makros nicht mehr dahin kommt.


MfG Dominik

Antwort 35 von coros vom 16.10.2021, 15:39 Options

Hallo Dominik,

deshalb musst Du in dem entsprechenden Makro (ich weiß nicht, von welchem Makro Du redest) an entsprechender Stelle mit dem Befehl

Sheets("Tabelle1").Visible = True
das Blatt wieder einblenden und beim Deaktivieren des Tabellenbaltts mit dem Befehl

Sheets("Tabelle1").Visible = xlSheetVeryHidden
wieder ausblenden.

Damit Du die Blattnamen nicht siehst, musst Du diese Leiste mit dem Befehl

ActiveWindow.DisplayWorkbookTabs = False
die ausblenden.

Sorry, aber Du kommst immer erst nach einigen Vorschlägen mit dem raus, was Du eigentlich genau möchtest. Langsam verliere ich die Lust.

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

Antwort 36 von DOMMEl vom 16.10.2021, 17:01 Options

Tut mir leid.. manchmal bin ich halt etwas "ungenau" in meinen Ausführungen, da ich zu wenig Ahnung von VBA und Excel.

Aber der letzte deiner Codes ist wirklich perfekt!!

Danke nochmal für deine Ausdauer.
Und einen Schönen Abend noch

LG Dominik

Ähnliche Themen

VBA-Code funktioniert nicht mehr
jojo5  03.07.2008 - 72 Hits - 3 Antworten

Brauche hilfe bei VBA Code
BenjaminM  30.07.2008 - 24 Hits - 20 Antworten

Frage zu einem VBA-Code
Donjuandan  25.11.2008 - 43 Hits - 6 Antworten

Ergänzung zu VBA Code
DOMMEl  04.10.2009 - 322 Hits - 22 Antworten

VBA Code / Makro
DOMMEl  08.10.2009 - 186 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026