Makro Tabellenblatt erstellen in Excel

Hallo zusammen,
ich bin leider noch ein totaler Makro Neuling und wäre für eure Hilfe dankbar.,

Folgendes ist das erste Problem:
ich will in einem Excel Tabellenblatt alle notwendigen Daten zu einer Firma erfassen.
Nach Klick auf einen Button soll dann ein neues Tabellenblatt mit genau diesen Daten erzeugt werden und mit dem Namen der Firma benannt werden.

Zweites Proble:
Die Daten der jeweiligen erzeugten Tabellenblätter, sollen in einer Gesamtübersicht in einem weiteren Tabellenblatt zusammengestellt werden.
Die Informationen der jeweiligen Tabellenblätter sollten somit nach Erstellung des Tabellenblattes mit dem ersten Makro gleich in die Gesamtübersicht übernommen werden.

Vielen Dank bereits im Voraus für eure Hilfe.

ich bin leider noch ein totaler Makro Neuling und wäre für
eure Hilfe dankbar.,

Hallo Stoffelus,

deine Aufgabe sieht lösbar aus. Problem ist, Wenn, bekommst du Code der zwangsläufig auf Tabellenblätter einer vom Helfer erzeugten
Beispielmappe bezogen ist. Ich weiß nicht ob du es hinkriegst dies
auf deine Mappe umzucodieren.

Besser finde ich, du machst eine Kopie deiner Mappe,
reduzierst die Datenzeilen, anonymisiert sie.
Als Datenbasis brauchen wir nur soviel Zeilen daß 2-3 Firmen
ggfs. mehrere Datenzeilen haben

Wie willst du den Firmennamen an den Code übergeben?
Wichtig ist die Tabellenstruktur bleibt erhalten und auch die
Blattnamenstruktur.

Lade halt mal eine Beispielmappe hoch mit dem obersten Hochladlink in
FAQ:2606

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für deine Antwort und deine Idee mit der Test Datei.

Anbei der Link, ich hoffe das hat geklappt.

http://www.file-upload.net/download-7327722/Test_Fir…

Ein Tabellenblatt kopieren hab ich schon hinbekommen, das wars dann aber auch schon mit meinem Erfolg. :smile:

Vielleicht kannst du mir anhand der Test-Datei noch einmal weiter helfen.
Vielen Dank und viele Grüße,
Stoffelus

Anbei der Link, ich hoffe das hat geklappt.

http://www.file-upload.net/download-7327722/Test_Fir…

Hallo Stoffelus,

ja, das mit dem Link klappte. Aber ich fühl mich leicht veräppelt.
Du hast da quasi nur eine Firma/Datensatz.
Was soll ich damit? Wie soll ich da Code testen der die Daten einer
Firma aus einer Liste mit mehreren Firmendaten herauspickt?

Lese bitte nochmals meinen Erstbeitrag und befolge ihn sonst
wird das hier nix *befürcht*

Gruß
Reinhard

Hallo Reinhard,

also das letzte was ich will ist jemanden, der mir versucht zu helfen, zu veräppeln.
Mein Anliegen ist aber nicht eine Firma aus einer Gesamtliste zu picken, sondern ein anderes.
Ich möchte auf dem ersten Tabellenblatt die Firma mit Ihren Daten manuell eingeben.
Danach soll für diese Firma über ein Makro ein neues Tabellenblatt erstellt werden mit dem Namen der Firma.
Als letztes soll dann diese Firma mit Ihren Daten in die Gesamtübersicht übernommen werden.
Vielleicht hab ich mich bei der ersten Beschreibung nicht klar ausgedrückt, was mein Problem ist.

Na vielleicht kannst du mir ja doch noch helfen.
Wär dir auf jeden Fall dankbar.
Viele Grüße
Steffi

Hallo Steffi,

Mein Anliegen ist aber nicht eine Firma aus einer Gesamtliste
zu picken, sondern ein anderes.

okay, habe das völlig anderst gedeutet, verzeih.
Ich hoffe vorbei und vergessen.

Ich habe mal was gebastelt, probiere es aus.
http://www.file-upload.net/download-7333504/kwStoffe…
Ich würde im Eingabeblatt alle Zellen bis auf B3,B4 schützen.
Bestimmte Fehleingaben werden schon im Makro abgearbeitet und mit
MsgBox angezeigt.

Sag Bescheid wenn noch Überprüfungen fehlen. Genauso wie wenn du in
den erstellten Blättern Fettdruck, autom. Spaltenbreiten o.ä.
brauchst.

Wichtiger Hinweis für deine Excelzukunft, schreib NIE ein Leerzeichen
in eine leere Zelle oder das Leerzeichen ans Ende des Zelleintrages
oder wie du das gemacht hast ans Ende des Blattnamens
„Gesamtübersicht“.

„Gesamtübersicht“
und
"Gesamtübersicht "
sind für Excel genauso gleich/ungleich wie „abc“ und „xyz“.

Gruß
Reinhard

1 Like

Hallo Reinhard,

Wow das ist ja super.
Klasse, vielen herzlichen Dank.
Jetzt bin ich mal gespannt ob ich das versteh, wie du das hinbekommen hat. :smile:

Vielen Dank.
Stoffelus

Ahh aber du hast einen kleinen Trik eingebaut und änderst die Mitarbeiterzahl in Sklavenzahl :wink:

Jetzt bin ich mal gespannt ob ich das versteh, wie du das
hinbekommen hat. :smile:

Hallo Steffi,

da die Hochladlinks vergänglich sind nachfolgend der Code.

Wenn du totaler VBA-Neuling bist verstehste den Code nicht.
Stell dir das wie Englisch in der Schule vor, sagen wir mal
du lernst das vom 5-10 Schuljahr.

Mein Code ist für VBA/Englisch einfach aber verstehen kannste den erst
mit dem Wissen vom 7-ten Schuljahr.
Ist so, gut Ding will Weile haben :smile:

Was du schon jetzt kannst in deinem fünften Schuljahr, im Code
„Sklaven“ durch „Ausgebeutete“ ersetzen *grien*

Gruß
Reinhard

Option Explicit

Private Sub CommandButton1\_Click()
Dim Zei As Long, wksQ As Worksheet
Set wksQ = ActiveSheet
Application.ScreenUpdating = False
With Worksheets("Gesamtübersicht")
 Zei = .Cells(Rows.Count, 2).End(xlUp).Row + 1
 If Range("B3").Value = "" And Range("B4").Value = "" Then
 MsgBox "B3 und B4 leer, Vorgang abgebrochen."
 Exit Sub
 End If
 If Range("B3").Value = "" Then
 MsgBox "B3 leer, Vorgang abgebrochen."
 Exit Sub
 End If
 If Vorhanden(Range("B3").Value) Then
 MsgBox "Firma existiert schon, Vorgang abgebrochen. "
 Exit Sub
 End If
 .Cells(Zei, 1).Value = Range("B2").Value
 .Cells(Zei, 2).Value = Range("B3").Value
 .Cells(Zei, 3).Value = Range("B4").Value
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = Range("B3")
 With ActiveSheet
 .Range("A2").Value = "lfd. Nr."
 .Range("A3").Value = "Firmenname"
 .Range("A4").Value = "Sklavenzahl"
 .Range("B2").Value = wksQ.Range("B2")
 .Range("B3").Value = wksQ.Range("B3")
 .Range("B4").Value = wksQ.Range("B4")
 End With
 wksQ.Activate
 Range("B3:B4").ClearContents
End With
Application.ScreenUpdating = True
End Sub

Function Vorhanden(ByVal Firma As String) As Boolean
With Worksheets("Gesamtübersicht")
 Vorhanden = Application.CountIf(.Range("B:B"), Firma) \> 0
End With
End Function