VBA Fehler

Bild

Betrifft: VBA Fehler
von: Thomas
Geschrieben am: 06.08.2015 08:40:12

Hallo excelfreunde
ich möchte gern mit VBa den druckbereich festlegen. dazu habe ich das Makro unten gefunden und versucht es anzupassen.
Leider bekomme ich immer eine Fehler maeldung in Zeile " anzseiten = ExecuteExcel4Macro("Get.Document(50)")" Fehler Variable nicht definiert.
Achso der Druckbereich fängt in der Zelle b10 an. Die Zeilen anzahl und die Spaltenanzahl iist variable
Weiss jemand was hier falsch läuft? Weiss das jemand?
vielen dank schon mal
liebe grüsse thomas

Sub Druckbereic_Auswertung()
Dim AnzahlEinträgeZeilen As Integer
Dim AnzahlEinträgeSpalten As Integer
AnzahlEinträgeZeilen = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("b:b"))
AnzahlEinträgeSpalten = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("2:2"))
With ActiveSheet.PageSetup
'Festlegung auf Hochformat
.Orientation = xlLandscape               ' xlPortrait
'Druckbereich definieren
.PrintArea = _
Range(Cells(1, 1), Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).Address
'Seitenbreite definieren
.FitToPagesWide = 1
'Seitenhöhe definieren
.FitToPagesTall = False
'Seitenanzahl bestimmen
anzseiten = ExecuteExcel4Macro("Get.Document(50)")
'Rechte Fußnote mit Seitenanzahl belegen
'.RightFooter = anzseiten
End With
End Sub

Bild

Betrifft: AW: VBA Fehler
von: Sepp
Geschrieben am: 06.08.2015 08:46:16
Hallo Thomas,
was glaubst du, bedeutet "Variable nicht definiert"?
Genau, die Variable "anzseiten" ist nicht definiert.

Gruß Sepp


Bild

Betrifft: AW: VBA Fehler
von: Daniel
Geschrieben am: 06.08.2015 08:53:26
Hi
Wenn du mit Option Explicit arbeitest, muss jede Variable am Anfang mit DIM deklariert werden, was du teilweise ja auch machst, nur nicht für anzseiten.
Wobei die Berechnung mit excel4macro hier über flüssig ist, dass die Anzahl der Seiten ausgegeben werden soll, kannst du in der Fusszeile ja per Code festlegen do wie für die aktuell Seite Nummer.
Gruss Daniel

Bild

Betrifft: AW: VBA Fehler
von: Thomas
Geschrieben am: 06.08.2015 09:11:29
Hallo,
erstmal besten dank für die Hilfe.
OH OH das hätte ich aber schon mal langsam wissen müssen.
Habe es jetzt angepasst. Aber leider laufe ich jetzt in den nächsten fehler
Zeile " .PrintArea = _
Range(Cells(1, 1), Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).Address"
Anwendungs oder objektdefinierter Fehler. Das hat bestimmt was damit zu tun das ich versuche den Bereich ab zelle b10 zu ergründen.
Was mache ich jetzt noch falsch? (Cells(10, 2) oder (Cells(2, 10) geht auch leider nicht.
liebe grüsse thomas

Sub Druckbereic_Auswertung()
Dim AnzahlEinträgeZeilen As Integer
Dim AnzahlEinträgeSpalten As Integer
Dim anzseiten As Integer
AnzahlEinträgeZeilen = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("b:b"))
AnzahlEinträgeSpalten = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("2:2"))
With ActiveSheet.PageSetup
'Festlegung auf Hochformat
.Orientation = xlLandscape               ' xlPortrait
'Druckbereich definieren
.PrintArea = _
Range(Cells(1, 1), Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).Address
'Seitenbreite definieren
.FitToPagesWide = 1
'Seitenhöhe definieren
.FitToPagesTall = False
'Seitenanzahl bestimmen
anzseiten = ExecuteExcel4Macro("Get.Document(50)")
'Rechte Fußnote mit Seitenanzahl belegen
'.RightFooter = anzseiten
End With
End Sub

Sub Druckbereic_Auswertung()
Dim AnzahlEinträgeZeilen As Integer
Dim AnzahlEinträgeSpalten As Integer
Dim anzseiten As Integer
AnzahlEinträgeZeilen = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("b:b"))
AnzahlEinträgeSpalten = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("2:2"))
With ActiveSheet.PageSetup
'Festlegung auf Hochformat
.Orientation = xlLandscape               ' xlPortrait
'Druckbereich definieren
.PrintArea = _
Range(Cells(1, 1), Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).Address
'Seitenbreite definieren
.FitToPagesWide = 1
'Seitenhöhe definieren
.FitToPagesTall = False
'Seitenanzahl bestimmen
anzseiten = ExecuteExcel4Macro("Get.Document(50)")
'Rechte Fußnote mit Seitenanzahl belegen
'.RightFooter = anzseiten
End With
End Sub


Bild

Betrifft: AW: VBA Fehler
von: Daniel
Geschrieben am: 06.08.2015 11:54:05
Hi
welchen Wert haben deine Variablen AnzahlEinträgeZeilen und AnzahlEinträgeSpalten, wenn der Fehler Auftritt?
Gruß Daniel

Bild

Betrifft: AW: VBA Fehler
von: Thomas
Geschrieben am: 06.08.2015 13:08:19
Hallo Daniel,
das war schon mal ne gute Idee dadurch habe ich festgestellt das B:B= 17 ist und Range 1:1 =0 ist,
habe jetzt auf Range 10:2 gestellt und erhalte keine Fehlermeldung mehr. Liegt daran wahrscheinlich weil dort die Überschrift ist. Allerdings jetzt gibt er den Wert die Werte BB: 19 Anzahl der gefüllten Zeilen ist ok, aber Range hat er 36 richtig wären aber 18 gefüllte Spalten.
habe ewig mit Zahlen gespielt aber er hat immer die falsche Spaltenanzahl. und wenn ich auf Seitenansicht gehe markiert er nur 10 Zeilen .
weist Du rat?
liebe grüsse thomas

Sub Druckbereic_Auswertung()
Dim AnzahlEinträgeZeilen As Integer
Dim AnzahlEinträgeSpalten As Integer
Dim anzseiten As Integer
AnzahlEinträgeZeilen = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("b:b"))
AnzahlEinträgeSpalten = WorksheetFunction.CountA(Sheets("Auswertung Allgemein").Range("10:10"))
With ActiveSheet.PageSetup
'Festlegung auf Hochformat
.Orientation = xlLandscape               ' xlPortrait
'Druckbereich definieren
.PrintArea = _
Range(Cells(1, 1), Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).Address
'Seitenbreite definieren
.FitToPagesWide = 1
'Seitenhöhe definieren
.FitToPagesTall = False
'Seitenanzahl bestimmen
anzseiten = ExecuteExcel4Macro("Get.Document(50)")
'Rechte Fußnote mit Seitenanzahl belegen
'.RightFooter = anzseiten
End With
End Sub


Bild

Betrifft: AW: VBA Fehler
von: Daniel
Geschrieben am: 06.08.2015 13:12:25
Hi
worksheetfunction.CountA zählt die Anzahl der nichtleeren Zellen im angegebenen Zellbereich.
Nichtleer sind alle Zellen, die ein Wert (Text, Zahl, Fehlerwert, Wahrheitswert) oder eine Formel (unabhänig vom Formelergebnis) enthalten.
ob das jetzt die richtige Funktion an dieser Stelle ist, kann ich dir nicht sagen, weil ich weder weiss, was du an dieser Stelle ermitteln willst, noch wie deine Datei aussieht.
Gruß Daniel

Bild

Betrifft: AW: VBA Fehler
von: Thomas
Geschrieben am: 06.08.2015 16:56:51
Hallo Daniel,
du hast recht mit der frage was will ich eingentlich. Nun ja das weis ich selbst nicht.
Ich habe eine Tabelle mit werten diese beginnen immer in B10 darüber steht aber auch manchmal was aber dies soll nicht berücksichtigt werden. Die Zeilenzahl und die spaltenzahl ist sehr unterschiedlich. Aber ich muss Sie ausdrucken. Ich möchte Sie aber nicht ständig neu einstellen müssen deshalb wäre es das ideale ein Macro zu haben das diese Aufgabe sinnvoll übernimmt. Zum Beispiel so
Definiere dein benutzten Bereich Formatiere die Überschrift in Fett und ziehe ein dicken Rahmen rum. Danach passe die Spaltenbreite so an das keine Breiter ist als 10 Zeichen und wenn doch dann passe die Schrittgröße für dies Zelle an. Passen nicht alle Zeilen auf ein Blatt dann nimm ein zweites aber drucke auf dem zweiten in jedem Fall die Überschrift ( steht immer in der 10 Zeile) und dann die restlichen Zeilen.
Nun ja das eigentliche ich suche eine Möglichkeit wie ich diese Tabelle noch lesbar ausdrucken kann.
ich suche mir bei solchen Problemen dann immer irgendetwas im netz zusammen und versuch dies dann mit eurer Hilfe für anzupassen. Ich denke niemand hat das recht hier im Forum von jemand so etwas zu fordern und nichts dafür zu tun. Deshalb versuche ich immer erst mein Problem tagelang soweit ich komme selbst zu lösen. Aus diesem Grund habe ich dir nicht das ganze Problem geschildert. Vielleicht geht es ja auch viel einfacher? Und ich habe es noch nicht gefunden.
ich hoffe ich habe dich jetzt nicht abgeschreckt. So zu bleiben wie Du bist. Ich denke dies Macro wird es vielleicht nicht leisten können . hast Du vielleicht einen link für mich ?
liebe grüsse thomas

Bild

Betrifft: AW: VBA Fehler
von: Daniel
Geschrieben am: 06.08.2015 17:32:33
Hi
stelle in der Seiteneinrichtung-Blatt den Drucktitel auf 10:10 ein
den Druckbereich lässt du ganz offen.
stelle im Papierformat die Skalierung auf Anpassen 1 Seite breit / beliebig viele Seiten hoch
dann sollte das schon passend ausgedruckt werden.
die Zeilen 1-9 musst du dann vor dem Drucken ausblenden.
aber hierfür kannst du ja die Zeilen entsprechend Gruppieren, so dass das mit einem Klick geht.
Gruß Daniel

Bild

Betrifft: besten dank an daniel
von: Thomas
Geschrieben am: 06.08.2015 18:26:36
Hallo,
besten dank ich sag doch, manchmal denkt mein einfach zu kompliziert.
damit kann ich schon das meiste erledigen.
Ganz ehrlich ich habe echt nicht gewusst das man dies "beliebig viele Seiten hoch" einstellen kann.
Einfach Zahl löschen und schon ist alles klar. Ich glaube ich sollte mal mein Staus überarbeiten Excel gut überarbeiten.
Nun ja
vielen dank noch mal
liebe Grüße thomas
vielen dank daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Fehler"