Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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

Makrolaufzeit

Makrolaufzeit
30.10.2017 19:11:38
Bernd
Hallo zusammen,
habe plötzlich ein Problem mit der Laufzeit eines Makro.
Nachfolgendes Makro läuft ...
Userbild
Hier ist das Makro ...
Sub TextInZahl()
Dim X As Byte
With Worksheets("DAX")
For X = 2 To 31
.Cells(X, 2) = CDbl(.Cells(X, 2))
.Cells(X, 2).NumberFormat = "#,##0.00"
Next
End With
With Worksheets("MDAX")
For X = 2 To 51
.Cells(X, 2) = CDbl(.Cells(X, 2))
.Cells(X, 2).NumberFormat = "#,##0.00"
Next
End With
With Worksheets("TECDAX")
For X = 2 To 31
.Cells(X, 2) = CDbl(.Cells(X, 2))
.Cells(X, 2).NumberFormat = "#,##0.00"
Next
End With
With Worksheets("DOWJONES")
For X = 2 To 31
.Cells(X, 2) = CDbl(.Cells(X, 2))
.Cells(X, 2).NumberFormat = "#,##0.00"
Next
End With
End Sub
Kann mir jemand vielleicht das Makro umbauen, bekomme es selber nicht hin.
Danke im Voraus.
Userbild
Office Version 2016 Pro 32bit - Windows10 Pro 64 bit
"Wenn du jemanden ohne Lächeln triffst, schenke ihm dein's!"

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nun ja
30.10.2017 19:28:16
lupo1

Sub TextInZahl()
With Worksheets("DAX").Range("B2:B31")
.Value = CDbl(.Value)
.NumberFormat = "#,##0.00"
End With
With Worksheets("MDAX").Range("B2:B51")
.Value = CDbl(.Value)
.NumberFormat = "#,##0.00"
End With
With Worksheets("TECDAX").Range("B2:B31")
.Value = CDbl(.Value)
.NumberFormat = "#,##0.00"
End With
With Worksheets("DOWJONES").Range("B2:B31")
.Value = CDbl(.Value)
.NumberFormat = "#,##0.00"
End With
End Sub
- Das geht noch kürzer mit Unterprogramm
- die CDbl-Umwandlung ist vermutlich falsch, da Zellen meistens eh schon so sind (Variant)
- Arrayzuweisungen habe ich mir mal verkniffen
- Warum wird überhaupt immer alles erneut zugewiesen?
Anzeige
AW: nun ja
30.10.2017 19:35:32
Bernd
Hallo Lupo,
Danke für deine Bemühungen, leider bekomme ich eine Fehlermeldung "Typen unverträglich"
Wo liegt der Fehler?
 Warum wird überhaupt immer alles erneut zugewiesen?
Die Daten kommen von einer Webabfrage und werden als Text übermittelt, daher das Makro.
Lieben Gruß
Bernd
mein Fehler ...
30.10.2017 19:37:34
lupo1
die Typumwandlungsfunktionen sind eigentlich für Variablen. Sie funktionieren auch für einzelne Zellen, aber nicht für eine Bereichszuweisung.
Habe davon nichts getestet.
AW: Makrolaufzeit
30.10.2017 19:51:17
Sepp
Hallo Bernd,
ungetestet!
Sub TextInZahl()
On Error GoTo ErrorHandler
With Application
  .Calculation = xlCalculationManual
  .EnableEvents = False
  .ScreenUpdating = False
End With
With Worksheets("DAX")
  .Range("X1") = 1
  .Range("X1").Copy
  With .Range("B2:B31")
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
    .NumberFormat = "#,##0.00"
  End With
  .Range("X1").Clear
End With
With Worksheets("MDAX")
  .Range("X1") = 1
  .Range("X1").Copy
  With .Range("B2:B51")
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
    .NumberFormat = "#,##0.00"
  End With
  .Range("X1").Clear
End With
With Worksheets("TECDAX")
  .Range("X1") = 1
  .Range("X1").Copy
  With .Range("B2:B31")
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
    .NumberFormat = "#,##0.00"
  End With
  .Range("X1").Clear
End With
With Worksheets("DOWJONES")
  .Range("X1") = 1
  .Range("X1").Copy
  With .Range("B2:B31")
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
    .NumberFormat = "#,##0.00"
  End With
  .Range("X1").Clear
End With
ErrorHandler:
With Application
  .Calculation = xlCalculationAutomatic
  .EnableEvents = True
  .ScreenUpdating = True
  .CutCopyMode = False
End With
End Sub

Gruß Sepp

Anzeige
AW: Makrolaufzeit
30.10.2017 21:06:37
Bernd
Hallo Sepp,
Danke für deine Bemühungen. Leider funktioniert es nicht. Kann immer nocht nicht mit den Werten rechnen. Wenn ich z.B. eine Zelle mit 5 mal nehme dann erhalte ich "Wert" anstatt die Summe.
Fällt dir noch etwas ein?
Lieben Gruß
Bernd
AW: Makrolaufzeit
30.10.2017 21:49:00
Sepp
Hallo Bernd,
lade mal eine Originaltabelle hoch.
Gruß Sepp

AW: Makrolaufzeit
30.10.2017 22:24:01
Bernd
Hallo Sepp,
Mustermappe hochgeladen weiter unter.
Lieben Gruß
Bernd
AW: Makrolaufzeit
30.10.2017 21:53:16
Daniel
Hi
probier mal die Umwandlung mit TEXT IN SPALTEN.
auch das kann Texte, die wie Zahlen aussehen, in echte Zahlen wandeln und ist dabei sehr schnell solange sich die Werte in einer Spalte befinden:
Sub test()
Dim Blätter
Dim EZeile
Dim i As Long
Blätter = Array("Dax", "MDax", "TecDax", "DowJones")
EZeile = Array(31, 51, 31, 31)
For i = 0 To UBound(Blätter)
With Sheets(Blätter(i)).Range("B2:B" & EZeile(i))
.TextToColumns _
Destination:=.Cells(1, 1), _
DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 1), _
DecimalSeparator:=",", _
ThousandsSeparator:=".", _
TrailingMinusNumbers:=True
.NumberFormat = "#,##0.00"
End With
Next
End Sub

Bitte noch Dezimal- und Tausendertrennzeichen an der passenden Stelle entsprechend einstellen.
Gruß Daniel
Anzeige
AW: Makrolaufzeit
30.10.2017 22:56:49
Daniel
wenn es dir gelingt, mit unserer Hilfe deine Gewinne zu vervielfachen, beteiligst du und dann entsprechen?
Gruß Daniel
AW: Makrolaufzeit
30.10.2017 23:48:57
Bernd
Hallo Daniel,
ich würde sagen, dass wenn irgendwann Gewinne entstehen sollten, dann ließe sich darüber reden.
Guts Nächtle, gelle
Bernd
AW: Makrolaufzeit
31.10.2017 01:27:54
Daniel
dann so, denn nach den Zahlenwerten steht immer das geschützte Leerzeichen:

Sub test()
Dim Blätter
Dim EZeile
Dim i As Long
Blätter = Array("Dax", "MDax", "TecDax", "DowJones")
EZeile = Array(31, 51, 31, 31)
For i = 0 To UBound(Blätter)
With Sheets(Blätter(i)).Range("B2:B" & EZeile(i))
.TextToColumns _
Destination:=.Cells(1, 1), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, OtherChar:=Chr(160), _
FieldInfo:=Array(Array(1, 1), Array(2, 9)), _
DecimalSeparator:=",", _
ThousandsSeparator:=".", _
TrailingMinusNumbers:=True
.NumberFormat = "#,##0.00"
End With
Next
End Sub
Gruß Daniel
Anzeige
AW: Makrolaufzeit
31.10.2017 23:30:38
Bernd
Hallo Daniel,
da soll mal einer sagen, du kannst das nicht, der kriegt gleich mit mir zu tun, gelle!
Wir sagen wir Bremer "spitzenmäßig"
Danke sehr für deine Bemühungen :-)
Lieben Gruß
Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige