Excel 2010 Filter Komma Punkt Einstellung
Hallo
Bin Anfänger in VBA.
Habe win 7 64 Bit Betriebssystem mit Excell 2010.
Mein Problem liegt im filtern von Zahlen mit Komma.
Mein Makro kontrolliert die gesuchte Zahl zuerst, ist sie vorhanden gehts weiter mit dem Filter.
Die Zahl wird automatisch eingetragen, erscheint jedoch im Filter mit Punkt anstelle Komma.
Das Ergebnis ist somit negativ.
Kontrolliert man die übernommene Werte im Makro so entsprechen sie dem gewünschtem Suchwert.
Tauscht man im Filter den Punkt zu Komma erscheinen auch die richtigen Zeilen.
Wo liegt die Ursache, dass im Filter ein Punktwert eingetragen wird.
Bei einem Test in Excel 2007 ist auch der Punktwert eingetragen im Filter, jedoch kommen dort _
die Zeilen mit Kommawerte wie es gewünscht wird.<pre>
Sub Zuanbaulist()
Dim Wert As Integer
ZUCODE = [tabelle2!A8]
Sheets("Tabelle1").Select
ActiveSheet.Unprotect
'Kontrole Anfang
Set Rng = Columns(1).Find( _
what:=ZUCODE, lookat:=xlWhole, LookIn:=xlFormulas)
If Rng Is Nothing Then
Beep
MsgBox "Eine Bearbeitung wurde nicht gefunden!", 64, "Infomeldung zur Bearbeitung"
Exit Sub
End If
Sheets("Tabelle1").Select
Range("A1").Select
Range("A1:P10000").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=[ZUCODE]
Range("I2:P10000").Select
Selection.Copy
End Sub</pre>
Vielen Dank im Voraus für Eure Hilfe.
MfG Hubert
Antwort schreiben
Antwort 1 von Beverly vom 15.09.2022, 20:38 Options
Hi Hubert,
meines Erachtens hat dein Code einen Fehler: ZUCODE ist im oberen Teil eine Variable, die nicht definiert ist und im unteren Teil eine Zelldresse in der aktuellen Tabelle.
Du hast nicht geschrieben, welche Ofiice-Version du verwendest - 32 oder 64 bit.
Bis später,
Karin
Antwort 2 von Wetterigel vom 15.09.2022, 22:09 Options
Hallo Karin
Danke für Deine Antwort.
Es handelt sich um die 64 Bit Version Office 2010.
Das Makro ist nur der Bereich indem Excel mir schwierigkeiten bereitet.
Im Makro kan man den Werte nachverfolgen, der nacher in den Filter eingesetzt und benuzt werden muß. Leider steht dort nicht wie benötigt 2009,0010 sondern 2009.0010
Somit filtert Excel nicht nach meinem Wunsch (Bedarf).
In Tabelle1 stehen in Spalte A Zahlen
2009,0010
2009,0012
2009,0013
2009,0010
2009,0010
In Tabelle2 steht in Zelle A8 mein zu benutzender Filterwert zb.2009,0010
Nach benutzung des Makros sollten alle Zeilen mit 2009,0010 zur weiteren beabeitung bereit stehen.
In Excel 2007 steht in der Filterauswahl 2009.0010 jedoch werden die Zeilen mit 2009,0010 angezeigt (wie gewünscht).
In meinem Excel 2010 steht in der Filterauswahl ebenfalls der Wert 2009.0010 jedoch stehen keine Zeilen zur weiteren bearbeitung bereit, weil der Filterwert 1 zu 1 übernommen wird.
Wie kann man Excel 2010 dazu bringen gleich zu handeln wie Excel2007
In beiden Versionen wird das Trennzeichen vom Betriebssystem übernommen.
Dezimalstelle = Komma
Tausendertrennzeichen = Punkt
Tastatur Deutsch Deutschland
mir fallen momentan keine weiteren Einstellmöglichkeiten ein.
Mit freundlichem Gruß
Hubert
Antwort 3 von nighty vom 16.09.2022, 10:45 Options
hi hubert :-)
probier mal :-)
gruss nighty
Sub Zuanbaulist()
Dim Rng As Range
With Worksheets("Tabelle1")
.Unprotect
Set Rng = .Columns(1).Find(what:=Worksheets("Tabelle2").Range("A8"), lookat:=xlWhole, LookIn:=xlFormulas)
If Rng Is Nothing Then
Beep
MsgBox "Eine Bearbeitung wurde nicht gefunden!", 64, "Infomeldung zur Bearbeitung"
Else
.Range("A1:P10000").AutoFilter Field:=1, Criteria1:=Worksheets("Tabelle2").Range("A8")
.Range("I2:P10000").Copy 'nicht zu vergessen das hier alle eigenschaften einer zelle mitkopiert werden
End If
End With
.Protect
End Sub
Antwort 4 von Wetterigel vom 16.09.2022, 20:55 Options
Hallo nighty
Vielen Dank für Deine Antwort.
Dein Makro enthält inhaltlich meine Gewünschtes Ziel, jedoch verhält sich Excel 2010 genau gleich wie bei meinem Makro.
Siehe nochmal meine Beschreibung vom 15.09.2010
MfG Hubert
Antwort 5 von nighty vom 17.09.2022, 09:54 Options
hi hubert :-)
alternativ zum autofilter,probier mal
gruss nighty
Option Explicit
Sub Einfuegen()
Dim Disa As Boolean, Scup As Boolean, Enec As Boolean
Dim Calc As Integer
Dim Lzeile As Long, DatNeuIndex As Long, ZeilenIndex As Long, SpaltenIndex As Long, SpalteIP As Long
Dim SuchZelle As Double
With Application
Disa = .DisplayAlerts
Scup = .ScreenUpdating
Enec = .EnableEvents
Calc = .Calculation
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
On Error GoTo EndeMakro
Lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
ReDim SpalteAP(1 To Lzeile, 1 To 16) As Variant
ReDim DatNeu(1 To Lzeile, 1 To 8) As Variant
Worksheets("Tabelle1").Activate
SpalteAP() = Range("A1:P" & Lzeile)
SuchZelle = Worksheets("Tabelle1").Cells(1, 1).Value
DatNeuIndex = 1
For ZeilenIndex = 1 To Lzeile
For SpaltenIndex = 1 To 16
If SpalteAP(ZeilenIndex, SpaltenIndex) = SuchZelle Then
For SpalteIP = 9 To 16
DatNeu(DatNeuIndex, SpalteIP - 8) = SpalteAP(ZeilenIndex, SpalteIP)
Next SpalteIP
DatNeuIndex = DatNeuIndex + 1
Exit For
End If
Next SpaltenIndex
Next ZeilenIndex
Worksheets("Tabelle2").Activate
Range(Cells(1, 1), Cells(Lzeile, 8)).Resize(UBound(DatNeu())) = DatNeu() 'position der gefilterten daten
EndeMakro:
With Application
.DisplayAlerts = Disa
.ScreenUpdating = Scup
.EnableEvents = Enec
.Calculation = Calc
End With
End Sub
Antwort 6 von nighty vom 17.09.2022, 09:58 Options
hi all :-)
zum autofilter problem
keine überschrift ?
keine löschung des kreteriums ?
könnten fehler auslösen,muessen aber nicht :-))
gruss nighty
Antwort 7 von Beverly vom 17.09.2022, 11:31 Options
Hi Hubert,
versuche es mal, indem du die Zahl im Filterkrierium in einen String umwandelst (Basis ist nighty's Code):
Sub Zuanbaulist()
Dim Rng As Range
With Worksheets("Tabelle1")
.Unprotect
Set Rng = .Columns(1).Find(what:=Worksheets("Tabelle2").Range("A8"), lookat:=xlWhole, LookIn:=xlFormulas)
If Rng Is Nothing Then
Beep
MsgBox "Eine Bearbeitung wurde nicht gefunden!", 64, "Infomeldung zur Bearbeitung"
Else
.Range("A1:P10000").AutoFilter Field:=1, Criteria1:=CStr(Worksheets("Tabelle2").Range("A8"))
.Range("I2:P10000").Copy 'nicht zu vergessen das hier alle eigenschaften einer zelle mitkopiert werden
End If
End With
.Protect
End Sub
Bis später,
Karin
Antwort 8 von Wetterigel vom 17.09.2022, 21:32 Options
Hallo Karin, Hallo Nigthy
Danke für Eure Beiträge.
Karins bzw Nigthy`s Makro vom 17.09.2010 hat mein Problem gelöst.
Muss dieses nur noch in meine vorhandene Exceltabell einpflegen.
Criteria1:=CStr(Worksheets("Tabelle2").Range("A8") ist der entscheidende Code.
Ich weiß nur noch nicht was CStr tatsächlich bewirkt.( Zahl = Zeichenfolge?) Bin ja auch Anfänger und muß nicht alles verstehen.
Für solche Fälle gibt es ja solche Foren.
Nochmals Danke für Eure Mithilfe
MfG Hubert
Antwort 9 von Beverly vom 17.09.2022, 21:35 Options
Hi Hubert,
CStr wandelt die Zahl in einen String um - weshalb Excel 2010 das so will, bleibt ein Rätsel - Hauptsache, es funktioniert.
Bis später,
Karin
Antwort 10 von Hajo_Zi vom 18.09.2022, 08:00 Options
Hallo Hubert,
beachte nur das die Zeile
.Protect
vor End With hinkommt.
Gruß Hajo
Antwort 11 von nighty vom 18.09.2022, 08:08 Options
hi hajo :-)
*huch* wenn wir dich nicht hätten :-)
das war jetzt schon das zweite mal innerhalb kurzer zeit :-)))
gruss nighty