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

Makro nimmt falsches Blatt

Makro nimmt falsches Blatt
abu
Hallo Zusammen,
ich hab mir ein Makro geschrieben um eineige kopierarbeiten zu erleichtern. Unter anderem benutze ich diese 2 Zeilen:
ThisWorkbook.ActiveSheet.Range("S" & ActiveCell.Row).Copy
Worksheets("Non bonded").Range("C17").PasteSpecial Paste:=xlValues
Mein Problem ist nun das ich mehrer Arbeitsmappen geoeffnet habe die bis auf die Wochennummer alle gleich heissen und die Blaetter in den Arbeitsmappen heissen auch alle gleich. Leider uebrwirft Excel meine Daten und ich bekommen die falschen Daten kopiert.
Habt ihr vllt. eine Loesung wie ich meinen Code anpassen muss damit auch immer das richtige kopiert wird?
Gruss
abu
AW: Makro nimmt falsches Blatt
24.06.2010 15:33:32
Holger
Hallo,
ich würde Workbook definieren
und in der zweiten Zeile vor dem Worksheets WORKBOOKNAME.Worksheets.... setzen,
dann sollte es eigentlich eindeutig sein.
AW: Makro nimmt falsches Blatt
24.06.2010 15:49:47
abu
Hallo Holger,
komm da leider nicht so ganz mit.
Ich habe das Makro in einer Vorlage eingebaut und von Woche zu Woche wird diese Vorlage genommen und anders abgespeichert. Ich denke dann geht das nicht oder?
In der ersten Zeile arbeite ich ja mit ThisWorkbook aber er nimmt trotzdem die Daten von einer anderen geoeffneten Datei...
Hilfe!
Gruss
abu
AW: Makro nimmt falsches Blatt
24.06.2010 16:17:53
Rudi
Hallo,
In der ersten Zeile arbeite ich ja mit ThisWorkbook

du kopierst aus dem Workbook, in dem der Code steht in das gerade aktive Workbook.
Gruß
Rudi
Anzeige
AW: Makro nimmt falsches Blatt
24.06.2010 16:23:04
abu
Hallo Rudi,
das stimmt und soll auch so sein. Das Makro soll immer nur Daten von einem Sheet ins andere kopieren, wobei sich beide Blatter immer in der selben Mappe befinden.
Leider macht das Excel nicht. Wenn ich mehre Arbeitsmappen auf hab, dann mixt er die Daten und kopiert mir z.B. das Datum aus einer anderen Arbeitsmappe in die herein in der ich das Makro aktiviert hab.
Wie kann das sein?
Gruss
abu
AW: Makro nimmt falsches Blatt
24.06.2010 16:37:33
Rudi
Hallo,
du hast das nicht verstanden. Thisworkbook steht für das Workbook, das den Code enthält. Nicht das, aus dem der Code gestartet wird.
Wenn du innerhalb des Aktiven WB kopieren willst, dann so:
With ActiveWorkbook
.Range("S" & ActiveCell.Row).Copy
.Worksheets("Non bonded").Range("C17").PasteSpecial Paste:=xlValues
End With

Wobei das
  Range("S" & ActiveCell.Row).Copy
Worksheets("Non bonded").Range("C17").PasteSpecial Paste:=xlValues

eigentlich reichen sollte, da ohne Referenz immer das aktive Workbook/ Sheet genommen wird.
Gruß
Rudi
Anzeige
AW: Makro nimmt falsches Blatt
24.06.2010 16:46:40
abu
Hi Rudi,
du hast recht das wusste ich nicht. Trotzdem ist mir das immer noch nicht so ganz klar, denn die Arbeitsmappe woraus ich das Makro starte hat den Code. Der Code ist in allen Mappen drinne (kein Addin).
Nun denn, danke fuer deine Hilfe. Komme leider erst morgen wieder zum testen aber ich werde dir morgen Feedback geben.
Gruesse
abu
AW: Makro nimmt falsche Daten
25.06.2010 09:03:58
abu
Hallo Rudi,
habe jetzt beide Versionen die Du vorgeschlagen hast probiert und leider ist das Ergebnis immer noch das selbe. Hier noch mal eine kurze Erklaerung und der urspruenglich Code, vllt. hilft es mir zu helfen.
Alle Mappen haben den Code.
Code wir gestarten mit Buttons.
Wenn ich z.B. den Code in Mappe A starte, ist alles in Orsdnung
Wenn ich aber jetzt Mappe B aufmache und den Code starte, dann bekomm ich die Daten von Mappe A kopiert.
Warum nur? Hier der Code:
Private Sub Bonded()
Dim outObj As Object
Dim Mail As Object
Dim oilref As String
Dim dateref As String
Dim receiver As String
oilref = ThisWorkbook.ActiveSheet.Range("F" & ActiveCell.Row).Value
dateref = ThisWorkbook.ActiveSheet.Range("B" & ActiveCell.Row).Value
receiver = ThisWorkbook.ActiveSheet.Range("R" & ActiveCell.Row).Value
'Copy reference
ThisWorkbook.ActiveSheet.Range("F" & ActiveCell.Row).Copy
Worksheets("Bonded").Range("C16").PasteSpecial Paste:=xlValues
'Copy Customer
ThisWorkbook.ActiveSheet.Range("S" & ActiveCell.Row).Copy
Worksheets("Bonded").Range("C17").PasteSpecial Paste:=xlValues
'Copy date
ThisWorkbook.ActiveSheet.Range("B" & ActiveCell.Row).Copy
Worksheets("Bonded").Range("C19").PasteSpecial Paste:=xlValues
'Copy time
ThisWorkbook.ActiveSheet.Range("C" & ActiveCell.Row).Copy
Worksheets("Bonded").Range("C20").PasteSpecial Paste:=xlValues
ActiveWorkbook.Worksheets("Bonded").Copy
ActiveWorkbook.SaveAs "H:\Templates\Pick up instructions  for order " & oilref & " at " &  _
dateref & ".xls"
ActiveWorkbook.Close
Application.DisplayAlerts = True
Set outObj = CreateObject("Outlook.Application")
Set Mail = outObj.CreateItem(0)
With Mail
.Subject = "Pick up instructions  for order " & oilref & " at " & dateref
.Body = "Hello,"
.SentOnBehalfOfName = "gfdgsdf"
.To = receiver
.cc = "sdfghsdfh"
.Attachments.Add "H:\Templates\Pick up instructions for order " & oilref & " at " & dateref  _
& ".xls"
End With
Mail.Display
Set Mail = Nothing
Set outObj = Nothing
Kill "H:\Templates\Pick up instructions for order " & oilref & " at " & dateref & ".xls"
End Sub
Gruesse
abu
Anzeige
AW: Makro nimmt falsche Daten
25.06.2010 12:41:10
Rudi
Hallo,
Code wir gestarten mit Buttons.

Was für Buttons? Aus Formular? Dann mach mal nen Rechtsklick drauf und schau nach, welches Makro zugewiesen ist.
Gruß
Rudi
AW: Makro nimmt falsche Daten
25.06.2010 13:36:30
abu
Hallo Rudi,
nein die Buttons werden auch per Code erstellt:
Private Sub Workbook_Open()
Dim CB As CommandBar
Dim CBC As CommandBarButton
Dim i As Integer
On Error Resume Next
Set CB = Application.CommandBars.Add(Name:="Sheet1", temporary:=True, Position:=msoBarTop)
If Err.Number  0 Then
Application.CommandBars.Add(Name:="Sheet1").Visible = True
'CB.Left = 300
'CB.Top = 250
Exit Sub
End If
On Error GoTo 0
If Application.CommandBars("Sheet1").Visible = False Then
CB.Visible = True
CB.Top = 5
For i = 1 To 4
Set CBC = CB.Controls.Add(Type:=msoControlButton)
With CBC
.Height = 2
.Width = 50
.Style = msoButtonIconAndCaption
.Style = msoButtonWrapCaption
Select Case i
Case 1
.Caption = "Doc"
.Height = 2
.Width = 50
.OnAction = "Doc"
.TooltipText = "Push the Button and it will print out the 'Doc  for Driver page' _
for that order wich cell is aktivated (any cell)"
Case 2
.Caption = "Verklaring!"
.Height = 2
.Width = 50
.OnAction = "Fenex"
.TooltipText = "Push the Button and it will print out the 'Verklaring' for that  _
order wich cell is aktivated (any cell)"
Case 3
.Caption = "non bonded"
.Height = 2
.Width = 70
.OnAction = "Nonbonded"
.TooltipText = "Push the Button and it will create the pre-alert mail for not  _
bonded shipments for that order wich cell is aktivated (any cell)"
Case 4
.Caption = "Bonded"
.Height = 2
.Width = 70
.OnAction = "Bonded"
.TooltipText = "Push the Button and it will create the pre-alert mail for  _
bonded shipments for that order wich cell is aktivated (any cell)"
End Select
End With
Next i
End If
End Sub

Hilft es vllt wenn ich Dir mal die Datei schicke?
Gruss
abu
Anzeige
da hamma doch schon wat
25.06.2010 14:21:04
Rudi
Hallo,
On Error Resume Next
Set CB = Application.CommandBars.Add(Name:="Sheet1", temporary:=True, Position:=msoBarTop)
If Err.Number  0 Then

wird ja auch gestartet, wenn Mappe2 geöffnet wird. Die CB existiert aber bereits, also steigt der Code aus.
Die OnAction-Eigenschaft der Buttons verweist weiter auf die Prozeduren der zuerst geöffneten Mappe.
Ergo wird bei Thisworkbook.activesheet.Range(...).Copy aus der ersten Mappe (dort befindet sich ja der Code) in die aktive (2.) Mappe kopiert.
Du musst also erst die alte Commandbar löschen und eine neue erstellen. Am besten nicht per Open sondern per Activate-Prozedur.
Private Sub Workbook_Activate()
Dim CB As CommandBar
Dim CBC As CommandBarButton
Dim i As Integer
On Error Resume Next
Application.CommandBars("Sheet1").Delete
On Error GoTo 0
Set CB = Application.CommandBars.Add(Name:="Sheet1", temporary:=True, Position:=msoBarTop)
'Rest des Codes
End Sub

Gruß
Rudi
Anzeige
rumgehopse aber es klappt
25.06.2010 15:44:21
abu
Hallo Rudi,
gigantisch, das wars. Jetzt hab ich zwar immer diese rumgehopse wenn ich zwischen den einzelnen Blaetter wechsle aber es klappt und das ist das wichtigste...
Vielen Dank fuer deine Hilfe und Geduld.
Schoenes W.e.
Gruss
abu

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige