Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Automatische Eintragung und Ausdruck





Frage

Ich habe zwei Tabellenblätter in einer Mappe. In dem einen werden Ladungen eingetragen (KFZ-Kennzeichen, Menge...), das andere ist ein Avis. In Spalte A der Ladungen steht eine fortlaufende Nr. Ist es möglich das sobald ich das Kennzeichen eingebe die fortlaufende Nr. in das Avis in eine bestimmte Spalte geschrieben und das Tabellenblatt ausgedruckt wird?

Antwort 1 von coros

Hi beagie,

gestatte mir zum Anfang eine kleine Anmerkung. Ein Hallo am Anfang und ein Gruß am Ende würde Deinen Beitrag gleich viel netter aussehen lassen. Denn die Leute, an die Du Deine Frage richtest, sitzen zwar am PC, sind aber dennoch Menschen.

Nun zu Deiner Frage, ja, das geht. Allerdings benötigt man dazu einige zusätzliche Angaben, wenn möglich so viel wie möglich. Einige Fragen wären: In welcher Zelle wird das Kennzeichen eingegeben? Wie heißt dieses Tabellenblatt? Wo soll die fortlaufende Nummer ausgegeben werden? Wenn Ausgabe in Spalte A, soll dann immer in die nächste freie Zeile die Nummer ausgegeben werden? Wie heißt das Blatt, das ausgedruckt werden soll, usw. usw.?

Nach den Angaben, kann eine Lösung erstellt werden.

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 2 von beagie

Mit der Begrüßung tut mir leid.
Als ich es weg geschickt habe, ist es mir aufgefallen.
Also: Ein fröhliches HALLOO.
Nun zu meinem Problem.
Tabellenblett 1 heißt Ladungen, Tabellenblatt 2 heißt Avis. Das Kennzeichen wird in Ladungen unter M2, M3, M4... eingetragen. Die fortlaufende Nummer steht unter B2, B3, B4...
Wenn ich also in Ladungen unter M2 z.B. FB-E 258 eingebe, möchte ich, dass er mir im Tabellenblatt Avis die fortlaufende Nummer (B2) in E23 einträgt und das Tabellenblatt Avis ausdruckt.
Denn sobald die fortlaufende Nummer in E23 eingetragen wird, wird der Rest per Sverweis eingetragen.

Antwort 3 von coros

Hi beagie,

kopiere nachfolgenden VBA Code in das VBA Projekt des Tabellenblattes "Ladungen".

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 13 Then
If Target.Row = 1 Then
Cells(Target.Row, 2) = 1
Else
Cells(Target.Row, 2) = Cells(Target.Row - 1, 2) + 1
End If
With Sheets("Avis ")
.Range("E23") = Cells(Target.Row, 2)
.PrintOut
End With
End If
End Sub

Bei dem obigen Code ist Bedingung, dass in Spalte M nacheinander ohne Leerzeile etwas eingegeben wird. Mit dem Code wird wenn in Spalte M ein Eintrag getätigt wird, die Nummer aus der vorigen Zelle in Spalte B ermittelt und die Zahl 1 dazu addiert. Außerdem wird die Nummer in das Blatt "Avis" in Zelle E23 kopiert und das Blatt "Avis" wird ausgedruckt.

Ich hoffe, Du hast das so gemeint. Wenn Diene Eingaben in Spalte M unregelmäßig sind, also nicht Zeile für Zeile, dann muss der Code noch mal umgearbeitet werden und Du müsstest Dich noch mal melden. Ich bin erst einmal von der einfachsten Lösung ausgegangen.

Bei Problemen melde Dich bitte.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

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 4 von beagie

Hi Oliver,
du bist echt super.
Nur leider gebe ich die Kennzeichen nicht der Reihe nach an. Es kommt vor, dass ich erst M4 und dann M3 ausfülle. Spalte B ist schon fest ausgefüllt.
Diesen Teil kannst du also aus dem Code rausnehmen. Ich gucke mir jetzt erst mal deine HP an. Damit ich überhaupt was mit dem Code anfangen kann.
Ich hoffe, du erstellst mir einen neuen Code.

Liebe Grüße beagie

Antwort 5 von beagie

Hi,
fals du es nicht schon berücksichtigt hast:
Der Code müsstest für min. 200 Zeilen eingerichtet werden.
Vielen vielen Dank im Vorraus.

Antwort 6 von coros

Hi beagie,

sorry, aber dem was Du da schreibst kann ich leider nicht ganz folgen. Zum einen schreibst Du, dass in Spalte M Eintragungen gemacht werden und in Spalte B dann eine Nummer erzeugt werden soll, dann schreibst Du dass Spalte B schon fest ausgefüllt ist. Was ist denn nun in Spalte B?

Wenn Du Deine Daten nicht der Reihe nach angibst, sieht der VBA Code folgendermaßen aus. Kopiere ihn wieder in das VBA Projekt des Tabellenblattes "Ladungen".

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 13 And Target.Cells <> "" Then
If Target.Row = 1 Then
Cells(Target.Row, 2) = 1
Else
Cells(Target.Row, 2) = Application.Max([B:B]) + 1
End If
With Sheets("Avis")
.Range("E23") = Cells(Target.Row, 2)
.PrintOut
End With
End If
End Sub


Mit dem Code wird immer in Spalte B einen neue Nummer erzeugt, wenn in Spalte M etwas eingegeben wird. Eine Reihenfolge muss nicht eingehalten werden.

Ich hoffe, Du kommst zurecht. Wenn nicht bitte melden.

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 7 von beagie

Hi Oliver,
sorry wenn ich dich durcheinander gebracht habe.
Mit in Spalte B steht schon eine fortlaufende Nummer, da ich diese im vorein schon benötige und nicht erst wenn das Kennzeichen bekannt ist.

Vielen Dank für das bis jetzt geleistete.
Liebe Grüße beagie

Antwort 8 von coros

Hi beagie,

bis zu Deiner Antwort 7 dachte ich, ich würde einigermaßen verstehen, was Du möchtest. Das hast Du mit der Aussage

Zitat:
in Spalte B steht schon eine fortlaufende Nummer, da ich diese im vorein schon benötige und nicht erst wenn das Kennzeichen bekannt ist


völlig über den Haufen geworfen. Erst mal weiß ich nicht, ob Dich meine beiden VBA Code irgendwie weitergebracht haben -dazu hast Du Dich noch nicht geäußert- und dann verstehe ich nicht, wozu Du eine neue automatisch erzeugte Nummer in Spalte B benötigst, wenn dort schon eine steht.

Sorry, aber was ist denn bitte schön der Sinn, wenn ich z.B. in Zelle M10 etwas eingebe und mir soll dadurch in Zelle B10 einen neue Nummer erzeugt werden, wenn vor der Eingabe in der Zelle B10 bereits eine Nummer steht? Oder verstehe ich hier etwas völlig falsch?

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 9 von beagie

Hi Oliver,
in Zeile B soll keine fortlaufende Nummer erzeugt werden. Denn da steht ja schon eine.
Es soll nur die Nummer, die da im voraus schon steht, in Tabellenblatt Avis in Zeile E23 eingefügt werden.
Ansonsten funktioniert alles ganz super.

Antwort 10 von coros

Hi beagie,

da habe ich wohl etwas zu kompliziert gedacht. Wenn das so ist, sieht der Code wie folgt aus:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
If Target.Column = 13 And Target.Cells <> "" Then
With Sheets("Avis")
.Range("E23") = Cells(Target.Row, 2)
.PrintOut
End With
End If
End Sub


Tausche ihn gegen den Alten aus. Der sollte nun das machen, was Du Dir vorgestellt hast. Wenn nicht, dann melde Dich bitte wieder.

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 11 von palov

Hallo beagie, Hallo Oliver

Ich habe das gleiche Problem.
Allerdings soll nach der Eingabe der Spalte M2, B2 in E23 von 3 verschiedenen Tabellenblättern eingetragen werden. Auf deutsch das Tabellenblatt "Avis" habe ich 3 mal.
Wenn möglich soll er mich vor dem Ausdruck fragen welches Tabellenblatt ich ausdrucken will "Avis1", "Avis2" oder "Avis3". Ist das möglich??

Bitte bitte helf mir.
mfG
Stefan

Antwort 12 von beagie

Oliver du bist ein Genie!!!
Es funktioniert ganz einwandfrei.
Vielen vielen Dank!!
Liebe Grüße beagie

Antwort 13 von coros

Hi Stefan,

dass sollte mit nachfolgendem VBA Code funktionieren. Kopiere ihn in das VBA Projekt des Tabellenblattes, in dem die Eingaben in Spalte M getätigt werden.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Druckblatt, Blatt
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
If Target.Column = 13 And Target.Cells <> "" Then

For Each Blatt In ThisWorkbook.Worksheets
If Mid(Blatt.Name, 1, 4) = "Avis" Then
With Sheets(Blatt.Name)
.Range("E23") = Cells(Target.Row, 2)
End With
End If
Next
Druckblatt = InputBox("Welches Blatt soll gedruckt werden? Bitte nur die Nummer 1, 2 oder 3 eingeben. Es wird dann automatisch das entsprechende Avis-Blatt gedruckt.", "Abfrage...")
If Druckblatt = Empty Or Not IsNumeric(Druckblatt) Then Exit Sub
Sheets("Avis" & Druckblatt).PrintOut
End If
End Sub


Dieser Code trägt ebenfalls den Wert aus Spalte B in alle Tabellenblätter, in deren Name das Wort "Avis" vorkommt, die entsprechende Nummer ein. Danach erscheint hier nun allerdings eine Eingabebox, in der man die Zahl des Tabellenblattes, also die 1 für Avis1, eine 2 für Avis2 usw., eingeben muss. Danach wird das entsprechende Blatt ausgedruckt.

Ich hoffe, Du hast das so gemeint. Wenn nicht, dann bitte wieder melden.

@beagie: Danke Dir für Deine Rückmeldung. Es freut mich, dass alles funktioniert.

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 14 von palov

Hallo Oliver

Genau so habe ich es gemeint.
Echt toll von dir.
Danke.
mfg
Stefan.

Antwort 15 von palov

Hi Oliver.
Es funktioniert doch nicht.
Der fügt mir B2 nicht in E23 der 3 "Avis" Tabellenblätter ein. Bevor es ausgedruckt wird.

mfg
Stefan

Antwort 16 von coros

Hi Stefan,

das hatte ich leider nicht so verstanden, dass immer der Wert aus Zelle B2 kopiert werden sollte. Mit nachfolgendem Code sollte das aber gehen. Bitte tausche ihn gegen den Alten.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Druckblatt, Blatt
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
If Target.Column = 13 And Target.Cells <> "" Then

For Each Blatt In ThisWorkbook.Worksheets
If Mid(Blatt.Name, 1, 4) = "Avis" Then
With Sheets(Blatt.Name)
.Range("E23") = Range("B2")
End With
End If
Next
Druckblatt = InputBox("Welches Blatt soll gedruckt werden? Bitte nur die Nummer 1, 2 oder 3 eingeben. Es wird dann automatisch das entsprechende Avis-Blatt gedruckt.", "Abfrage...")
If Druckblatt = Empty Or Not IsNumeric(Druckblatt) Then Exit Sub
Sheets("Avis" & Druckblatt).PrintOut
End If
End Sub


Das sollte es gewesen sein. Wenn nicht, dann melden.

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 17 von palov

Guten Morgen Oliver
Leider funktioniert es immer noch nicht.
Er soll mir wenn ich M12 in "Ladungen" Eingebe B12 von "Ladungen" in E23 der 3 anderen Tabellenblätter "Avis1, Avis2, Avis3" schreiben.

mfg
Stefan

Antwort 18 von coros

Hi Stefan,

bevor ich hier jetzt wieder eine Lösung präsentiere müsste ich nun mal genau wissen, was wann wo passieren soll. Einmal schreibst Du, dass der Wert aus Zelle B2 kopiert werden soll, dann aus Zelle B12. Soll der Wert aus Spalte B aus der gleichen Zeile wie in M der Eintrag getätigt wird, kopiert werden oder immer der Wert aus einer bestimmten Zelle z.B. B12? Werden in der gesamten Spalte M Eintragungen getätigt oder immer nur in einer?

Erklär das mal bitte etwas genauer.

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 19 von palov

Hi Oliver.
Hier dein Zitat:
"Soll der Wert aus Spalte B aus der gleichen Zeile wie in M der Eintrag getätigt wird, kopiert werden."
GENAU!!!
Ich hoffe, ich mache dir nicht gar so viele Umstände.

mfg
Stefan

Antwort 20 von coros

Moin Stefan,

sorry, dass ich erst heute Morgen antworte, aber wir hatten gestern Betriebsvollversammlung. Da ich im Betriebsrat bin, war danach noch "gemütliches" Zusammensitzen mit unserem Vorstand und allen anderen an der Ausrichtung beteiligten Personen angesagt.

Nun aber wieder zu Deinem Anliegen, eigentlich sollte der VBA Code aus Antwort 13 genau das machen, was Du Dir vorgestellt hast. Jedenfalls funktioniert er bei mir entsprechend Deinen Vorgaben. Ich gehe mal davon aus, dass der Fehler woanders liegt.
Teste es noch mal durch, eventuell hast Du ja irgendwo etwas, weil Du Den Code angepasst hast, einen Fehler untergejubelt. Sollte es gar nicht funktionieren, dann schicke mir doch mal Deine Datei. Du kannst auch alle Daten, die mich nichts anzugehen haben, heraus löschen. Wichtig ist nur, dass Du den VBA Code unverändert läßt, damit ich schauen kann, wo der Fehler liegt. Meine E-Mailadresse findest Du auf meiner HP u.a. im Impressum. Binde aber in der Betreffzeile irgendwie das Wort "Supportnet" und den Namen (Nickname), unter dem Du hier gepostet hast mit ein, da ich alle Mails deren Absender ich nicht kenne, ungelesen lösche.

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 21 von palov

Guten Morgen Oliver.

Du armer hast ja voll die langen Arbeitszeiten.
Mit der Tabelle, dass geht leider nicht.
Die kann ich dir nicht schicken.
Aber ich versuche es dir nochmal genau zu erklären.
Tabellenblätter Avis1, 2 und 3 sind per Sverweis mit Tabellenblatt Ladungen verknüpft. Sobald in E23 der Avis Tabellenblätter eine Zahl drin steht, die auch in Ladungen unter B steht, werden die restlichen Felder in den Avis Tabellenblätter automatisch ergänzt (Sverweis Suchkriterium E23 in Ladungen).
Aus diesem Grund muss sobald ich in Ladungen unter z.B. M12 etwas eingebe B12 aus Ladungen in E23 in Avis1, 2 und 3 eingetragen werden. An Hand von dieser Nummer in E23 ändern sich die Daten in Tabellenblatt Avis1, 2 und 3.
Danach soll Tabellenblatt Avis1, 2 oder 3 ausgedruckt werden.
Was nicht funktioniert ist die Eintragung in E23 der Avis Blätter. Das trägt er nichts ein. Er druckt das aus was schon drin war.
Ich hoffe, du kannst mir auch so helfen.

mfg
Stefan

Antwort 22 von coros

Hi Stefan,

ich habe das jetzt schon verstanden, was Du erreichen möchtest. Aber das macht der Code aus Antwort 13. Wenn ich mir eine Datei erstelle, die ein Blatt mit den SVERWEIS-Daten, ein Blatt in dem man in Spalte M etwas eingeben kann und die Blätter Avis 1-3 enthält, wird in meinem Beispiel der Wert aus Spalte B in die 3 Avisblätter in Zelle E23 übertragen und das Blatt, welches dann ausgedruckt wird, enthält sowohl den Wert aus E23 als auch die Daten , die entsprechend der SVERWEISE gefunden wurden. Das Problem muss also woanders liegen. Da ich Deine Datei nicht kenne, kann ich dazu aber keine Aussage treffen. Man benötigt dazu Deine Datei, sonst ist das wie im trüben fischen, damit man nachschauen kann woran das liegt, dass das Makro bei Dir nicht, aber bei meinem Beispiel funktioniert. Alternativ, da Du mir die Datei nicht schicken kannst, kannst Du mir Deine E-Mailadresse mal mailen, dann schicke ich Dir meine Beispieltabelle zu, damit Du sehen kannst, wie das bei mir funktioniert. Wie Du meine E-Mailadresse findest, habe ich Dir ja schon in Antwort 20 beschrieben.

Aber eventuell hat ja jemand anderes hier eine Idee.

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: