Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1240to1244
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
Inhaltsverzeichnis

Codefehler: Typen unverträglich

Codefehler: Typen unverträglich
WalterK
Hallo,
der folgende Code läuft in Excel 2010, in Excel 2003 kommt aber der Fehler "Typen unverträglich"!
Kann mir jemand mitteilen, was ich im Code ändern muss?
Option Explicit
Sub Druck_Gruppe()
Dim LoErste As Long   ' erste Zeile zum drucken
Dim Spletzte As Integer  ' letzte Spalte zum drucken
Dim Zeletzte As Long  ' letzte Zeile zum drucken
Dim SpErste As Long   'erste Spalte zum drucken
Dim i As Long
Dim tmp() As Variant
LoErste = 5
SpErste = 3
Spletzte = 33
Zeletzte = [LOOKUP(2,1/(D:D""),ROW(D:D))] 'letzte Zelle in Spalte D
For i = LoErste To Zeletzte
ReDim Preserve tmp(i - LoErste)
tmp(i - LoErste) = Cells(i, 255).End(xlToLeft).Column
Next
With ActiveSheet
.PageSetup.PrintArea = Range(Cells(LoErste, SpErste), _
Cells(Zeletzte, Spletzte)).Address
.PrintOut Copies:=1, Preview:=True
.PageSetup.PrintArea = ""
End With
End Sub
Besten Dank und Servus, Walter
Wo kommt `Typen unverträglich'? Warum ...
22.12.2011 14:00:50
Luc:-?
…nicht auch Dim Spletzte As Long, Walter?
Gruß Luc :-?
AW: Wo kommt `Typen unverträglich'? Warum ...
22.12.2011 14:11:24
WalterK
Hallo,
Habe es auf Dim Spletzte As Long geändert, Fehler kommt aber trotzdem noch!
Servus, Walter
Aber wo? Codezeile angeben! owT
22.12.2011 14:13:46
Luc:-?
:-?
AW: Aber wo? Codezeile angeben! owT
22.12.2011 14:28:54
WalterK
Hallo,
der Fehler ist behoben, der Code läuft durch und funktioniert.
Der Fehler kam in der Codezeile Zeletzte = [LOOKUP(2,1/(D:D""),ROW(D:D))]!
Vermutlich lag der Fehler bei den Leerzellen vor dem Beginn der eigentlichen Tabelle in Zeile 9. Ich habe den Bereich jetzt eingeschränkt, jetzt funktionierts.
Besten Dank und Servus, Walter
AW: Aber wo? Codezeile angeben! owT
22.12.2011 17:13:14
Luschi
Hallo Vba-Fan's,
bis Excel2003 muß der Bereich eingegrenzt werden und funktioniert so:
Zeiletzte = [LOOKUP(2,1/(D1:D100""),ROW(D:D))]
ab Excel 2007 so:
Zeiletzte = [LOOKUP(2,1/(D:D""),ROW(D:D))]
Ist kein EWintrag in der Spalte 'D', dann Fehlermeldung.
Nun frage ich mich, wieso diese Vba-Zeile funktioniert; sieht aus wie ein verkapptes Excel4-Makro.
Wer kann sich einen Reim darauf machen?
Interessant dabei ist, daß auch die allerletzte Zeile richtig erkannt wird, wenn da ein Wert drin steht.
Hinsichtlich der Nutzung von Excel4-Makros macht M$ folgende Aussage:
(http://technet.microsoft.com/de-de/library/cc179167.aspx)
Schließen von XLM-/VBA-Lücken
Excel verfügt über die Makrofunktion Excel 4-Makros (XLM), die vor der Einführung von VBA in Excel 5.0 die Hauptmakrosprache war. Die meisten Benutzer haben ihre Excel 4-Makros mittlerweile in VBA migriert. Einige Excel 4-Makrofunktionen fehlten jedoch in VBA, wodurch diese Migration erschwert wurde.
Es wurde angestrebt, in Excel 2010 alle verbleibenden Hindernisse für die Migration von Excel 4-Makros nach VBA zu beseitigen. Excel 2010 ermöglicht weiterhin das Erstellen, Bearbeiten und Ausführen von Excel 4-Makros. Sie können Excel 2010 verwenden, um Makros zu migrieren.
Gruß von Luschi
aus klein-Paris
Anzeige
Nee, nee, Luschi, das wird bloß die Alternativ...
22.12.2011 17:25:35
Luc:-?
…schreibweise für Evaluate("…") sein.
Gruß + FroWein (auch an Walter)!
Luc :-?
AW: Nee, nee, Luschi, das wird bloß die Alternativ...
22.12.2011 17:38:03
Luschi
Danke Luc,
dann auch so: Zeiletzte = Evaluate("LOOKUP(2,1/(D1:D100""""),ROW(D:D))")
Ich wünsche Dir ebenfalls eine frohe und schöne Weihnachtszeit.
Gruß von Luschi
aus klein-Paris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige