Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
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

Problem mit Typenunverträglichkeit bzw. Dimensioni

Problem mit Typenunverträglichkeit bzw. Dimensioni
Bibo
Hallo liebe EXCEL-Freunde,
ich versuche nun schon seit heute Nachmittag ein Problem zu lösen, dem ich mit meinen beschränkten Fähigkeiten jedoch nicht gewachsen bin und bitte Euch daher um Unterstützung.
Ich verwende seit Längerem ohne Probleme das mit Hilfe aus dem Forum erstellte Makro, das dem Export eines Tabellenblattes in eine neue Arbeitsmappe dient:
Sub Export_Kommission_Paletten()
' Export des Arbeitsblattinhalts in neue Arbeitsmappe
Dim objOLE As Object
Dim LoI As Long
Sheets("Kommission_Paletten").Copy
With ActiveSheet
.Unprotect password:="funkmasterflo"
.Range("A19:g" & .Cells(Rows.Count, "A").End(xlUp).Row).Value = _
.Range("A19:g" & .Cells(Rows.Count, "A").End(xlUp).Row).Value
For Each obj In .DrawingObjects
Select Case obj.Name
Case "Grafik 3", "Picture 3"
Case Else
obj.Delete
End Select
Next
End With
Application.Goto Reference:="R1C1"
For LoI = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
If IsNumeric(Cells(LoI, 2).Value) = True And Cells(LoI, 2).Value  "" Then
Select Case ActiveSheet.Name
Case "Kommission_Module"
ActiveSheet.PageSetup.PrintArea = "$A$1:$f$" & LoI
Case "Kommission_Paletten"
ActiveSheet.PageSetup.PrintArea = "$A$1:$g$" & LoI
End Select
Exit For
End If
Next LoI
End Sub
Bei einem neuen Lieferanten sind die dort verwendeten Serien- und Paletten-Nummern nicht mehr wie bisher 10-stellig, sondern 16- bzw. 20-stellig, was offensichtlich das Problem auslöst.
Nach dem Export in die neue Arbeitsmappe werden die Nummern jeweils bis zur 15. Stelle korrekt dargestellt, jedoch ab der 16. Stelle immer mit „0“ ergänzt.
Zunächst hatte ich das Format der Ursprungszellen von „Zahl“ auf „Text“ umgestellt, was jedoch wegen des Codes „If IsNumeric(Cells(LoI, 2).Value) = True“ zur Meldung „Typenunverträglichkeit“ geführt hat.
In einem nächsten Ansatz habe ich dann bei der Dimensionierung „Dim LoI As Long“ z.B. in „... Double“ geändert, jedoch leider auch ohne Erfolg.
Wie muss ich vorgehen, damit auch bei 16 bzw. 20-stelligen Zahlen alles wieder wie gewohnt finktioniert?
Bitte helft mir!
Vielen Dank
Bibo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Problem mit Typenunverträglichkeit bzw. Dimensioni
18.09.2010 21:47:02
Oberschlumpf
Hi
Hab deinen Code jetzt nich ganz genau geprüft.
Aber vllt hilft ne Änderung in dieser Zeile
If IsNumeric(Cells(LoI, 2).Value) = True

wenn du sie so schreibst:
If IsNumeric(Val(Cells(LoI, 2).Value)) = True

Ich weiß nicht genau, ob die VAL-Funktion auch 16- und/oder 20-stellige Werte korrekt verarbeitet - schau dir dazu mal die Excel-VBA-Hilfe an.
Hilft denn meine Idee?
Ciao
Thorsten
Kaum! Gruß Luc :-?
18.09.2010 22:03:33
Luc:-?
:-?
AW: Problem mit Typenunverträglichkeit bzw. Dimensioni
18.09.2010 21:48:32
JogyB
Hallo Bibo,
das Zellenformat muss auf jeden Fall auf Text, anders bekommst Du Zahlen mit mehr als 11 Stellen nicht unter. Allerdings kann ich das Problem mit dem IsNumeric unter Excel 2003 nicht nachvollziehen, da klappt es auch mit 100stelligen Zahlen. Kann aber unter Excel 2000 natürlich anders sein.
Wenn es wirklich nur 10, 16 oder 20stellige Zahlen geht, dann wäre das eine Möglichkeit:
Application.Goto Reference:="R1C1"
For loi = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
With Cells(loi, 2)
If .Value Like "##########" Or .Value Like "################" _
Or .Value Like "####################" Then
Select Case ActiveSheet.Name
Case "Kommission_Module"
ActiveSheet.PageSetup.PrintArea = "$A$1:$f$" & loi
Case "Kommission_Paletten"
ActiveSheet.PageSetup.PrintArea = "$A$1:$g$" & loi
End Select
Exit For
End If
End With
Next loi

Wenn es um Zahlen mit beliebig vielen Stellen geht, dann müsste man wohl über VBScript.RegExp gehen.
Gruß, Jogy
Anzeige
...und damit mit Kanonen auf Spatzen schießen! orT
18.09.2010 22:06:13
Luc:-?
Gruß+schöSo, Luc ;-)
Das lass' alles besser, denn das ist so...
18.09.2010 22:02:37
Luc:-?
…schon richtig, Bibo,
LoI muss Long bleiben, auch IsNumeric kann bleiben, wenn die PalNr wirklich immer rein numerisch bleiben, nur die Länge ist das Problem. Also, was bleibt dann übrig? Richtig! Teilen! Also If IsNumeric(Left(Cells(LoI, 2), 10)) And IsNumeric(Right(Cells(LoI, 2), 10)) And…
Auf .Value kannst du verzichten, ist ohnehin die Default-Eigenschaft von Cells, und True ist ebenfalls überflüssig, denn If erwartet ohnehin einen Wahrheitswert, den ein Vgl ja idR auch liefert.
Gruß+schöSo, Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige