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 coros Experte (4k Punkte)
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
[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)
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.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[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)
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[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)
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
...