Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

auttomatische datenblätter automatisch abfüllen

auttomatische datenblätter automatisch abfüllen
12.01.2018 15:44:05
simon
Hallo zusammen
Ich habe ein File mit einer Liste welche ich aus fülle.
wenn ich eine neue Art/Zeile erfasse, gebe ich zuvorderst die neue Nr. ein und über die Makros erstellt es mir ein neues Blatt gem. Vorlage mit dieser Nr. als Name.
Nun möchte ich, dass es jeweils gewisse angaben aus der liste automatisch in das neu erstellte blatt kopiert.
leider bring ich dies nicht zustand.
habs mit sverweis versucht mittels vba schaff ich dies nicht da rasselt mir excel immer ab...
ich wäre extrem froh wenn mir jemand da weiterhelfen könnte!
liebe grüsse
Simon
https://www.herber.de/bbs/user/118905.zip

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: auttomatische datenblätter automatisch abfüllen
13.01.2018 16:02:34
fcs
Hallo Simon,
grundsätzlich kann man mit SVERWEIS in der Vorlage arbeiten, aber man muss Prüfungen einbauen.
Wenn du nur mit neueren Excelversionen (ab 2007) arbeitest, dann kannst du mit WENNFEHLER arbeiten, statt dem von mir verwendeten Konstrukt
WENN(ISTFEHLER(VERGLEICH($B$5;Mängelliste!A:A;0));"";
In der Datei sind Makros für beide Varianten in "Vorlage" hab ich in verschiedenen Zellen Formeln eingebaut - Datenanzeige erfolgt sobald eine gültige Mangel-Nr. eingetragen wird.
Makro NeuesBlatt_erstellen
Erstellt eine Kopie von Vorlage, benennt sie um und trägt die Mangel-Nr. ein.
Makro Daten_in_Mangelblatt_eintragen
prüft ob das Blatt schon vorhanden ist, legt es nach Rückfrage an und trägt dann die Daten ein.
Es von den Makros jeweils die Mangel-Nr. in der aktiven Zeile im Blatt Mängelliste verarbeitet.
Im Prinzip kannst du die beiden Varianten auch kombinieren und einen Teil per Formel übernehmen und einen Teil von dem Makro eintragen lasen.
Gruß
Franz
https://www.herber.de/bbs/user/118930.zip
Anzeige
AW: auttomatische datenblätter automatisch abfüllen
15.01.2018 08:37:38
simon
Hi Franz
besten dank für deine Hilfe.
Deine Version Funktioniert, jedoch nicht so ganz wie ich mir dies vorstelle.
Zuvor konnte ich In Spalte A eine Zahl einfügen und auf enter drücken um das Blatt zu erstellen, dies funktioniert leider nicht mehr.
falls du da noch hilfe anbieten könntest wäre super!
besten dank nochmals für deine Formel Hilfen!!!
lg
Simon
AW: auttomatische datenblätter automatisch abfüllen
15.01.2018 10:32:27
simon
so hab nochmals etwas versucht.
nun müsste ich nur noch per Makro in der Spalte "B5" den Blattnamen einfügen.
Irgendwie Schaff ich dies nicht:(
der rest wäre perfekt!!!
lg
simu
AW: auttomatische datenblätter automatisch abfüllen
15.01.2018 14:19:39
fcs
Hallo Simon,
wenn bei Änderung einer Zelle in Spalte A im Blatt "Mängelliste" ein Blatt neu erstellt werden soll, dann kann die Zelle als Parameter übergebn.
Hierzu musst du unter dem Code-Modul von Blatt "Mängelliste" folgendes Ereignismakro einfügen:
'Makro unter Tabellenblatt-Modul von Blatt "Mängelliste"
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 10 And Target.Column = 1 And Target.Cells.Count = 1 _
And Target.Value > 0 Then
Call NeuesBlatt_erstellen(Zelle:=Target)
'    if activesheet.name  "Mängelliste" then activesheet.Range("B5")=Target.value
End If
End Sub
und das von mir erstellte Makro "NeuesBlatt_erstellen" in 2 Zeilen anpassen.
Sub NeuesBlatt_erstellen(Zelle As Range)                  'geändert fcs 2018-01-15
Dim Zeile As Long
Dim wksListe As Worksheet
Dim wksDaten As Worksheet
Dim wksVorlage As Worksheet
Set wksListe = ActiveWorkbook.Worksheets("Mängelliste")
Set wksVorlage = ActiveWorkbook.Worksheets("Vorlage")
If ActiveSheet.Name  wksListe.Name Then
MsgBox "Das Makro ""NeuesBlatt_erstellen"" nur Starten, wenn das Blatt """ _
& wksListe.Name & """ das aktive Blatt ist!", _
vbInformation + vbOKOnly, "Hinweis"
GoTo Beenden
End If
Zeile = Zelle.Row                                         'geändert fcs 2018-01-15
Gruß
Franz
Anzeige
AW: auttomatische datenblätter automatisch abfüllen
15.01.2018 14:36:48
simon
Funktioniert perfekt, tausend danke Franz! :)
AW: auttomatische datenblätter automatisch abfüllen
15.01.2018 11:33:34
simon
so, nochmals ich
ich benötige nur noch den VBA Code, welcher mir in der Spalte B5 jeweils den Blattnamen automatisch einfügt...
lg simu

Option Explicit
Sub NeuesBlatt_erstellen()
Dim Zeile As Long
Dim wksListe As Worksheet
Dim wksDaten As Worksheet
Dim wksVorlage As Worksheet
Set wksListe = ActiveWorkbook.Worksheets("Mängelliste")
Set wksVorlage = ActiveWorkbook.Worksheets("Vorlage")
If ActiveSheet.Name  wksListe.Name Then
MsgBox "Das Makro ""NeuesBlatt_erstellen"" nur Starten, wenn das Blatt """ _
& wksListe.Name & """ das aktive Blatt ist!", _
vbInformation + vbOKOnly, "Hinweis"
GoTo Beenden
End If
Zeile = ActiveCell.Row
If Trim(wksListe.Cells(Zeile, 1).Text) = "" Then
MsgBox "In Spalte A der aktiven Zeile ist noch keine Mangel-Nr. eingetragen!", _
vbInformation + vbOKOnly, "Makro: NeuesBlatt_erstellen"
ElseIf fncCheckSheet(wksListe.Cells(Zeile, 1).Text, ActiveWorkbook) = True Then
MsgBox "Das Blatt zur Mangel-Nr. """ & wksListe.Cells(Zeile, 1).Text _
& """ ist bereits vorhanden!", _
vbInformation + vbOKOnly, "Makro: NeuesBlatt_erstellen"
Else
If MsgBox("Neues Blatt für Mangel Nr, """ & wksListe.Cells(Zeile, 1).Text & """  _
erstellen?", _
vbQuestion + vbOKCancel, "Mängel-Datenblatt erstellen") = vbCancel Then GoTo  _
Beenden
wksVorlage.Copy before:=wksVorlage
Set wksDaten = ActiveSheet
wksDaten.Name = wksListe.Cells(Zeile, 1).Text
wksDaten.Range("B5").Value = wksListe.Cells(Zeile, 1).Value 'Mangel-Nr. eintragen
End If
Beenden:
End Function
Sub Daten_in_Mangelblatt_eintragen()
Dim Zeile As Long
Dim strBlatt As String
Dim wksListe As Worksheet
Dim wksDaten As Worksheet
Dim wksVorlage As Worksheet
Set wksListe = ActiveWorkbook.Worksheets("Mängelliste")
Set wksVorlage = ActiveWorkbook.Worksheets("Vorlage")
If ActiveSheet.Name  wksListe.Name Then
MsgBox "Das Makro ""Daten_in_Mangelblatt_eintragen"" nur Starten, wenn das Blatt """ _
& wksListe.Name & """ das aktive Blatt ist!", _
vbInformation + vbOKOnly, "Hinweis"
GoTo Beenden
End If
Zeile = ActiveCell.Row
strBlatt = wksListe.Cells(Zeile, 1).Text
If Trim(strBlatt) = "" Then
MsgBox "In Spalte A der aktiven Zeile ist noch keine Mangel-Nr. eingetragen!", _
vbInformation + vbOKOnly, "Makro: Daten_in_Mangelblatt_eintragen"
End If
If fncCheckSheet(strBlatt, ActiveWorkbook) = True Then
Set wksDaten = ActiveWorkbook.Worksheets(strBlatt)
Else
If MsgBox("Das Blatt zur Mangel-Nr. """ & strBlatt & """ ist noch nicht angelegt!" _
& vbLf & "Neues Blatt jetzt erstellen?", _
vbQuestion + vbOKCancel, "Makro: Daten_in_Mangelblatt_eintragen") = vbOK Then
wksVorlage.Copy before:=wksVorlage
Set wksDaten = ActiveSheet
wksDaten.Name = strBlatt
wksDaten.Range("B5").Value = wksListe.Cells(Zeile, 1).Value 'Mangel-Nr. eintragen
End If
End If
If Not wksDaten Is Nothing Then
'Daten aus Liste in Blatt übertragen
With wksDaten
.Range("G5").Value = wksListe.Cells(Zeile, 2)     'Datum
.Range("B17").Value = wksListe.Cells(Zeile, 3)     'Gebäude
.Range("B19").Value = wksListe.Cells(Zeile, 4)     'Ebene
.Range("B21").Value = wksListe.Cells(Zeile, 5)     'Achse Sektor Raum
.Range("G7").Value = wksListe.Cells(Zeile, 6)     'Mangel
End With
End If
Beenden:
End Sub
Public Function fncCheckSheet(varBlatt, Optional Wb As Workbook) As Boolean
'Prüft ob Blatt in Arbeitsmappe vorhanden
Dim objSheet As Object
On Error GoTo Fehler
If Wb Is Nothing Then Set Wb = ActiveWorkbook
Set objSheet = Wb.Sheets(varBlatt)
fncCheckSheet = True
Exit Function
Fehler:
fncCheckSheet = False
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige