Anzeige
Archiv - Navigation
1908to1912
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

Einfügen von Zellbezügen VBA

Einfügen von Zellbezügen VBA
24.11.2022 11:42:31
Zellbezügen
Hallo zusammen,
ich habe eine Aufgabenstellung, bei der ich mit meinen bescheidenen VBA Kenntnissen mal wieder nicht weiter komme. Ich brauche hier mal eure Hilfe. :)
Ich habe folgendes Makro:

Private Sub Auftr_kop_M1_Click()
ActiveSheet.Unprotect "suse"
Dim wZ As Worksheet
Dim LR
Dim Maschine As Range
Dim Merker As Range
ThisWorkbook.Activate
With Worksheets("Aufträge").ListObjects("Aufträge1")
For Each LR In .ListRows
Set LR = LR.Range.EntireRow
If Not LR.Hidden Then
Set Maschine = Intersect(LR, .ListColumns("Spalte19").Range)
Set Merker = Intersect(LR, .ListColumns("Spalte22").Range)
Set Artikel = Intersect(LR, .ListColumns("Spalte3").Range)
Set Beschreibung = Intersect(LR, .ListColumns("Spalte4").Range)
Set Menge = Intersect(LR, .ListColumns("Spalte6").Range)
Set Fertigungszeit = Intersect(LR, .ListColumns("Spalte10").Range)
Set Entgratzeit = Intersect(LR, .ListColumns("Spalte13").Range)
Set Meilenstein = Intersect(LR, .ListColumns("Spalte14").Range)
Set Beschichtung = Intersect(LR, .ListColumns("Spalte18").Range)
If Merker.Value = "" And Maschine.Value  "" And Artikel.Value  "" And Beschreibung.Value  "" And Menge.Value  "" And Meilenstein.Value  "" And Beschichtung.Value  "" And Fertigungszeit.Value  "" And Entgratzeit.Value  "" Then
Set wZ = SelectOrCreate(Maschine.Value)
Set Z = wZ.Range("D99999").End(xlUp)
If Z = "" Then Set Z = Z.End(xlUp).Offset(1) Else Set Z = Z.Offset(1)
Set Z = Z.EntireRow
If IsEmpty(LR.Range("B1")) = True Then
Z.Range("D1:H1") = LR.Range("C1:G1").Value
Z.Range("K1") = LR.Range("J1").Value
Z.Range("O1") = LR.Range("N1").Value
Z.Range("Q1:S1") = LR.Range("P1:R1").Value      //hier benötige ich eine Änderung
Merker.Value = "ü"
Merker.Font.Name = "Wingdings"
Else
Z.Range("C1") = LR.Range("B1").Hyperlinks(1).Address
Z.Range("D1:H1") = LR.Range("C1:G1").Value
Z.Range("K1") = LR.Range("J1").Value
Z.Range("O1") = LR.Range("N1").Value
Z.Range("Q1:S1") = LR.Range("P1:R1").Value
Merker.Value = "ü"
Merker.Font.Name = "Wingdings"
End If
End If
End If
Next
End With
Private Function SelectOrCreate(ByVal Blattname As String) As Worksheet
Dim W As Worksheet
On Error Resume Next
Set W = Worksheets(Blattname)
If W Is Nothing Then
Set W = Worksheets("Vorlage").Copy(After:=Worksheets(Worksheets.Count))
W.Name = Blattname
End If
Set SelectOrCreate = W
End Function
An der kommentierten Stelle würde ich

Z.Range("Q1:S1") = LR.Range("P1:R1").Value
splitten in

 Z.Range("Q1") = LR.Range("P1"). Value
Z.Range("R1") = LR.Range("Q1"). Value      //hier benötige ich beim einfügen nicht den Wert in der Zielzelle, sondern einen Zellbezug
Z.Range("S1") = LR.Range("R1"). Value
Hier wiederum ist nun kommentiert, wo ich eine Änderung des Codes benötige. Beim einfügen soll an der jetzt kommentierten Stelle nicht der Wert eingefügt werden, sondern eine Zell-Verknüpfung (Zellbezug?)-Formel á la

=Aufträge!Q132
eingefügt werden. Wie muss ich den Code anpassen, damit in dieser Spalte immer Bezug zur Quelle bleibt?
Vielen Dank schon mal für eure Mithilfe, Zeit und Mühe!
Gruß,
Steve

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einfügen von Zellbezügen VBA
24.11.2022 12:05:49
Zellbezügen
Hi
Z.Range("Q1"). Formula = "=" & LR.Name & "!P1"
Gruß Daniel
AW: Einfügen von Zellbezügen VBA
24.11.2022 14:24:30
Zellbezügen
Hallo Daniel,
danke für deine Antwort. Ich bekomme so allerdings den "Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler"
Gruß,
Steve
AW: Einfügen von Zellbezügen VBA
24.11.2022 15:48:03
Zellbezügen
kann ich nicht nachvollziehen.
ggf brauchst du noch die Hochkommas vor und nach dem Tabellenblattnamen, wenn der Blattname Leer- oder Sonderzeichen enthält.
die fügt Excel hier nicht automatisch ein.
Gruß Daniel
AW: Einfügen von Zellbezügen VBA
24.11.2022 16:39:51
Zellbezügen
Hallo Daniel,
es ist tatsächlich so, dass die verschiedenen Tabellenblätter in die je nachdem, welchen Wert wZ annimmt eingefügt wird, auch Leerzeichen enthalten.
Mit dem Code

                Z.Range("Q1").Formula = "=" & "LR.Name" & "!P1"
kommt jetzt auch keine Fehlermeldung mehr, allerdings steht jetzt für jeden Datensatz, der eingefügt wird in der richtigen Zelle

=LR.Name!P1
das heißt für mich ich muss aus "LR.Name" fest deklariert "Aufträge" machen, denn das ist das Tabellenblatt auf den der Bezug in jedem Fall zeigen muss. P1 müsste zu Q werden, aber eben nicht 1, sondern variabel, mit der Zeile aus dem der Datensatz stammt. Das ganze dann aber unabhängig von .ListObjects("Aufträge1"). Oder dann die Zeilennummer innerhalb der als Tabelle formatierten Liste +16..
Ist das irgendwie verständlich? Meine Datei ist wirklich ziemlich umfangreich und ich tue mir gerade schwer ein Beispiel hochzuladen.
Gruß,
Steve
Anzeige
AW: Einfügen von Zellbezügen VBA
24.11.2022 16:47:29
Zellbezügen
P.S. Kommasetzung ist mir gerade völlig misslungen, sorry.
AW: Einfügen von Zellbezügen VBA
24.11.2022 18:04:52
Zellbezügen
Hi,
gemeint war von Daniel die Excel-Schreibweise der einfachen Hochkommata bei einem Bezug auf ein Tabellenblatt, nicht die Anführungszeichen:

Z.Range("Q1").Formula = "=" & "'" & LR.Name &  "'" & "!P1"
Sonst wird Deine Variable LR.Name einfach als Text eingefügt und nicht deren Inhalt.
VG, Helmut.
AW: Einfügen von Zellbezügen VBA
24.11.2022 19:52:42
Zellbezügen
Hallo Helmut,
danke für deine Klarstellung, das verstehe ich jetzt und probiere das morgen gleich mal aus. Jetzt bleibt für mich nur noch die Frage offen, wie das mit der Variablen Zeile funktioniert. Ich brauche an der Stelle die Zeilennummer, aus der kopiert wird.
Vielen Dank euch beiden schonmal bis hierher.
Gruß,
Steve
Anzeige
AW: Einfügen von Zellbezügen VBA
24.11.2022 21:01:52
Zellbezügen
Schau dir mal die Formeln in der alternativen .FormulaR1C1- Schreibweise an
Das geht auch direkt in Excel, wenn du auf Z1S1-Bezugsart wechselständig.
Mit dieser Bezugsart gibt man bei relativen Zellbezügen der Versatzwert an, so dass die Formel für alle Zellen gleich ist und nicht angepasst werden muss.
AW: Einfügen von Zellbezügen VBA
25.11.2022 08:29:09
Zellbezügen
Guten Morgen Daniel,
ich denke dass ich mit dieser Bezugsart hier auch nicht weiterkomme. Zum Verständnis: Ich kopiere hier aus einem Auftragsblatt, in dem fortlaufend Fertigungsaufträge erfasst werden in 6 verschiedene Produktionspläne für Maschinen. Die Tabelle hierzu startet in allen Registern bei (Blatt-)Zeile 17 (Tabellenkopf Zeile 15 & 16). Der erste Datensatz wird also von Zeile 17 in Zeile 17 kopiert. Wenn der 2te Auftrag allerdings in einen anderen Plan kopiert wird wird schon hier von Zeile 18 in Zeile 17 kopiert. Der dritte Auftrag meinetwegen wieder in einen anderen Plan, dann wird von Zeile 19 in Zeile 17 kopiert. Ist also völlig variabel. Es soll eben in dieser Zelle, um die es mir hier geht auch nach dem kopieren möglich sein im Auftrag nochmal zu ändern und dann im Plan die Änderung so angezeigt werden. Deshalb muss die Zeile irgendwie variabel in die Formel für den Bezug übergeben werden. (Oder?)
Wenn das mit deinem Ansatz funktioniert, verstehe ich leider gerade nicht, wie ich das umsetzen soll.
Danke nochmal für jede weitere Hilfe, es ist ja denke ich schon fast gelöst.
Gruß,
Steve
Anzeige
AW: Einfügen von Zellbezügen VBA
25.11.2022 10:34:35
Zellbezügen
Hallo nochmal alle zusammen,
mit ein wenig rumprobieren steht nun in den Zielzellen mein gewünschter Bezug zum Quellblatt mit folgendem Code:

Z.Range("Q1").Formula = "=" & "'" & "Aufträge" & "'" & "!Q" & LR.Range("AA1").Value
Ich habe hierzu in der Spalte AA im Quellblatt die Formel =ZEILE() für alle Zeilen eingefügt.
Jetzt habe ich ein weiteres Problem: In den Zielblättern steht jetzt richtigerweise z.B.

='Aufträge'!Q17
in der Zelle.
Jedoch steht der Text starr als Text in der Zelle und die Formel wird nicht berechnet und somit der gewünschte Wert nicht ausgegeben.
Woran könnte das denn jetzt liegen?
Vielen Dank für Eure Unterstützung.
Gruß,
Steve
Anzeige
AW: Einfügen von Zellbezügen VBA
25.11.2022 10:53:23
Zellbezügen
Schon wieder ich,
es lag am Textformat der Zelle, somit ist mein Problem gelöst.
Vielen Dank!
Gruß,
Steve
AW: Einfügen von Zellbezügen VBA
25.11.2022 10:11:08
Zellbezügen
Hallo Helmut,

Z.Range("Q1").Formula = "=" & "'" & LR.Name &  "'" & "!P1"
Ich habe auch das jetzt mal ausprobiert, leider bekomme ich auch hier den Fehler "1004".
Gruß,
Steve

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige