Discussion:
Werte kopieren VBA
(zu alt für eine Antwort)
Peter Schuerer
2014-02-20 10:54:05 UTC
Permalink
Hallo Zusammen,

ich muss aus Tabelle27 nur sichtbare Zellen kopieren und in Tabelle26
einfügen.
In Tabelle27 wird der Bereich B6:U25 berechnet und alle Spalten (die in
Zeile 25 NULL enthalten) per Makro ausgeblendet.
Bisher hat alles funktioniert, jetzt nicht mehr.
Der Bereich B5:U5 wird richtig kopiert und eingefügt. Nach dem Wechsel
von Tabelle26 in Tabelle27 werden noch andere Makros ausgeführt.
Nach dem kopieren von B25:U25 wird der ganze Bereich in Tabelle26 eingefügt.

Sub Stillstand_kopieren3()
'

'
ActiveSheet.Unprotect
On Error Resume Next
Range("B5:U5").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Range("A3").Select
' ActiveSheet.Protect
[Tabelle26].Visible = xlSheetVisible
[Tabelle26].Activate
Range("E36").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=True, Transpose:=False
[Tabelle27].Select
Range("B25:U25").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Range("A3").Select
[Tabelle26].Activate
Range("E37").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=True, Transpose:=False
Range("E36").Activate
Range("C36").Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWorkbook.Names.Add Name:="Stillgepl_RubrikJahr",
RefersTo:="=" + Selection.Address
Range("C37").Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWorkbook.Names.Add Name:="Stillgepl_WerteJahr", RefersTo:="="
+ Selection.Address
ActiveSheet.Calculate

[Tabelle26].Visible = xlSheetHidden
End Sub

Wie kann ich den Blattwechsel vermeiden?

Danke und Gruß
Peter

---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com
Claus Busch
2014-02-20 11:10:01 UTC
Permalink
Hallo Peter,
Post by Peter Schuerer
ich muss aus Tabelle27 nur sichtbare Zellen kopieren und in Tabelle26
einfügen.
In Tabelle27 wird der Bereich B6:U25 berechnet und alle Spalten (die in
Zeile 25 NULL enthalten) per Makro ausgeblendet.
Bisher hat alles funktioniert, jetzt nicht mehr.
Der Bereich B5:U5 wird richtig kopiert und eingefügt. Nach dem Wechsel
von Tabelle26 in Tabelle27 werden noch andere Makros ausgeführt.
Nach dem kopieren von B25:U25 wird der ganze Bereich in Tabelle26 eingefügt.
Select, Selection und Activate ist kein guter Programmierstil. Außerdem
flackert dann ständig der Bildschirm.
Du brauchst zum Einfügen nicht auf das Blatt gehen, wenn richtig
referenziert wird.
Probiere mal zum Kopieren:

With Sheets("Tabelle27")
.Unprotect
.Range("B5:U5").SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle26").Range("E36").PasteSpecial _
Paste:=xlPasteValues
' ActiveSheet.Protect
.Range("B25:U25").SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle26").Range("E37").PasteSpecial _
Paste:=xlPasteValues
End With

Wenn das Einfügen von Daten in Tabelle26 Events auslöst, kannst du das
mit
Application.EnableEvents=FALSE vor dem Code abstellen.
Musst dies aber am Ende des Codes wieder auf TRUE stellen


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Peter Schuerer
2014-02-20 22:42:22 UTC
Permalink
Hallo Claus,
Post by Claus Busch
Select, Selection und Activate ist kein guter Programmierstil.
Weiß ich, aber ich bin Autodidakt und gebe mein Bestes ;-)
Post by Claus Busch
With Sheets("Tabelle27")
.Unprotect
.Range("B5:U5").SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle26").Range("E36").PasteSpecial _
Paste:=xlPasteValues
' ActiveSheet.Protect
.Range("B25:U25").SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle26").Range("E37").PasteSpecial _
Paste:=xlPasteValues
End With
Teste ich morgen, hoffe das es funktioniert.
Post by Claus Busch
Wenn das Einfügen von Daten in Tabelle26 Events auslöst, kannst du das
mit
Application.EnableEvents=FALSE vor dem Code abstellen.
Musst dies aber am Ende des Codes wieder auf TRUE stellen
Das Makro "Stillstand_kopieren3" ist ein eigenständiges Makro.
Kann ich hier bedenkenlos mit Application.EnableEvents= arbeiten oder
gibt es da vielleicht Probleme?

Sub Stillstand_kopieren3()

Application.EnableEvents=FALSE
ActiveSheet.Unprotect
' On Error Resume Next
Range("B5:U5").Select
...
...
...
Application.EnableEvents=TRUE
End Sub

Danke und Gruß
Peter

---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com
Claus Busch
2014-02-21 06:48:50 UTC
Permalink
Hallo Peter,
Post by Peter Schuerer
Das Makro "Stillstand_kopieren3" ist ein eigenständiges Makro.
Kann ich hier bedenkenlos mit Application.EnableEvents= arbeiten oder
gibt es da vielleicht Probleme?
du bekommst Probleme, wenn du in einen Fehler läufst und das Makro
stoppt. Dann wird EnableEvents nicht mehr eingeschaltet. Deshalb
verpackst du das am Besten in eine Fehlerroutine.
Außerdem musst du weder für das Kopieren noch für das Erstellen der
Bereichsnamen das Blatt26 sichtbar machen.
Probiere mal:

Sub Stillstand_kopieren3()
Dim myRng As Range
Dim LCol As Long

With Application
.ScreenUpdating = False
.EnableEvents = False
End With

On Error GoTo AUS
With Sheets("Tabelle27")
.Unprotect
.Range("B5:U5").SpecialCells(xlCellTypeVisible).Copy
' .Protect
Sheets("Tabelle26").Range("E36").PasteSpecial xlPasteValues
.Range("B25:U25").SpecialCells(xlCellTypeVisible).Copy
Sheets("Tabelle26").Range("E37").PasteSpecial Paste:=xlPasteValues
End With

With Sheets("Tabelle26")
LCol = .Cells(36, 3).End(xlToRight).Column
Set myRng = .Range(.Cells(36, 3), .Cells(36, LCol))
ActiveWorkbook.Names.Add Name:="Stillgepl_RubrikJahr", _
RefersTo:=myRng

LCol = .Cells(37, 3).End(xlToRight).Column
Set myRng = .Range(.Cells(37, 3), .Cells(37, LCol))
ActiveWorkbook.Names.Add Name:="Stillgepl_WerteJahr", _
RefersTo:=myRng
.Calculate
.Visible = xlSheetVeryHidden
End With
AUS:
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Peter Schuerer
2014-02-21 22:39:46 UTC
Permalink
Hallo Claus,
Post by Claus Busch
du bekommst Probleme, wenn du in einen Fehler läufst und das Makro
stoppt. Dann wird EnableEvents nicht mehr eingeschaltet. Deshalb
verpackst du das am Besten in eine Fehlerroutine.
Außerdem musst du weder für das Kopieren noch für das Erstellen der
Bereichsnamen das Blatt26 sichtbar machen.
Sub Stillstand_kopieren3()
Ich habe Dein Makro etwas angepasst und es funktioniert (wie immer)
einwandfrei.
Das mit EnableEvents und der Fehlerroutine ist eine große Hilfe.

Danke und Gruß
Peter


---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com
HR Ernst
2014-02-22 09:13:15 UTC
Permalink
Am Fri, 21 Feb 2014 23:39:46 +0100 schrieb Peter Schuerer:

[...]
Post by Peter Schuerer
---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com
Wenn du hier schreibst, ist das *keine* E-Mail. Du kannst dieses sinnfreie
Geschreibsel in Avast abstellen.
--
Gruß

H.-R. Ernst
Loading...