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

Makro läuft nicht

Makro läuft nicht
22.11.2003 08:38:17
Mike
Hallo zusammen,
nachfolgendes Makro läuft auf meinem Home-PC unter Windows XP professional und Office XP. Sobald ich dies aber im Büro laufen lasse (Windows NT und Excel 97) kommt die Fehlermeldung "Typenunverträglichkeit" und die Zeile => For i = Cells(65536, 1).End(xlUp).Row To 1 Step -1 ist gelb unterlegt.
Das Makro steht unter "Diese Arbeitsmappe" und lautet:

Private Sub Workbook_Open()
Dim txt
Dim x As Currency
Columns("A:E").Interior.ColorIndex = xlNone
txt = InputBox("Bitte geben Sie einen Bruttobetrag in Euro ein:", "Besondere Monats-Lohnsteuertabelle")
If IsNumeric(txt) = False Then Exit Sub
x = txt
For i = Cells(65536, 1).End(xlUp).Row To 1 Step -1
If x >= Cells(i, 1) And Cells(i, 1) <> "" Then
Range(Cells(i, 1), Cells(i, 5)).Interior.Color = RGB(255, 255, 0)
Cells(i, 1).Select
' hier müßte der Code hin in der art für Spalte C =3
Workbooks("Trennungsgeld.xls").Worksheets("Trennungsgeld").Range("J12") = Cells(i, 3)
Workbooks("Trennungsgeld.xls").Worksheets("Trennungsgeld").Range("J13") = Cells(i, 4)
Workbooks("Trennungsgeld.xls").Worksheets("Trennungsgeld").Range("J14") = Cells(i, 5)
Exit Sub
End If
Next
End Sub

Woran kann das liegen?
Gruß
Mike

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro läuft nicht
22.11.2003 10:55:48
Norman
Hi Mike,

Erstaunlich, ich habe die selbe Umgebung wie Du im Büro und das Makro läuft einwandfrei... Versuch doch mal, vorher die Variablen zu dimensionieren
Dim i as long
Dim x as long

Cells().end() liefert nämlich einen long wert, vielleicht werden bei dir im Büro nicht deklarierte Variablen auf integer gesetzt, dann gehts schief.

Außerdem würde ich Dir empfehlen, am Anfang eines jeden Moduls
option explicit
zu benutzen, das zwingt Dich Deine Variablen zu deklarieren und hat durchaus Laufzeitvorteile was Geschwindigkeit angeht. Nicht deklarierte Variablen muss Excel zur Laufzeit deklarieren und braucht deshalb länger, verbraucht Speicherplatz etc.

Viele Grüße
Norman
Anzeige
AW: Makro läuft nicht
22.11.2003 11:07:15
Mike
Hi Norman,
danke, dass du dich meines Problems angenommen hast. Aber leider bin ich zu sehr Laie was VBA betrifft, um deinen Vorschlag umsetzen zu können. Vielleicht könntest du mir dabei behilflich sein. Müsste man evtl. noch "On Error Resume Next" einsetzen, damit in der Tabelle auch dann der entsprechende Wert angezeigt wird, wenn die zweite Mappe ("Trennungsgeld.xls")nicht geöffnet ist?

Gruß
Mike
AW: Makro läuft nicht
22.11.2003 11:31:31
Norman
Hi Mike,

hoppala, das ist aber nochmal ein anderes Problem, soweit ich Dich verstanden habe, liegt der Fehler in einer anderen Zeile und Dein Problem an einer anderen Stelle. Was das Fehlerhandling betrifft, kannst Du natürlich immer ein on error resume next benutzen, dan würde ich aber mit dem Debugger mal durchsteppen und schauen was passiert :)

Also, zu Deinem ursprünglichen Problem:

For i = Cells(65536, 1).End(xlUp).Row To 1 Step -1

Das war die Zeile mit Deinem Error unter Excel 97. Da Du Excel nirgends gesagt hast, was i für ein Typ ist (also string, zahl, objekt oder so) tippe ich auch hier auf das Problem. Sag excel einfach am Anfang der Funktion mittels
Dim i as long
, dass i ein long integer ist. Danach dürfte Dir Deine for-Zeile keine Probleme bereiten. Die Fehlermeldung "Typenunverträglichkeit" beruht im Normalfall darauf, dass Du zum Beispiel einer integer Variablen einen long Wert zuweisen willst oder einer Zahl einen String.

Probiers mal :)

Dein on error resume next Problem würde ich so lösen, dass Du einen Error Handler einbaust, der Checkt ob das Workbook auf ist und wenn nicht eine Message Box ausgibt, damit der User weiss, was er tun muss. Z.B.:


Private Sub Workbook_Open()
Dim txt
Dim x As Currency
Columns("A:E").Interior.ColorIndex = xlNone
txt = InputBox("Bitte geben Sie einen Bruttobetrag in Euro ein:", "Besondere Monats-Lohnsteuertabelle")
If IsNumeric(txt) = False Then Exit Sub
x = txt
on error goto fehlerHandler  ' Neu
For i = Cells(65536, 1).End(xlUp).Row To 1 Step -1
If x >= Cells(i, 1) And Cells(i, 1) <> "" Then
Range(Cells(i, 1), Cells(i, 5)).Interior.Color = RGB(255, 255, 0)
Cells(i, 1).Select
' hier müßte der Code hin in der art für Spalte C =3
Workbooks("Trennungsgeld.xls").Worksheets("Trennungsgeld").Range("J12") = Cells(i, 3)
Workbooks("Trennungsgeld.xls").Worksheets("Trennungsgeld").Range("J13") = Cells(i, 4)
Workbooks("Trennungsgeld.xls").Worksheets("Trennungsgeld").Range("J14") = Cells(i, 5)
Exit Sub
End If
Next
' Ab hier neu!
exit sub
fehlerHandler:
msgbox "Die Excel-Datei Trennungsgeld.xls ist nicht geöffnet. Bitte öffnen Sie diese Datei zuerst!"
End Sub

Anzeige
AW: Makro läuft nicht
22.11.2003 11:44:43
Mike
Hallo Norman,
bei der Beschreibung ist mir ein Fehler unterlaufen.Sorry.
Es wird die Zeile => If x >= Cells(i, 1) And Cells(i, 1) <> "" Then
gelb unterlegt.
Ich hatte versuchsweise mal "On Error Resume Next" eingefügt. Dann wird der richtige Wert auch dann angesprungen und angezeigt, wenn die andere Mappe nicht geöffnet ist. Das ist ok so. Funktioniert aber nur auf meinem Home-PC. Im Büro wird dann immer die gleiche Zelle angesprungen, egal welchen Wert ich zuvor in die Input-Box eingetragen habe.
Leider muss ich jetzt weg und komme erst heute abend wieder.
Bis dann.
Gruß
Mike
Anzeige
AW: Makro läuft nicht
22.11.2003 11:33:58
Nepumuk
Hallo Mike,
das wäre aber die schlechteste Lösung von allen. Mal ein kleines Beispiel, wie du prüfen kannst, ob die Date geöffnet ist.


Option Explicit
Public Sub test()
Dim intIndex As Integer, bolgefunden As Boolean
For intIndex = 1 To Workbooks.Count
If Workbooks(intIndex).Name = "Trennungsgeld.xls" Then bolgefunden = True: Exit For
Next
If Not bolgefunden Then Workbooks.Open ThisWorkbook.Path & "\" & "Trennungsgeld.xls"
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: Makro läuft nicht
22.11.2003 11:46:09
Norman
So gehts auch. Aber gleich als schlechteste Lösung zu bezeichnen.... ist aber nicht nett :)

Gruß
Norman
AW: Makro läuft nicht
22.11.2003 11:51:27
Mike
Hallo Nepumuk,
danke für das Makro. Werd's mal heute abend testen.
Hab mich vielleicht ein wenig missverständlich ausgedrückt. Mir geht es nicht darum zu prüfen, ob die zweite Mappe geöffnet ist. Es werden dann nur keine Werte übertragen.
Ich möchte nur, dass nach Eingabe eines Wertes in die Input-Box auch dann der entsprechende Wert angesprungen und angezeigt wird, wenn die andere Mappe nicht geöffnet ist. Wie gesagt. Das funktioniert so auf meinem Home-PC aber nicht im Büro.

Gruß
Mike
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige