Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

max. Werte (Formatierung) in VBA

max. Werte (Formatierung) in VBA
28.09.2016 11:46:52
Fred
Hallo VBA Experten,
ich nutze ein vba, um Werte in einer ausgeblendeten Spalte anzuzeigen.
Der Code:

Sub Einblick1()
'Spalte K aus Tabelle2 wird gelöscht, zurück zu Tabelle1
Sheets("Tabelle2").Select
Columns("K:K").Select
Selection.Delete Shift:=xlToLeft
Sheets("Tabelle1").Select
'Bereich in Spalte K wird kopiert und in Tabelle2 Zelle K4 eingefügt
Range("K4:K10").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("K4").Select
ActiveSheet.Paste
'Bereich in Tabelle2 wird als bmp kopiert und in Tabelle1 eingefügt
Worksheets("Tabelle2").Range("K4:K10").CopyPicture _
Appearance:=xlScreen, Format:=xlBitmap
With Worksheets("Tabelle1")
.Paste Destination:=.Range("B2")
End With
Sheets("Tabelle1").Select
End Sub

Meine Frage:
Ist der Code so OK oder läßt sich die ein oder andere Anweisung (in Hinsicht auf den Code-Umfang) optimieren?
und noch ne Frage:
Kann die Ermittlung und Formatierung des Max. Wert auch in diesem VBA vorgenommen werden,- anstatt im Arbeitsblatt?
anbei;
ein einfach gehaltenes Arbeitsblatt
https://www.herber.de/bbs/user/108478.xlsm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: max. Werte (Formatierung) in VBA
28.09.2016 12:48:54
ChrisL
Hi Fred
Recherchiere mal "Excel auf Select und Activate verzichten" ;)
Ausserdem löscht dein Löschen-Makro auch die Buttons. Und wenn mehrmals Einblick1 betätigt wird, hast du mehrere Bilder übereinander.
Sub Einblick1()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim rng As Range, rBereich As Range
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
With WS2
'Spalte K aus Tabelle2 wird gelöscht, zurück zu Tabelle1
.Columns("K:K").Delete Shift:=xlToLeft
'Bereich in Spalte K wird kopiert und in Tabelle2 Zelle K4 eingefügt
WS1.Range("K4:K10").Copy .Range("K4")
'Max färben
Set rBereich = .Range("K4:K10")
For Each rng In rBereich
If rng = WorksheetFunction.Max(rBereich) Then _
rng.Interior.Color = 65535
Next rng
'löschen
Call Löschen1
'Bereich in Tabelle2 wird als bmp kopiert und in Tabelle1 eingefügt
.Range("K4:K10").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
WS1.Paste Destination:=WS1.Range("B2")
End With
End Sub

Sub Löschen1()
Dim sh As Shape
With Worksheets("Tabelle1")
For Each sh In .Shapes
If sh.Type = 13 Then
sh.Delete
.Range("A1").Select
End If
Next sh
End With
End Sub

cu
Chris
Anzeige
AW: max. Werte (Formatierung) in VBA
28.09.2016 13:21:57
Fred
Moin Chris,
das ist es!
Klasse, wie du den Code ergänzt und optimiert hast!
Abschließende Frage vielleicht; Ist die Übertragung der Steuerung an die Sub-Prozedur "Löschen1" zwingend?
... Danke für die Arbeit, Chris
AW: max. Werte (Formatierung) in VBA
28.09.2016 13:41:32
ChrisL
Hi
Verstehe nicht ganz. Falls du den Call-Aufruf meinst ja, sofern du nicht mehrere Bilder übereinander willst.
cu
Chris
AW: max. Werte -OK- Thread beendet
28.09.2016 13:48:57
Fred
Okay Chris
Danke
Thread beendet.
AW: max. Werte (Formatierung) in VBA
28.09.2016 17:23:02
Fred
Hallo Experten,
Chris hat mir heute ein VBA geschrieben was ich sehr gut (oft) gebrauche.
Allerdings ist der Syntax bedingt nutzbar,- nämlich dann, wenn es um "endgültige Werte" geht, bzw. beinhalten die zu kopierenden Zellen Formeln, werden als Ergebnis im .bmp Nuller angezeigt.
Wie kann man jetzt den Code entsprend ändern?

Sub Einblick1()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim rng As Range, rBereich As Range
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
With WS2
'Spalte K aus Tabelle2 wird gelöscht, zurück zu Tabelle1
.Columns("K:K").Delete Shift:=xlToLeft
'Bereich in Spalte K wird kopiert und in Tabelle2 Zelle K4 eingefügt
WS1.Range("K4:K10").Copy .Range("K4")
'Max färben
Set rBereich = .Range("K4:K10")
For Each rng In rBereich
If rng = WorksheetFunction.Max(rBereich) Then _
rng.Interior.Color = 65535
Next rng
'löschen
Call Löschen1
'Bereich in Tabelle2 wird als bmp kopiert und in Tabelle1 eingefügt
.Range("K4:K10").CopyPicture Appearance:=xlScreen, Format:=xlBitmap
WS1.Paste Destination:=WS1.Range("B2")
End With
End Sub

Anzeige
AW: max. Werte (Formatierung) in VBA
28.09.2016 17:50:30
ChrisL
Hi Fred
Vielleicht anstelle Kopieren...
WS1.Range("K4:K10").Copy .Range("K4")
... nur die Werte übernehmen:
.Range("K4:K10") = WS1.Range("K4:K10").Value
cu
Chris
Danke Chris
28.09.2016 18:05:42
Fred
.. und nu ist es für meine Aufgaben perfekt!
... ich versuche durch solche Code-Beispiele vba zu verstehen ... und irgendwann mal selbst Codes zu schreiben ... und manchmal muß ich echt diese "Strategie" hinterfragen.
AW: max. Werte (Formatierung) in VBA
28.09.2016 18:01:03
ChrisL
übrigens, Select sinnvollerweise aus der Schleife nehmen (ein Detail):
Sub Löschen1()
Dim sh As Shape
With Worksheets("Tabelle1")
For Each sh In .Shapes
If sh.Type = 13 Then
sh.Delete
End If
Next sh
.Range("A1").Select
End With
End Sub

Anzeige

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige