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

Hat jemand...

Hat jemand...
08.03.2005 17:17:33
René
Hallo zusammen,
hat jemand eine Idee, wie ich das nachfolgende noch vereinfachen kann?
https://www.herber.de/bbs/user/19367.txt
Ich danke für Eure Hilfe
Gruss
René

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hat jemand...
08.03.2005 19:14:25
Hajo_Zi
Hallo Rene
in VBA braucht man zu 99% kein .select usw.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


@Hajo NUR zu 99% ?...
08.03.2005 19:22:59
ransi
hallo hajo
...das restliche 1% ist mir noch nicht begegnet.
ransi
AW: NUR zu 99% ?...
08.03.2005 19:26:56
Hajo_Zi
Hallo rani,
mir auch nicht, aber es kann ja noch werden.
Gruß Hajo
AW: NUR zu 99% ?...
08.03.2005 19:41:18
Matthias
Hallo Hajo,
naja, z.B. um den Fensterzoom auf eine bestimmten Bereich anzupassen:
Range("A1:H1").Select
ActiveWindow.Zoom = True
Zumindest ist es so am einfachsten ;-)
Gruß Matthias
Anzeige
AW: NUR zu 99% ?...
08.03.2005 19:57:05
Hajo_Zi
Hallo Matthias
falls es darum geht die Zoom Größe der Bildschirmauflösung anzupassen?

Option Explicit
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Enum ScreenArgs
HORIZONTAL
VERTIKAL
End Enum
Public Function ScreenResolution(HV As ScreenArgs) As Long
If HV = 0 Or HV = 1 Then ScreenResolution = GetSystemMetrics(HV)
End Function
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case ScreenResolution(0)
Case 1152
ActiveWindow.Zoom = 110
Case 1024
ActiveWindow.Zoom = 100
Case 800
ActiveWindow.Zoom = 75
Case 640
ActiveWindow.Zoom = 60
End Select
End Sub

Gruß Hajo
Anzeige
AW: NUR zu 99% ?...
08.03.2005 20:03:53
Matthias
Hallo Hajo,
ja sicher findet man (du! - ;-) da auch Alternativen, aber deine berücksichtigt nicht die Fenstergröße (Application.Width) und ob z.B. der Aufgabenbereich (heißt das so?) angezeigt wird.
Wie gesagt, ich finde o.g. Code am einfachsten. Man kann die vorherige Selektion ja anschließend wiederherstellen.
Gruß Matthias
AW: NUR zu 99% ?...
08.03.2005 19:47:29
Kurt
jetzt mal bitte (natürlich ist A2 auf Tabelle1 NICHT die aktive Zelle) ohne select oder activate ;-)

Sub Makro1()
Worksheets(1).Cells(257).Activate 'oder select
ActiveWindow.FreezePanes = True
End Sub

und Tschüss Kurt
Anzeige
AW: NUR zu 99% ?...
08.03.2005 20:00:01
Hajo_Zi
Hallo Kurt,
Dein Code geht nur wenn das erste Worksheet aktiv.
Gruß Hajo
AW: NUR zu 99% ?...
08.03.2005 20:02:52
Kurt
Hi Hajo,

Sub Makro1()
Worksheets(1).Select
Cells(257).Select
ActiveWindow.FreezePanes = True
End Sub

also zweimal select in einem code :-)
...und Tschüss Kurt
...das liegt wohl am MakroRecorder...! owT
08.03.2005 19:44:02
Luc
AW: Hat jemand...
08.03.2005 20:03:18
René
Hallo zusammen,
danke für Eure Antworten.
Aber Helfen tun sie alle nicht.
Vielleicht krieg ich ja noch einen brauchbaren Vorschlag.
Danke auf jeden Fall
Gruss
René
AW: Hat jemand...
08.03.2005 20:09:45
Hajo_Zi
Hallo Rene,
hast Du meinen Vorschlag umgesetzt?
Gruß Hajo
AW: Hat jemand...
08.03.2005 20:11:10
René
Hallo Hajo,
welchen Vorschlag meinst Du genau?
Gruss
René
Anzeige
AW: Hat jemand...
08.03.2005 20:13:03
Hajo_Zi
Hallo Rene,
Du hast auf meinen Vorschlag geantwortet, darum bin ich davon ausgegangen das es klar ist.
Auf .select kann zu 99% verzichtet werden.
Gruß Hajo
AW: Hat jemand...
08.03.2005 20:16:52
René
Hallo Hajo
Wie soll ich denn beim Kopieren und umbenennen auf "Select" verzichten?
Gruss
René
AW: Hat jemand...
08.03.2005 20:13:33
P@ulchen
Hallo René,
zuerst würde ich an Deiner Stelle die Subs adressen... kürzen und den gemeinsamen Teil dieser Subs in einen neuen Code legen, den Du aus den Sub´s heraus aufrufst:


Dim LArt As String
Sub adressen_aktive1()
LArt = "A"
Kopieren
End Sub
Sub adressen_passive1()
LArt = "P"
Kopieren
End Sub
Sub adressen_ehrenmitglieder1()
LArt = "EM"
Kopieren
End Sub
Sub Kopieren()
Application.DisplayAlerts = False
Sheets("Dr").Delete
Sheets("V").Visible = True
Sheets("V").Copy before:=Sheets(2)
ActiveSheet.Name = "Dr"
Sheets("V").Visible = xlVeryHidden
Application.DisplayAlerts = True
Call druck_adress_listen1(LArt)
End Sub


Wie Du siehst, sind die Selects (Sub Kopieren), wie Hajo schon erwähnte, nicht notwendig.
Um den weiteren Code zu vereinfachen, wäre eventuell eine Beispieldatei von Vorteil...(in Deiner Select Case - Anweisung ist 3x iCol=14 vorhanden?)
Nur soviel: Du kannst zB. auch beim Sortieren auf "Select" verzichten


Sheets("Dr").Range("A3:L" & SZähler - 1).Sort Key1:=Range("A3"), Order1:=xlAscending, Key2:=Range("B3"), _
    Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom


Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
AW: Hat jemand...
08.03.2005 20:23:54
René
Hallo P@aulchen,
danke für den Code. Ich werd das mal umsetzen und schauen was ich fertig bringe.
Ich seh auf jeden Fall schon jetzt, dass das ganze viel kürzer wird.
Was dachtest Du mit der Beispieldatei?
Gruss
René
AW: Hat jemand...
08.03.2005 20:36:39
P@ulchen
Hallo René,
Du hast hier auch die Möglichkeit, auch eine Beispielmappe auf den Server zu laden.
Somit können die Helfer Deine Problem etwas besser nachvollziehen.
Bei Deinem Code zB. würde ich Formatierungen (Rahmen, Zellen) etc. nur in dem Maße nutzen, wie unbedingt notwendig. Standard-Formatierungen können also auch aus dem Code verschwinden...
Beispiel:
Makro1 wurde mit dem Macrorecorder aufgezeichnet(Rahmen um A1:C4), Makro2 erledigt hier die gleiche Arbeit...


Sub Makro1()
'mit Macrorecorder aufgezeichnet
    Range("A1:C4").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
Sub Makro2()
With Range("A1:C4")
    .Borders(xlEdgeLeft).Weight = xlThin
    .Borders(xlEdgeTop).Weight = xlThin
    .Borders(xlEdgeBottom).Weight = xlThin
    .Borders(xlEdgeRight).Weight = xlThin
End With
End Sub


Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
AW: Hat jemand...
08.03.2005 20:55:16
René
Hall P@aulchen.
besten Dank für Deine Antwort. Ich werde mal schauen, wie ich das alles unter einen Hut bringe und verarbeiten kann. Ich bin im VBA nicht so gut und wirklich für jede Hilfe dankbar.
Zu einem späteren Zeitpunkt werde ich dann eine Beispielmappe ins Netz stellen.
Danke auf jeden Fall mal für Deine Hilfe.
Gruss
René
AW: Hat jemand...
08.03.2005 22:23:46
Otto
Hallo Paulchen,
Meine Testumgebungen: Excel 9.0 SR-1, Multilingual unter Windows 2000 SP-4 und Excel 11 Deutsch unter Windows XP
ich würde das Makro so schreiben:

Gruß Otto
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige