Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
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
Blatt aktivieren funktioniert nicht (VBA)
Martin
Guten Tag
Ich habe eine Workbook mit einem Blatt auf dem ein CommandButton steht, der das Makro auslöst.
Im Makro will ich auf ein anderes Blatt "Liste" zugreifen.
Ich aktiviere dieses mit .Activate
Die Befehle darunter werden jedoch nicht auf dem aktivierten Blatt "Liste" ausgeführt, sondern auf dem Blatt wo der CommandButton sitzt.
Muss ich bei allen Schritten (Range, Columns etc.) jetzt immer eine Liste.Range/Liste.Columns voransetzen (will ich eigentlich nicht, darum ja das .Activate)?
Ich weiss nicht mehr weiter
Besten Dank im voraus.
Martin
(PS: Das Makro beinhaltet viele weitere Linien, doch um die unten stehenden geht es, die sind alle nacheinander ausser dem Set, welches weiter oben ist)
Set Liste = activeworkbook.Worksheets("OP Liste")
Liste.Activate
Range("1:3").Delete shift:=xlUp
Columns("H:I").Replace What:="'", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("I:I").Cut Columns("E:E").Activate
Columns("H:H").Delete shift:=xlToLeft
Columns("A:B").Insert shift:=xlToRight

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Blatt aktivieren funktioniert nicht (VBA)
13.04.2011 13:38:19
Rudi
Hallo,
das: Columns("I:I").Cut Columns("E:E").Activate verstehe ich nicht
Aber mal vom Prinzip her:
  Set Liste = ActiveWorkbook.Worksheets("OP Liste")
With Liste
.Range("1:3").Delete Shift:=xlUp
.Columns("H:I").Replace What:="'", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Columns("I:I").Cut
.Columns("H:H").Delete Shift:=xlToLeft
.Columns("A:B").Insert Shift:=xlToRight
End With

Generell soltest du Select und Activate vermeiden.
Gruß
Rudi
AW: Blatt aktivieren funktioniert nicht (VBA)
13.04.2011 13:47:18
Martin
Hoi Rudi
Besten Dank für Deine Antwort. (das: Columns("I:I").Cut Columns("E:E").Activate verstehe ich nicht Das war ein Fehler beim reinkopieren ins Forum, die Column I sollte ausgeschnitten werden und in die Column E eingefügt werden)
Ich habe auch schon ans With Liste gedacht, das Problem ist/wäre, dass der Code noch viel weitergeht (siehe unten). Da ich mit Liste.Activate das korrekte Blatt aktiviere, wieso wird der Code dann auf dem Blatt mit Makro ausgeführt? Das schnall ich echt nicht.
Habe immer gedacht, man soll das Select vermeiden indem man Activate benutzt. Ist das auch falsch?
Vielen Dank nochmals
Liste.Activate
Range("1:3").Delete shift:=xlUp
Liste.Columns("H:I").Replace What:="'", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("I:I").Cut Columns("E:E")
Columns("H:H").Delete shift:=xlToLeft
Columns("A:B").Insert shift:=xlToRight
' LV-Nummer extrahieren
Columns("B:B") = Columns("H:H").Value
With Columns("B:B")
.Replace What:="LV ", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="No ", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="/", Replacement:=" ", _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
.Replace What:=",", Replacement:=" ", _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
.Replace What:="-", Replacement:=" ", _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
End With
Application.CutCopyMode = False
Rows("1:1").Font.Bold = True
With Range("A1:P1").Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
Range("A2").FormulaR1C1 = "=IF(ISERROR(LEFT(RC[1],10)*1),IF(ISERROR(LEFT(RC[1],10)*1),left(RC[2],7)*1,""xxx""),LEFT(RC[1],10)*1)"
lezeile = Cells(Rows.Count, 2).End(xlUp).Row
Range("A2").AutoFill Destination:=Range("A2:A" & lezeile)
With Columns("A:A")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Application.CutCopyMode = False
.
.
.
.
Anzeige
AW: Blatt aktivieren funktioniert nicht (VBA)
13.04.2011 14:03:22
Rudi
Hallo,
With kann man auch ineinander schachteln.
  With Liste
.Range("1:3").Delete shift:=xlUp
.Columns("H:I").Replace What:="'", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Columns("I:I").Cut .Columns("E:E")
.Columns("H:H").Delete shift:=xlToLeft
.Columns("A:B").Insert shift:=xlToRight
' LV-Nummer extrahieren
.Columns("B:B") = Columns("H:H").Value
With .Columns("B:B")
.Replace What:="LV ", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="No ", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Replace What:="/", Replacement:=" ", _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
.Replace What:=",", Replacement:=" ", _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
.Replace What:="-", Replacement:=" ", _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
End With
Application.CutCopyMode = False
.Rows("1:1").Font.Bold = True
With .Range("A1:P1").Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
.Range("A2").FormulaR1C1 = _
"=IF(ISERROR(LEFT(RC[1],10)*1),IF(ISERROR(LEFT(RC[1],10)*1),left(RC[2],7)*1,""xxx""),LEFT( _
RC[1],10)*1)"
lezeile = .Cells(Rows.Count, 2).End(xlUp).Row
.Range("A2").AutoFill Destination:=Range("A2:A" & lezeile)
With .Columns("A:A")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
End With
Application.CutCopyMode = False
Habe immer gedacht, man soll das Select vermeiden indem man Activate benutzt. Ist das auch falsch?

Das heißt, den Teufel mit Beelzebub austreiben.
Beides ist zu 99% überflüssig. Außerdem läuft der Code schneller.
Gruß
Rudi
Anzeige
AW: Blatt aktivieren funktioniert nicht (VBA)
13.04.2011 13:40:15
Hajo_Zi
Hallo Martin,
versuchs So
Option Explicit
Sub Martin()
With ActiveWorkbook.Worksheets("OP Liste")
'With ActiveSheet
.Range("1:3").Delete shift:=xlUp
.Columns("H:I").Replace What:="'", Replacement:="", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
.Columns("I:I").Cut .Columns("E:E")
.Columns("H:H").Delete shift:=xlToLeft
.Columns("A:B").Insert shift:=xlToRight
End With
End Sub

AW: Blatt aktivieren funktioniert nicht (VBA)
13.04.2011 15:04:07
Martin
Hallo Hajo
Besten Dank für die Antwort. Ich werde versuchen, die With einzubauen....
Martin
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige