Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
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

Fehler Typen unverträglich nicht gelöst

Fehler Typen unverträglich nicht gelöst
14.09.2021 08:47:46
Christina
Mehrere Dateien erstellen und Inhalte au von Christina Kitzberger vom 07.09.2021 11:06:47
AW: Mehrere Dateien erstellen und Inhalte au - von Yal am 08.09.2021 23:19:53
AW: Mehrere Dateien erstellen und Inhalte au - von Christina am 12.09.2021 19:00:13
AW: Mehrere Dateien erstellen und Inhalte au - von Oberschlumpf am 12.09.2021 22:40:34
AW: Mehrere Dateien erstellen und Inhalte au - von Christina am 12.09.2021 20:03:40
nach unten
Hallo!
Ich arbeite erst seit kurzem mit VBA Excel (Microsoft Windows 10 Pro, Microsof Office Standard 2016) und habe ein Problem, das ich nicht alleine lösen kann.
Ich würde gerne mit einem Kommandobutton eine Prozedur auslösen, die mir mit einem Zellinhalt aus der Datei in der dieses Kommandofeld liegt eine neue Datei aus einer Vorlage mit Dateinamen aus Zellinhalt erstellt und in die neu erstellte Datei anschließend Inhalte aus einer anderen Datei einfügen, die ich über den Explorer auswähle.
Dabei habe ich zwei Probleme:
1. Es funktioniert zumindest mit dem untenstehenden Code einmal, dass die neue Datei aus der Vorlage erstellt wird und unter dem richtigen Namen abgespeichert wird. Ursprünglich wollte ich die "Basisdatei" auch automatisch über den Code aufrufen und öffnen, das funktioniert aber leider nicht bzw. weiß ich nicht wie ich das machen muss, deshalb kommt jetzt die Aufforderung zur Auswahl der Datei.
2. Ich würde gerne Daten von den "Basisdaten" in die Datei "Bestellung" kopieren, aber mit dem untersten Code funktioniert das leider nicht. Wie muss ich die Dateinamen vergeben bzw. diese aufrufen, dass ich mit den vorher bearbeiteten/erstellten Dateien weiter arbeiten kann?

Private Sub CommandButton_OK_Click()
'Dim Bestellung As New Excel.Application
'Dim Basisdaten As New Excel.Workbook
Dim Bestellung As Object
Dim Basisdaten As Object
Dim strFilter As String
Dim strFileName
Dim strDateiname As String
Dim strDateiname2 As String
Dim strPfad As String
'Neues Bestellungsformular erstellen
Set Bestellung = ActiveWorkbook
strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
Set Bestellung = Workbooks.Open(strDateiname, False, True)
'Bestellung speichern
strDateiname2 = Range("B2").Value & " " & Range("D2").Value & ".xls"
Bestellung.SaveAs ("C:\Users\cg\Desktop\" & strDateiname2)
'Neue Basisdatei öffnen und bearbeiten
'** Dateifilter definieren
strFilter = "Excel-Dateien(*.xls*), *.xls*"
'** Laufwerk und Pfad definieren, welcher geöffnet werden soll
ChDrive "C"
ChDir "C:\Users\cg\Desktop\"
'** Den im Dialogfeld gewählten Namen auslesen
strFileName = Application.GetOpenFilename(strFilter)
'** Prüfen, ob eine gültige Datei ausgewählt wurde
If strFileName = False Then Exit Sub
'** Gewählte Datei öffnen
Set Basisdaten = Workbooks.Open(strFileName)
'** Hinweis ausgeben
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Dateien aus Basisdatei in Bestellung kopieren
Basisdaten.Worksheets("Fenster- und Terrassentüren").Columns("A").Value = Bestellung.Worksheets("fenster").Columns("A").Value
End Sub
Danke für eure Hilfe!!
nach oben nach unten
Hallo Christina,
zur besseren Lesbarkeit habe ich das Öffnen der Basisdaten in einem separaten Function abgelegt.
Das wesentlich ist die Übertragung der Daten von A nach B: für jede einzelne Zelle von Basisdaten (nur der verwendete Bereich von Spalte A), den Inhalt in der Zelle mit dieselbe Adresse in Bestellung übergeben.
Variable, deren Inhalt sich im Lauf des Codings nicht ändern habe ich als Const (Konstante) deklariert. Algemein die Anzahl von Variable so klein wie möglich halten (wobei für die Fehlersuche eine Variable hilfreich sein kann)
Const strPfad = "C:\Users\cg\Desktop\"

Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook
Dim Basisdaten As Workbook
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Bestellung unter Zielname speichern
ThisWorkbook.Activate
Bestellung.SaveAs strPfad & ActiveSheet.Range("B2").Value & " " & ActiveSheet.Range("D2").Value & ".xls"
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Daten übertragen
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For Each Zelle In Intersect(.Columns("A"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Z.Address) = Z.Value
Next
End With
End If
'Übergetragene Daten speichern
Bestellung.Save
End Sub

Private Function BasisDatei_öffnen() As Workbook
Dim strFileName As String
Const strFilter = "Excel-Dateien(*.xls*), *.xls*" 'Dateifilter
ChDrive "C"
ChDir strPfad 'Laufwerk und Pfad definieren, welcher geöffnet werden soll
strFileName = Application.GetOpenFilename(strFilter) 'Datei auswählen
If strFileName Then 'Wenn Auswahl getroffen
Set BasisDatei_öffnen = Workbooks.Open(strFileName) 'Gewählte Datei öffnen und übergeben
End If
End Function
VG
Yal
nach oben nach unten
Hallo Yal,
danke für deine Hilfe. Das schaut schon ganz gut aus.
Leider kommt beim Ausführen bei deiner neue Funktion in der Zeile If strFileName Then 'Wenn Auswahl getroffen die Fehlermeldung "Typen unverträglich".
Weißt du was hier das Problem ist?
Danke!
LG Christina
nach oben nach unten
Hi Christina,
wegen der Fehlermeldung ändere mal diese Zeile
Dim strFileName As String
um in
Dim strFileName As Variant
oder in
Dim strFileName
Der Fehler sollte nun weg sein.
Hilfts?
Ciao
Thorsten
nach oben nach unten
Hallo Yal,
noch eine Frage:
Diesen Teil in deinem Code verstehe ich leider nicht ganz. Was passiert hier genau in welchem Teilbereich (Was macht Intersect, UsedRange? Was Range(Z.Address)=Z.Value?)
For Each Zelle In Intersect(.Columns("A"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Z.Address) = Z.Value
Danke! LG
Hallo Thorsten!
Ich habe alle Varianten versucht, aber es funktioniert leider keine davon. Immer noch die Fehlermeldung "Typen unverträglich".
Es wäre auch super, wenn mir wer die oben gestellten Fragen beantworten könnte. Habe darauf leider noch keine Erklärung gefunden.
Ein weiteres Problem habe ich leider noch. Die Excel-Datei mit dem Makro lässt sich einen Tag später nicht mehr öffnen? Kann es sein, dass der Code irgendwo in Endlos-Schleife läuft oder was kann hier sonst ein Problem bereiten?
LG
Christina

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 11:22:30
Daniel
Hi
Um den TypeMismatch-Error weg zu bekommen, entweder so:

Dim strFileName As String
If LCase(strFileName) like "*.xls*" Then
Oder so

Dim strFileName As Variant
If Vartype(strFileName) = vbString Then
Gruß Daniel
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 11:31:25
Christina
Hallo Daniel,
danke, das klappt!
Jetzt habe ich nur noch das Problem, dass Zelle und Z nicht defniert sind in der Sub Command_Button.
Welche Typen soll ich hier vergeben?
Danke!
LG
Christina
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 11:39:08
Christina
Hallo!
Ich habe jetzt Zelle und Z als Object definiert:
Option Explicit
Const strPfad = "C:\Users\cg\Desktop\"

Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook
Dim Basisdaten As Workbook
Dim strFileName As Variant
Dim Zelle As Object
Dim Z As Object
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Bestellung unter Zielname speichern
ThisWorkbook.Activate
Bestellung.SaveAs strPfad & ActiveSheet.Range("B2").Value & " " & ActiveSheet.Range("D2").Value & ".xls"
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Daten übertragen
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For Each Zelle In Intersect(.Columns("A"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Z.Address) = Z.Value
Next
End With
End If
'Übergetragene Daten speichern
Bestellung.Save
End Sub
und bekomme jetzt die Fehlermeldung: Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt.
Was könnte hier das Problem sein?
Danke!
LG
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 11:40:32
Christina
Der Fehler betrifft die Zeile:
Bestellung.Worksheets("fenster").Range(Z.Address) = Z.Value
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 11:47:59
peterk
Hallo
Statt Z solltest Du Zelle nehmen
Peter
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 12:05:27
Christina
Hallo Peter!
Danke für den Hinweis, ich verstehe leider nicht ganz wie er gemeint ist. Vermutlich weil ich allgemein nicht verstehe, was in den zwei Zeilen passiert:
For Each Zelle In Intersect(.Columns("A"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Z.Address) = Z.Value
Muss ich statt Z z.B. A9 eingeben oder wie ist es gemeint? A9 funktioniert auf alle Fälle nicht, auch nicht als "A9".
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 12:30:23
Daniel
Du sollest zumindest wissen, warum diese Zeilen da sind und was an dieser Stelle im Makro passieren soll.
Kannst du uns das vielleicht mal beschreiben?
Gruß Daniel
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 13:08:15
Christina
Hallo!
Ich habe das Problem gelöst indem ich den Code wie folgt erweitert habe:
Option Explicit
Const strPfad = "C:\Users\cg\Desktop\"

Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook
Dim Basisdaten As Workbook
Dim strFileName As Variant
Dim Zelle As Object
Dim i As Long
Dim v As String
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Bestellung unter Zielname speichern
ThisWorkbook.Activate
Bestellung.SaveAs strPfad & ActiveSheet.Range("B2").Value & " " & ActiveSheet.Range("D2").Value & ".xls"
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Daten übertragen
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For Each Zelle In Intersect(.Columns("A"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Range("A9:A30").Address) = Range("A3", "A30").Value
Next
For Each Zelle In Intersect(.Columns("B"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Range("B9:B30").Address) = Range("B3", "B30").Value
Next
For Each Zelle In Intersect(.Columns("C"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Range("C9:C30").Address) = Range("C3", "C30").Value
Next
For Each Zelle In Intersect(.Columns("D"), .UsedRange)
Bestellung.Worksheets("fenster").Range(Range("D9:D30").Address) = Range("D3", "D30").Value
Next
End With
End If
'Übergetragene Daten speichern
Bestellung.Save
End Sub
Es passiert jetzt erst einmal genau das was ich will, aber für die Bereich E9:E30 in der Zieldatei habe ich das Problem, dass hier ein Wert befüllt werden soll, der in der Basisdatei (E3:E30) entweder 2 oder 3 Zahlen vor einem x steht. Die entweder 2 oder 3 Zahlen würde ich gerne kopieren, aber ohne das nachstehende x. Der Wert ist z.B. 100×80.
Für F9:F30 in der Zieldatei bräuchte ich nur den Teil nach dem x ohne das x selber.
Habt ihr eine Idee für mich wie ich das mit dem x lösen könnte?
Danke!
LG
Christina
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 14:12:15
Daniel
Hi
Range("A9:A30").Address ergibt wieder "A9:A30"
das kannst du also weglassen und gleich "A9:A30" schreiben
beachte weiterhin, dass bei dieser Art des Kopierens von Werten Quell- und Zielzellbereich gleich groß sein sollten.
außerdem reicht es, die Werte einmal zu übertragen. Da du hier alle Werte zusammen überträgst, brauchst du keine Schleife
es reicht also

With Basisdaten.Worksheets("Fenster- und Terrassentüren")
Bestellung.Worksheets("fenster").Range("A9:A36").Value = .Range("A3:A30").Value
Bestellung.Worksheets("fenster").Range("B9:B36").Value = .Range("B:B30").Value
Bestellung.Worksheets("fenster").Range("C9:C36").Value = .Range("C3:C30").Value
Bestellung.Worksheets("fenster").Range("D9:D36").Value = .Range("D3:D30").Value
end with
für die Spalten E,F müsstest du entsprechende Formeln in die Zellen eintragen und dann durch Werte ersetzen:
also in etwa

Bestellung.Worksheets("fenster").Range("E9:E36").FormulaR1C1 = "=Left('" & .name & "'!R[-6]C5,Find(""x"",'" & .name & "'!R[-6]C5)-1)"
Bestellung.Worksheets("fenster").Range("E9:E36").Formula = Bestellung.Worksheets("fenster").Range("E9:E36").value
Bestellung.Worksheets("fenster").Range("F9:F36").FormulaR1C1 = "=Mid('" & .name & "'!R[-6]C5,Find(""x"",'" & .name & "'!R[-6]C5)+1,99)"
Bestellung.Worksheets("fenster").Range("F9:F36").Formula = Bestellung.Worksheets("fenster").Range("F9:F36").value
Gruß Daniel
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 14:58:38
Christina
Hallo Daniel,
danke für deine Tipps.
Ich habe den Code jetzt wie folgt abgeändert:

Private Sub CommandButton_OK_Click()
Dim Bestellung As Workbook
Dim Basisdaten As Workbook
Dim strFileName As Variant
Dim Zelle As Object
Dim i As Long
Dim v As String
Const strDateiname = "C:\Users\cg\Desktop\Test.xlsx"
'Vorlage öffnen
Set Bestellung = Workbooks.Open(strDateiname, UpdateLinks:=False, ReadOnly:=True)
'Bestellung unter Zielname speichern
ThisWorkbook.Activate
Bestellung.SaveAs strPfad & ActiveSheet.Range("B2").Value & " " & ActiveSheet.Range("D2").Value & ".xls"
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Daten übertragen
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
Bestellung.Worksheets("fenster").Range("A9:A36").Value = .Range("A3:A30").Value
Bestellung.Worksheets("fenster").Range("B9:B36").Value = .Range("B3:B30").Value
Bestellung.Worksheets("fenster").Range("C9:C36").Value = .Range("C3:C30").Value
Bestellung.Worksheets("fenster").Range("D9:D36").Value = .Range("D3:D30").Value
Bestellung.Worksheets("fenster").Range("E9:E36").FormulaR1C1 = "=Left('" & .Name & "'!R[-6]C5,Find(""×"",'" & .Name & "'!R[-6]C5)-1)"
Bestellung.Worksheets("fenster").Range("E9:E36").Formula = Basisdaten.Worksheets("Fenster- und Terrassentüren").Range("E3:E30").Value
Bestellung.Worksheets("fenster").Range("F9:F36").FormulaR1C1 = "=Mid('" & .Name & "'!R[-6]C5,Find(""×"",'" & .Name & "'!R[-6]C5)+1,99)"
Bestellung.Worksheets("fenster").Range("F9:F36").Formula = Basisdaten.Worksheets("Fenster- und Terrassentüren").Range("E3:E30").Value
End With
End If
'Übergetragene Daten speichern
Bestellung.Save
End Sub
Bis zu dem Teil, wo es um E9:E36 geht, funktioniert es genauso wie vorher. Ab da bekomme ich in die Spalte E sowie F in der Zieldatei den ganzen Ausdruck, zB. in E9 bzw. F9: 100×80 usw. Dh das Abschneiden davor und danach funktioniert nicht. Momentan wird der gesamte Inhalt kopiert. Ich nehme an, dass das mit dem Formel einsetzen in E9 bzw. F9 noch nicht funktioniert oder?
LG
Christina
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 15:52:05
Daniel
Dein Code:

Bestellung.Worksheets("fenster").Range("E9:E36").Formula = Basisdaten.Worksheets("Fenster- und Terrassentüren").Range("E3:E30").Value
Mein Code:

Bestellung.Worksheets("fenster").Range("E9:E36").Formula = Bestellung.Worksheets("fenster").Range("E9:E36").value
Erkennst du den Unterschied?
nochmal zur Erklärung für die Spalten E und F.
Da hier die Werte nicht 1:1 aus der Vorlage übernommen werden sollen, sondern noch bearbeitet werden müssen, hole ich hier die Werte per Formel, mit der ich diese Bearbeitung machen kann.
Weil du aber wahrscheinlich nicht die Formel in der fertigen Liste haben willlst, sondern die Werte, kopiere ich dann die Formel nochmal und füge die Formelergebnisse an gleicher Stelle wieder ein, dh die Formel wird mit ihren Werten überschrieben.
du hingegen fügst die Formel ein und kopierst dann noch mal die vollständigen Werte aus der Quelltabelle.
So war das nicht gemeint und so hatte ich das auch nicht in der Formel geschrieben. Du musst da schon genauer hinschauen.
Gruß Daniel
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
14.09.2021 16:14:13
Christina
Hallo Daniel!
ich habe es vorher mit deinem Code wie folgt versucht:
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
Bestellung.Worksheets("fenster").Range("A9:A36").Value = .Range("A3:A30").Value
Bestellung.Worksheets("fenster").Range("B9:B36").Value = .Range("B3:B30").Value
Bestellung.Worksheets("fenster").Range("C9:C36").Value = .Range("C3:C30").Value
Bestellung.Worksheets("fenster").Range("D9:D36").Value = .Range("D3:D30").Value
Bestellung.Worksheets("fenster").Range("E9:E36").FormulaR1C1 = "=Left('" & .Name & "'!R[-6]C5,Find(""×"",'" & .Name & "'!R[-6]C5)-1)"
Bestellung.Worksheets("fenster").Range("E9:E36").Formula = Bestellung.Worksheets("fenster").Range("E9:E36").Value
Bestellung.Worksheets("fenster").Range("F9:F36").FormulaR1C1 = "=Mid('" & .Name & "'!R[-6]C5,Find(""×"",'" & .Name & "'!R[-6]C5)+1,99)"
Bestellung.Worksheets("fenster").Range("F9:F36").Formula = Bestellung.Worksheets("fenster").Range("F9:F36").Value
Aber da bekomme ich in der Zieldatei für die Spalten E und F einen Bezugsfehler in den Zellen geliefert, es steht übrall: #Bezug!
Was läuft hier falsch?
Danke!
LG
Christina
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
15.09.2021 13:45:06
Daniel
Hi
ich habe übersehen, dass du hier mit zwei unterschiedlichen Workbooks agierst.
dann muss der Dateiname in die Fomel mit rein aus

Find(""x"",'" & .name & "'!R[-6]C5)-1)"
müsste dann werden, damit du den Bezug auf die andere Datei bekommst:

Find(""x"",'[" & .Parent.Name & "]" & .name & "'!R[-6]C5)-1)"
Gruß Daniel
AW: Fehler Typen unverträglich nicht gelöst
16.09.2021 21:42:26
Christina
Hallo Daniel,
ich habe den Code wie folgt geändert:
'Basis ?ffnen
Set Basisdaten = BasisDatei_?ffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde ge?ffnet.", vbInformation, "Hinweis"
'Daten ?bertragen
With Basisdaten.Worksheets("Fenster- und Terrassent?ren")
Bestellung.Worksheets("fenster").Range("A9:A36").Value = .Range("A3:A30").Value
Bestellung.Worksheets("fenster").Range("B9:B36").Value = .Range("B3:B30").Value
Bestellung.Worksheets("fenster").Range("C9:C36").Value = .Range("C3:C30").Value
Bestellung.Worksheets("fenster").Range("D9:D36").Value = .Range("D3:D30").Value
Bestellung.Worksheets("fenster").Range("E9:E36").FormulaR1C1 = "=Left('" & .Name & "'!R[-6]C5,Find(""x"",'[" & .Parent.Name & "]" & .Name & "'!R[-6]C5)-1)"
Bestellung.Worksheets("fenster").Range("E9:E36").Formula = Bestellung.Worksheets("fenster").Range("E9:E36").Value
Bestellung.Worksheets("fenster").Range("F9:F36").FormulaR1C1 = "=Mid('" & .Name & "'!R[-6]C5,Find(""x"",'[" & .Parent.Name & "]" & .Name & "'!R[-6]C5)+1,99)"
Bestellung.Worksheets("fenster").Range("F9:F36").Formula = Bestellung.Worksheets("fenster").Range("F9:F36").Value
Leider immer noch derselbe Bezugsfehler.
Noch Ideen?
Danke!! LG
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
16.09.2021 22:22:38
Yal
Hmm... hat der Yal wieder geschlampert? ;-)
Folgende Block ist auch möglich:

On Error Resume Next
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For i = 3 To 30
Bestellung.Worksheets("fenster").Cells(i + 6, 1) = .Cells(i, 1).Value 'Spalte A = Spalte-Nr 1
Bestellung.Worksheets("fenster").Cells(i + 6, 2) = .Cells(i, 2).Value 'Spalte B = Spalte-Nr 2
Bestellung.Worksheets("fenster").Cells(i + 6, 3) = .Cells(i, 3).Value 'usw.
Bestellung.Worksheets("fenster").Cells(i + 6, 4) = .Cells(i, 4).Value
Bestellung.Worksheets("fenster").Cells(i + 6, 5) = Split(.Cells(i, 5).Value, "x")(0) 'in Spalte E, der Teil vor dem "x"
Bestellung.Worksheets("fenster").Cells(i + 6, 6) = Split(.Cells(i, 5).Value, "x")(1) 'in Spalte E, der Teil nach dem "x"
Next i
End With
Man geht durch alle Zeile von 3 bis 30. Es wird jeweils die Zeile gelesen und im Ziel 6 Zeilen tiefer abgelegt, also 9 bis 36.
Für die Spalte A bis D ( 1 bis 4), nur der Wert übertragen.
Für E schneidet man der Wert in der Quelle, da wo der "x" ist (wenn kein, alles nehmen), und lege ab die erste Teil davon
Für F auch schneiden und die zwiete Teil nehmen. Wenn kein "x", der Versuch den zweiten Teil zu holen verursacht ein Fehler. Diese wird durch die Fehlertoleranz "On Error Resume Next" einfach übersprüngen.
VG
Yal
Anzeige
AW: Fehler Typen unverträglich nicht gelöst
17.09.2021 16:12:10
Christina
Danke, das funktioniert prinzipiell, aber es kommt eine Fehlermeldung "Index außerhalb des gültigen Bereichs".
In Spalte 9 in der Basisdatei habe ich jetzt noch ein Bild, dass ich auch gerne in die Bestellung einfügen würde. Das funktioniert mit .shapes leider nicht.
Wie könnte das sonst gehen?
'Basis öffnen
Set Basisdaten = BasisDatei_öffnen
If Not Basisdaten Is Nothing Then
MsgBox "Die Datei '" & Basisdaten.Name & "' wurde geöffnet.", vbInformation, "Hinweis"
'Daten übertragen
On Error Resume Next
With Basisdaten.Worksheets("Fenster- und Terrassentüren")
For i = 3 To 40
Bestellung.Worksheets("fenster").Cells(i + 6, 1) = .Cells(i, 1).Value 'Spalte A = Spalte-Nr 1
Bestellung.Worksheets("fenster").Cells(i + 6, 2) = .Cells(i, 2).Value 'Spalte B = Spalte-Nr 2
Bestellung.Worksheets("fenster").Cells(i + 6, 3) = .Cells(i, 3).Value 'usw.
Bestellung.Worksheets("fenster").Cells(i + 6, 4) = .Cells(i, 4).Value
Bestellung.Worksheets("fenster").Cells(i + 6, 5) = Split(.Cells(i, 5).Value, "x")(0) 'in Spalte E, der Teil vor dem "x"
Bestellung.Worksheets("fenster").Cells(i + 6, 6) = Split(.Cells(i, 5).Value, "x")(1) 'in Spalte E, der Teil nach dem "x"
Bestellung.Worksheets("fenster").Cells(i + 6, 8) = Cells(i, 9).Shapes

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige