Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Seitenansicht VBA

Betrifft: Seitenansicht VBA von: Peter
Geschrieben am: 22.11.2014 13:02:42

Hallo ich bitte Euch um Eure Hilfe.
Ich verwende in einer Userform folgenden Code aus einem der hiesigen Beiträge:
Option Explicit

Private Sub ComboBox1_Change() 
Dim intIndex As Integer 
With ComboBox1 
    If .ListIndex > -1 Then 
        On Error Resume Next 
            intIndex = Sheets(.Value).Index 
        On Error GoTo 0 
         
        If intIndex > 0 Then 
            If Not Sheets(intIndex).Visible = xlSheetVisible Then 
                intIndex = 0 
            End If 
        End If 
                 
        If intIndex > 0 Then 
            Me.Hide 
            Application.OnTime Now + TimeSerial(0, 0, 1), "'DruckVorschau """ & .Value & """'" 
        Else 
            MsgBox "Tabelle nicht vorhanden oder ausgeblendet" 
        End If 
    End If 
End With 
End Sub


Dieser Code listet jedoch alle Sheets auf. Ich möchte aber bestimmte Sheets nicht auflisten. Wer kann mir bitte helfen?

Besten Dank

Grüsse Peter

  

Betrifft: in dem Code wird keine Liste erstellt?... von: Tino
Geschrieben am: 22.11.2014 14:51:43

Hallo,
was meinst Du mit "Ich möchte aber bestimmte Sheets nicht auflisten"?

Gruß Tino


  

Betrifft: AW: in dem Code wird keine Liste erstellt?... von: Peter
Geschrieben am: 22.11.2014 15:50:58

Hallo Tino,
danke, dass Du Dich dieser Sache annimmst.

Ich habe ca. 10 Tabellen und es werden im Laufe der Zeit mehr.

Nur bestimmte Tabellen und die, die dazu kommen sind aufzulisten. Bestimmte feste Tabellen sollen jedoch nicht erscheinen. Denn diese Tabellen sind in der Liste nicht erwünscht bzw. erforderlich. Ich hoffe ich habe mich klar genug ausgedrückt. Viel Erfolg.
Grüsse Peter


  

Betrifft: AW: in dem Code wird keine Liste erstellt?... von: Tino
Geschrieben am: 22.11.2014 16:21:59

Hallo,
evt. geht es so.
In Array(...) kommen die die nicht gelistet werden sollen.
Die wo dazukommen sind dann nicht in dieser Liste.

Private Sub UserForm_Initialize()
Dim varNotInList, i%

'Tabellen auflisten die nicht gelistet werden sollen
varNotInList = Array("Tabelle1", "Tabelle3")

With ThisWorkbook
    For i = 1 To .Sheets.Count
        If Not IsNumeric(Application.Match(.Sheets(i).Name, varNotInList, 0)) Then
            ComboBox1.AddItem .Sheets(i).Name
        End If
    Next i
End With

End Sub
Gruß Tino


  

Betrifft: AW: in dem Code wird keine Liste erstellt?... von: Peter
Geschrieben am: 22.11.2014 16:41:29

Hallo Tino,
besten Dank für Deine Mühe, ich werde das mal testen und gebe, dann wieder Bescheid.
Wünsche Dir ein schönes Wochenende.
Gruss Peter


  

Betrifft: AW: in dem Code wird keine Liste erstellt?... von: Peter
Geschrieben am: 23.11.2014 08:37:26

Hallo Tino,
habe gerade Test durchgeführt klappt einwandfrei. Vielen Dank.
Jetzt hätte ich noch eine kleine Bitte.

Die nachstehende Funktion löst ein Makro aus um die Arbeitsblätter in der Druckvorschau anzuzeigen.
das Makro hierfür ist "Druckvorschau(strTabName$)". Da in der von Dir gefertigten Listbox zweierlei Arbeitsblätter aufgeführt werden habe ich zwei Makros gefertigt die die beiden unterschiedlichen Arbeitsblätter in der Druckvorschau zeigen.

Wie bringe ich u.a. Funktion dazu, bei z. B. Tabellennamen beginnend Test Makro1 und bei Klasse Makro2 auszuführen.



Private Sub ListBox1_Click()
Dim intIndex As Integer
With ListBox1
    If .ListIndex > -1 Then
        On Error Resume Next
            intIndex = Sheets(.Value).Index
        On Error GoTo 0

        If intIndex > 0 Then
            If Not Sheets(intIndex).Visible = xlSheetVisible Then
                intIndex = 0
            End If
        End If

        If intIndex > 0 Then
            UserForm1Druckvorschau.Hide
            Application.OnTime Now + TimeSerial(0, 0, 1), "'DruckVorschau """ & .Value & """'"
        Else
            MsgBox "Tabelle nicht vorhanden oder ausgeblendet"
        End If
    End If
End With

End Sub

Vielleicht kannst Du mir die Lösung bringen.

Grüsse Peter


  

Betrifft: AW: in dem Code wird keine Liste erstellt?... von: Tino
Geschrieben am: 23.11.2014 09:34:40

Hallo,
evtl. geht es so, habe ich jetzt aber nicht getestet.

Private Sub ListBox1_Click()
Dim intIndex As Integer
With ListBox1
    If .ListIndex > -1 Then
        On Error Resume Next
            intIndex = Sheets(.Value).Index
        On Error GoTo 0

        If intIndex > 0 Then
            If Not Sheets(intIndex).Visible = xlSheetVisible Then
                intIndex = 0
            End If
        End If

        If intIndex > 0 Then
            If (.Value Like "Test*") Or (.Value Like "Klasse*") Then
                UserForm1Druckvorschau.Hide
                
                If .Value Like "Test*" Then
                    Application.OnTime Now + TimeSerial(0, 0, 1), "'Makro1 """ & .Value & """'"
                ElseIf .Value Like "Klasse*" Then
                    Application.OnTime Now + TimeSerial(0, 0, 1), "'Makro2 """ & .Value & """'"
                End If
            Else
                MsgBox "Tabelle weder Test* noch Klasse*"
            End If
        Else
            MsgBox "Tabelle nicht vorhanden oder ausgeblendet"
        End If
    End If
End With

End Sub
Gruß Tino


  

Betrifft: AW: Neue Anfrage zur Druckvorschau von: Peter
Geschrieben am: 23.11.2014 17:33:17

Hallo Tino,
Danke für Deine Hilfe. Musste ich nicht testen. Es läuft plötzlich einwandfrei.
Aber ich habe mit der Druckvorschau noch ein Problem.
Die Druckvorschau funktioniert nur mit dem in der Tabelle eingestellten Wert.

Ich hätte aber gerne, dass der Druckbereich eingestellt wird mit dem Wert, dass der
letzte Wert in der Zelle in Spalte A gesucht wird und dieser die max. Länge ist.
Ich hätte gerne etwas ähnliches wie folgende Anweisung eingebaut, habe aber zwei verschiedene
Tabellenarten:

'

Sub PrintArea05()   'Diese Version ist i.O.  Druckbereich wird eingestellt, gedruckt und  _
Druckbereich zurückgesetzt
'Dim ws As Worksheet
'Set ws = ThisWorkbook.ActiveSheet
'wsLR = ws.Cells(Rows.Count, 1).End(xlUp).Row
'wsLC = ws.Cells(1, Columns.Count).End(xlToLeft)
'
''ws.PageSetup.PrintArea = strDruckbereich
'Set PrintA = ws.Range("A1:G" & wsLR)        'Druckbereich wird hier bestimmt
'
'ws.PageSetup.PrintArea = PrintA.Address(0, 0)
''With ws
''    .Activate
''    lView = Application.ActiveWindow.View
''    .ResetAllPageBreaks 'Alle vorhandenen festen Seitenwechsel löschen
''    With .PageSetup
''    .LeftFooter = "&""Arial,Standard""&12Kontensaldo"
''    .CenterFooter = "&""Arial,Standard""&12Stand   " & Format(ActiveSheet.Range("N11"), "dd. _
mm.yyyy")
''    .RightFooter = "&""Arial,Standard""&12€        " & Format(ActiveSheet.Range("O11"), "###0. _
00")
''    End With
''    End With
'ws.PrintPreview 'Ansicht
''ws.PrintOut Copies:=1      'Ausdruck
'      'Druckbereich zurücksetzen
''ws.PageSetup.PrintArea = strDruckbereich
'
'End Sub

Die Druckansicht die bisher läuft ist:

'DruckVorschau und TabellenAnsicht wird für die Ausführung von Tabelle "Vorschau und Drucken" benötigt.
Sub DruckVorschau(strTabName$)
UserForm1Druckvorschau.Hide


    Sheets(strTabName).PrintPreview
    Application.OnTime Now + TimeSerial(0, 0, 1), "TabellenAnsicht"
End Sub
Ich hoffe Du oder auch andere hier im Forum können mir helfen.
Grüsse
Peter


  

Betrifft: AW: Neue Anfrage zur Druckvorschau von: Tino
Geschrieben am: 23.11.2014 19:44:15

Hallo,
evtl. geht es so, wenn ich es richtig verstanden habe.

Sub DruckVorschau(strTabname$)
Dim MaxRow&
Dim sPrintAr$

UserForm1Druckvorschau.Hide

With Sheets(strTabname)
    MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    
    sPrintAr = .PageSetup.PrintArea

    Application.DisplayAlerts = False
    .PageSetup.PrintArea = Intersect(.Rows(1).Resize(MaxRow), .UsedRange).Address(0, 0)
    Application.DisplayAlerts = True
    
    Application.OnTime Now + TimeSerial(0, 0, 1), "'TabellenAnsicht """ & strTabname & """,""" & sPrintAr & """'"
    
    .PrintPreview
    
End With
End Sub

Sub TabellenAnsicht(strTabname$, sPrintAr$)
Application.DisplayAlerts = False
    Sheets(strTabname).PageSetup.PrintArea = sPrintAr
Application.DisplayAlerts = True
'... 
'... 
'... 
End Sub
Gruß Tino


  

Betrifft: AW: Dank von: Peter
Geschrieben am: 23.11.2014 20:13:16

Hallo Tino,

habe die Sache ausprobiert, funktioniert einwandfrei.

Habe nur in Sub Tabellenansicht noch die Zeile "UserForm1Druckvorschau.Show" eingefügt.

Wünsche Dir noch einen schönen Abend.
Grüsse
Peter


  

Betrifft: AW: Erweiterung in Druckvorschau von: Peter
Geschrieben am: 24.11.2014 17:02:39

Hallo Tino und Forumfreunde,

ich habe ein neues Problem, das ich nicht lösen kann in Hinblick auf die Druckvorschau bzw. dem nachfolgenden Drucken. Ich habe ein Makro geschrieben, mit welchem ich bestimmte Zeilen ausblenden kann, wenn ein bestimmter Wert gegeben ist.

Jetzt weiss ich aber nicht, wo ich dieses Makro einfügen muss, damit es durchgeführt wird. Am Ende müssen die Zeilen wieder eingeblendet werden. Dies wahrscheinlich dann über ein weiteres Makro.

Bitte teilt mir mit, wie und an welcher stelle ich das Makro einfügen muss.

Das Makro anbei:

Sub bestimmte_Zeilen_ausblenden()

 If Range("$A$37") = 0 Then
 Rows(37).EntireRow.Hidden = True
 Rows(38).EntireRow.Hidden = True
 Rows(39).EntireRow.Hidden = True
 Rows(40).EntireRow.Hidden = True
 Rows(41).EntireRow.Hidden = True
 End If

 If Range("$A$37") <> 0 Then
 Rows(37).EntireRow.Hidden = False
 Rows(38).EntireRow.Hidden = False
 Rows(39).EntireRow.Hidden = False
 Rows(40).EntireRow.Hidden = False
 Rows(41).EntireRow.Hidden = False
 End If
ActiveSheet.PrintPreview
Rows.Hidden = False
End Sub
Besten Dank für Eure Hilfe

Gruss Peter


  

Betrifft: AW: Erweiterung in Druckvorschau von: Peter
Geschrieben am: 24.11.2014 18:08:36

Hallo Tino und Forumfreunde,

ich habe ein neues Problem, das ich nicht lösen kann in Hinblick auf die Druckvorschau bzw. dem nachfolgenden Drucken. Ich habe ein Makro geschrieben, mit welchem ich bestimmte Zeilen ausblenden kann, wenn ein bestimmter Wert gegeben ist.

Jetzt weiss ich aber nicht, wo ich dieses Makro einfügen muss, damit es durchgeführt wird. Am Ende müssen die Zeilen wieder eingeblendet werden. Dies wahrscheinlich dann über ein weiteres Makro.

Bitte teilt mir mit, wie und an welcher stelle ich das Makro einfügen muss.

Das Makro anbei:

Sub bestimmte_Zeilen_ausblenden()

 If Range("$A$37") = 0 Then
 Rows(37).EntireRow.Hidden = True
 Rows(38).EntireRow.Hidden = True
 Rows(39).EntireRow.Hidden = True
 Rows(40).EntireRow.Hidden = True
 Rows(41).EntireRow.Hidden = True
 End If

 If Range("$A$37") <> 0 Then
 Rows(37).EntireRow.Hidden = False
 Rows(38).EntireRow.Hidden = False
 Rows(39).EntireRow.Hidden = False
 Rows(40).EntireRow.Hidden = False
 Rows(41).EntireRow.Hidden = False
 End If
ActiveSheet.PrintPreview
Rows.Hidden = False
End Sub
Besten Dank für Eure Hilfe

Gruss Peter


  

Betrifft: AW: Erweiterung in Druckvorschau von: Tino
Geschrieben am: 25.11.2014 13:55:26

Hallo,
vieleicht so. (nicht getestet)

Sub DruckVorschau(strTabname$)
Dim MaxRow&
Dim sPrintAr$

UserForm1Druckvorschau.Hide

With Sheets(strTabname)
    bestimmte_Zeilen_ausblenden .Name, True
    
    MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    
    sPrintAr = .PageSetup.PrintArea

    Application.DisplayAlerts = False
    .PageSetup.PrintArea = Intersect(.Rows(1).Resize(MaxRow), .UsedRange).Address(0, 0)
    Application.DisplayAlerts = True
    
    Application.OnTime Now + TimeSerial(0, 0, 1), _
                "'TabellenAnsicht """ & strTabname & """,""" & sPrintAr & """'"
    
    .PrintPreview
    
End With
End Sub

Sub TabellenAnsicht(strTabname$, sPrintAr$)
Application.DisplayAlerts = False

With Sheets(strTabname)
    bestimmte_Zeilen_ausblenden .Name, False
    .PageSetup.PrintArea = sPrintAr
End With

Application.DisplayAlerts = True

'anderer Code
'...
'...
'...
End Sub

Sub bestimmte_Zeilen_ausblenden(strTabname$, booHidden As Boolean)

With Sheets(strTabname$)
    If booHidden Then
        If .Range("$A$37") = 0 Then
           .Rows(37).Resize(5).EntireRow.Hidden = True
        ElseIf Range("$A$37") <> 0 Then
            .Rows(37).Resize(5).EntireRow.Hidden = False
        End If
    Else
        .Rows(37).Resize(5).EntireRow.Hidden = False
    End If
End With
End Sub
Gruß Tino


  

Betrifft: AW: Abschluss von: Peter
Geschrieben am: 27.11.2014 08:05:28

Hallo Tino,
besten Dank für Deine Mitteilung. Habe es noch nicht getestet.
Habe zwichenzeitlich eine andere Lösung erhalten die einwand-
frei funktioniert. Werde aber Deine Lösung noch testen.

Besten Dank nochmals für Deine Mühe. Das Projekt ist jetzt ab-
geschlossen.

Grüsse Peter