Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
736to740
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
736to740
736to740
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Problem

VBA Problem
27.02.2006 08:54:54
Stefan
Hallo,
ich habe folgendes Makro, dass mir nach Auswahl gewünschter Spalten auf einem Tabellenblatt diese in ein separates übernommen werden. Allerdings werden immer nur die werte übernommen. wie kann ich das Makro dahingehend umbauen, dass mir neben den Werten auch Formeln und Formate übernommen werden?
Hier der Quell-Code:
Option Explicit

Sub BenutzerAuswählen()
Generieren 0, True
End 

Sub

Sub Generieren(intEmpfänger As Integer, bolAuswahlZeigen As Boolean)
Dim strZelle As String
Dim intLänge As Integer
Dim strReports As String
Dim intAuswahl As Integer
If bolAuswahlZeigen Then
DialogSheets("Choose_Benutzer").Show
intEmpfänger = DialogSheets("Choose_Benutzer").ListBoxes("Liste").ListIndex
End If
Application.ScreenUpdating = False
Application.Calculation = xlManual
If intEmpfänger Then
Dim i%
Dim Spalte_Ziel%
Dim Spalte_Quell%
Dim Spalte_Hier%
Spalte_Quell = 2
Spalte_Ziel = 2
Spalte_Hier = 2
Sheets("Ziel").Range("B2:IV10000").ClearContents
Do
Spalte_Hier = 2
Do
If Sheets("Hier").Cells(2, Spalte_Hier) = Sheets("Quell").Cells(intEmpfänger + 1, Spalte_Quell) Then
For i = 2 To 5 'hier kannst du die Anzahl der Zeilen festlegen, die ein Jahresdatensatz hat
Sheets("Ziel").Cells(i, Spalte_Ziel) = Sheets("Hier").Cells(i, Spalte_Hier)
Next i
Spalte_Ziel = Spalte_Ziel + 1
Exit Do
End If
Spalte_Hier = Spalte_Hier + 1
Loop Until Sheets("Hier").Cells(2, Spalte_Hier) = "" 'hier wird das Jahr in deiner Liste "Hier" gesucht bis nach rechts nichts mehr steht.
Spalte_Quell = Spalte_Quell + 1
Loop Until Sheets("Quell").Cells(intEmpfänger + 1, Spalte_Quell) = "" 'hier wird solange durchgearbeitet bis in deiner Benutzertabelle keine Jahre rechts rüber mehr auftauchen
End If
Application.Calculation = xlAutomatic
End Sub

Dazu die entsprechende Datei: https://www.herber.de/bbs/user/31422.xls
Gruß Stefan

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Problem
27.02.2006 09:22:15
Uwe
Hallo Stefan,
'bisher
For i = 2 To 5 'hier kannst du die Anzahl der Zeilen festlegen, die ein Jahresdatensatz hat
Sheets("Ziel").Cells(i, Spalte_Ziel) = Sheets("Hier").Cells(i, Spalte_Hier)
Next i
'neu
For i = 2 To 5 'hier kannst du die Anzahl der Zeilen festlegen, die ein Jahresdatensatz hat
Sheets("Hier").Cells(i, Spalte_Hier).Copy Sheets("Ziel").Cells(i, Spalte_Ziel)
Next i
Gruß Uwe
AW: VBA Problem
27.02.2006 09:46:09
Stefan
Hi Uwe,
das passt soweit. Allerdings zerschiest er mir die formeln, wenn ich spalte d kopiere und bsp. in c einfüge. wie kann ich per makro die bezüge fixieren, die zuvor noch nicht fixiert sind.
soll heissen: zelle aus der zu kopierenden spalte beinhaltet den bezug Tabelle1!G10.
Füge ich diese auf der Zieltabelle in Spalte D ein wird daraus Tabelle1!D10 und das Ergebnis passt nicht mehr. Welchen befehl muss ich einsetzen, um im prinzip durch das makro Tabelle!$G10 zu erhalten?
Gruß Stefan
Anzeige
AW: VBA Problem
27.02.2006 10:53:14
Uwe
Hallo Stefan,
dann vielleicht so:

For i = 2 To 5 'hier kannst du die Anzahl der Zeilen festlegen, die ein Jahresdatensatz hat
With Sheets("Hier").Cells(i, Spalte_Hier)
.Copy Sheets("Ziel").Cells(i, Spalte_Ziel)
If .HasFormula Then
Sheets("Ziel").Cells(i, Spalte_Ziel).Formula = .Formula
End If
End With
Next i
Gruß Uwe
AW: VBA Problem
27.02.2006 11:07:56
Stefan
Hi Uwe,
das funktioniert leider nicht, da ich in der Zeile:
With Sheets("Hier").Cells(i, Spalte_Hier)
.Copy Sheets("Ziel").Cells(i, Spalte_Ziel)
eine Fehlermeldung bekomme die besagt, dass ein Anweisungsende erwartet wird!
was passt da noch nicht?
Anzeige
AW: VBA Problem
27.02.2006 11:19:56
Uwe
Hallo Stefan,
keine Ahnung, bei mir läuft das durch.
Gruß Uwe
AW: VBA Problem
27.02.2006 11:30:33
Stefan
Hi Uwe,
mein code sieht dann so aus:

Sub BenutzerAuswählen()
Generieren 0, True
End

Sub

Sub Generieren(intEmpfänger As Integer, bolAuswahlZeigen As Boolean)
Dim strZelle As String
Dim intLänge As Integer
Dim strReports As String
Dim intAuswahl As Integer
If bolAuswahlZeigen Then
DialogSheets("Choose_Benutzer").Show
intEmpfänger = DialogSheets("Choose_Benutzer").ListBoxes("Liste").ListIndex
End If
Application.ScreenUpdating = False
Application.Calculation = xlManual
If intEmpfänger Then
Dim i%
Dim Spalte_Ziel%
Dim Spalte_Quell%
Dim Spalte_Hier%
Spalte_Quell = 2
Spalte_Ziel = 2
Spalte_Hier = 2
Sheets("Ziel").Range("B2:IV10000").ClearContents
Do
Spalte_Hier = 2
Do
If Sheets("Hier").Cells(2, Spalte_Hier) = Sheets("Quell").Cells(intEmpfänger + 1, Spalte_Quell) Then
For i = 2 To 5 'hier kannst du die Anzahl der Zeilen festlegen, die ein Jahresdatensatz hat
With Sheets("Hier").Cells(i, Spalte_Hier)
.Copy Sheets("Ziel").Cells(i, Spalte_Ziel)  ’FEHLERMELDUNG
If .HasFormula Then
Sheets("Ziel").Cells(i, Spalte_Ziel).Formula = .Formula
End If
End With
Next i
Spalte_Ziel = Spalte_Ziel + 1
Exit Do
End If
Spalte_Hier = Spalte_Hier + 1
Loop Until Sheets("Hier").Cells(2, Spalte_Hier) = "" 'hier wird das Jahr in deiner Liste "Hier" gesucht bis nach rechts nichts mehr steht.
Spalte_Quell = Spalte_Quell + 1
Loop Until Sheets("Quell").Cells(intEmpfänger + 1, Spalte_Quell) = "" 'hier wird solange durchgearbeitet bis in deiner Benutzertabelle keine Jahre rechts rüber mehr auftauchen
End If
Application.Calculation = xlAutomatic
End Sub

Beim 2. SHEET in der With anweisung erhalte ich die fehlermeldung.
muss ich da drumherum noch etwas anpassen?
Anzeige
AW: VBA Problem
27.02.2006 12:08:54
Uwe
hallo Stefan,
Du solltest die Zeile
Sub
löschen!
Gruß Uwe
AW: VBA Problem
27.02.2006 12:59:35
Stefan
Hallo,
jetzt läuft das programm durch.
es werden zwar die formeln kopiert, allerdings verschiebt sich die spalte mit, da diese nicht mit $ fixiert wird. wie kann ich das ermöglichen?
bzw. könnte ich auch in ZIEL ein Bezug auf HIER hineinstellen? so würde ich mir die formelkopiererei ersparen und der Bezug übernimmt die Werte aus HIER.
Allerdings habe ich ehrlich gesagt keine Ahnung, wie ich das machen soll?!?
mit den besten grüßen
Stefan
AW: VBA Problem
27.02.2006 13:49:44
Uwe
Hallo Stefan,
ich kann das Problem nicht nachvollziehen.
Bei mir verschiebt es die Bezüge nicht.
Dafür ist ja der Codeabschnitt
    If .HasFormula Then
Sheets("Ziel").Cells(i, Spalte_Ziel).Formula = .Formula
End If
um eine Verschiebung zu verhindern.
Gruß Uwe
Anzeige
AW: VBA Problem
27.02.2006 14:15:41
Stefan
ja, bei den summenformeln passt das auch.
nur habe ich die datei mittlerweile dahingehend erweitert, dass ich in HIER die Daten mehrerer Tabelen konsolidieren kann. Diese Tabellen sindgenauso aufgebaut wie HIER.
Soll heissen, dass wenn ich in Spalte D, Zelle D3 auf HIER im Umsatz die Bezüge =Tabelle1!D3+Tabelle2!D3 stehen habe und diese Spalte mit dem Makro in spalte C auf ZIEL einfüge, zerschiesst es mir die bezüge. Dann bezieht er sich nämlich auf 2003 und nicht mehr auf 2004.
Verstehst du was ich meine?
Gruß Stefan
AW: VBA Problem
27.02.2006 15:38:33
Uwe
Hallo Stefan,
nö, so verstehe ich das nicht!
In Hier!D3 steht =Tabelle1!D3+Tabelle2!D3
Und was steht nun in der Zielzelle?
Und was sollte eigentlich drinstehen?
Gruß Uwe
Anzeige
AW: VBA Problem
28.02.2006 18:26:14
Stefan
Hallo Uwe,
das Problem ist folgedes: Beim kopieren werden zwar die Bezüge richtig übernommen, allerdings bleiben die Summenformeln auf den vorherigen Zellen "stehen".
Hier nochmal die erweiterte Datei: https://www.herber.de/bbs/user/31515.xls
Gruß Stefan
AW: VBA Problem
28.02.2006 22:07:37
Uwe
Hallo Stefan,
ich habe jetzt Deinen Vorschlag, die Bezüge auf Hier zu verwenden, umgesetzt.
    Worksheets("Ziel").Activate 'ist erforderlich, weil gleich Verknüpfungen eingefügt werden sollen
For i = 2 To 5 'hier kannst du die Anzahl der Zeilen festlegen, die ein Jahresdatensatz hat
Sheets("Hier").Cells(i, Spalte_Hier).Copy
With Worksheets("Ziel")
.Cells(i, Spalte_Ziel).Select 'erforderlich für .Paste Link:=True
.Paste 'fügt erst einmal komplett alles ein
.Paste Link:=True 'ersetzt die Einträge durch entsprechende Links(Verweise) auf die Hier-Zelle
End With
Next i
Gruß Uwe
https://www.herber.de/bbs/user/31518.xls
Anzeige
AW: VBA Problem
02.03.2006 18:56:06
Stefan
Ich habe heute einen neuen Post zu der Datei gemacht, da es sich um ein neues problem handelt.
gruß Stefan
AW: VBA Problem in neuem Thread
02.03.2006 21:15:34
offener

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige