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

Einfügen per Makro Problem

Einfügen per Makro Problem
06.01.2020 12:04:34
Tobias
Hallo!
Ich kopiere Messwerte normalerweise von Hand in eine Tabelle, das klappt einwandfrei, ich kann mit den Zahlen Summen berechnen usw.
Wenn ich die Werte per Makro einfüge, werden die Ziffern eingefügt und hintendran sind zwei Leerzeichen. Damit kann ich natürlich keine Berechnungen durchführen und Format ändern klappt auch nicht.
Hier ein Beispiel, die ersten drei Zeilen wurden von Hand eingefügt, die drei letzten per Makro (activesheet.paste).
https://www.herber.de/bbs/user/134195.xlsx

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

Betreff
Datum
Anwender
Anzeige
AW: Einfügen per Makro Problem
06.01.2020 12:11:10
Zwenn
Hallo Tobias,
Du hast Dein Makro nicht mit gepostet. Aber Du kannst die einzufügenden Werte mit der Funktion Trim() kapseln und x1 nehmen, damit sie nicht als Text eingefügt werden. Trim() löscht führende und schließende Leerzeichen einer Zeichenkette.
Sheets(TabellenName).Cells(Zeile, Spalte).Value = Trim(DeinWert) * 1
Viele Grüße,
Zwenn
AW: Einfügen per Makro Problem
06.01.2020 12:37:53
Tobias
Hallo Zwenn,
das hört sich sehr gut an, Dankeschön! Das werde ich mal probieren.
Ich bin noch nicht weit gekommen mit meinem Makro, weil das schon nicht geklappt hat :) Ich bin noch Anfänger und wurstele bisher immer rum mit Schnipseln aus dem Netz und dem Rekorder. Bis jetzt hat das immer ganz gut geklappt. Ich habe aber vor mir ein paar solide Grundlagen beizubringen.
Sub Maktest()
Range("C3000").End(xlUp).Select
ActiveSheet.PasteSpecial
Selection.Resize(numrows + 1, numcolumns + 1).Select
Rows(ActiveCell.Row).Delete
End Sub
Die Werte sollen eingefügt werden, die erste Zeile davon ist die Kopfzeile mit Überschriften, diese wird gelöscht. Die Werte werden umgerechnet auf einem anderen Blatt, von dort sollen die umgerechneten Werte dann später noch in eine andere Mappe eingefügt werden.
Gruß Tobias
Anzeige
AW: Einfügen per Makro Problem
06.01.2020 14:40:13
fcs
Hallo Tobias,
probiere dein Makro mal mit meinne Ergänzungen.
LG
Franz
Sub Maktest()
Dim wks As Worksheet
Dim rngZiel As Range
Dim Zeile As Long, Zeile_L As Long, Spalte_L As Long
Dim strText
Set wks = ActiveSheet
With wks
Set rngZiel = .Range("C3000").End(xlUp)
rngZiel.Select
Zeile = rngZiel.Row
ActiveSheet.PasteSpecial
'welchen Zweck haben die Variablen "numrows" und "numcolumns" ?
Selection.Resize(numrows + 1, numcolumns + 1).Select
Rows(ActiveCell.Row).Delete
Zeile_L = .UsedRange.Row + .UsedRange.Rows.Count - 1
Spalte_L = .UsedRange.Column + .UsedRange.Columns.Count - 1
For Each rngZiel In .Range(.Cells(Zeile, 3), .Cells(Zeile_L, Spalte_L)).Cells
strText = rngZiel.Text
strText = Trim(strText)
If IsNumeric(strText) Then rngZiel.Value = CDbl(strText)
Next
End With
End Sub

Anzeige
AW: Einfügen per Makro Problem
07.01.2020 10:24:21
Tobias
Hallo Franz!
ES KLAPPT!
Mit trim hat es nicht funktioniert. Es sind auch nicht wirklich Leerzeichen die eingefügt werden. Wenn ich in die Zelle klicke, bzw. F2 und Enter, dann kann Excel damit rechnen. Dh. die Summenformel erkennt dann genau diese Zelle. Das was aussieht wie Leerzeichen (im Editor sind es Tabulatoren) verschwindet dann einfach. Sehr seltsam. Würde mich interessieren ob das in einer anderen Excel-Version auch passiert.
Es dauert nur recht lang (ca. 30s) bis dein Makro druch ist, bei 4 Zeilen A-AJ. das ist es was ich meistens einfüge. Und das drei mal pro Analyse.
In den ersten Spalten A-0 steht nur Text. Wie kriege ich es hin, dass er nur die Spalten P-AI durchgeht?
Zu deinem Kommentar zu den Variablen: Ich habe ehrlich gesagt jetzt erst begriffen dass es Variablen sind. :-) Ziel ist es eigentlich nur die erste Zeile zu löschen. Ich werkle rum mit Sachen die ich noch nicht ganz verstehe, aber ich bin bemüht zu lernen. Ich bin auch dankbar für gute Bücher, Seiten und Kanäle für Anfänger.
Vielen Dank für die Mühe! Ich probiere mal weiter und versuche mal deine Lösung zu verstehen.
Gruß Tobias
Anzeige
AW: Einfügen per Makro Problem
09.01.2020 17:45:14
fcs
Hallo Tobias,
genaue Hilfe ist ja immer nur möglich, wenn die Beispiel-Datei die Realität genau wiederspiegelt.
In deiner Beispieldatei sind in den Problemzellen jedefals 2 Leerzeichen hinter den Zahlen und keine Tabs.
Ich hab mein Makro angepasst, so dass nir in den Spalten P bis AI die Zahlenumwandlung erfolgt.
Zusätzlich wird während der Ausführung des Makros zeitweise die Bildschirmaktualisierung deaktiviert und der Berechnungsmodus auf manuell gesetzt.
Du hast in deiner Beispieldatei auch eine Spalte mit Datums/Zeit-Werten. Diese stehen als Text in den Zellen und sollten ggf. in Excel-Zeitwerte konvertiert werden.
LG
Fanz
hier das angepasste Makro mit Kommentaren zum besseren Verständmis für dich.
Sub Maktest()
Dim wks As Worksheet
Dim rngZiel As Range
Dim Zeile As Long, Zeile_L As Long
Dim Spalte_1 As Long, Spalte_L As Long
Dim strText As String
Dim StatusCalc As Long
Set wks = ActiveSheet
With wks
'letzte Zelle mit Inhalt in Spalte C ermitteln
Set rngZiel = .Range("C3000").End(xlUp)
'nächste freie Zeile in Spalte C setzen = 1 Zelle unterhalb
Set rngZiel = rngZiel.Offset(1, 0)
'freie Zelle selektieren
rngZiel.Select
'Nr. der 1. Einfügezeile merken
Zeile = rngZiel.Row
'Inhalt aus Zwischenablage einfügen
ActiveSheet.PasteSpecial
'Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation 'Berechnungsmodus merken
.Calculation = xlCalculationManual
End With
'1. eingefügte Zeile löschen
.Rows(Zeile).Delete Shift:=xlShiftUp
'letzte benutzte Zeile nach dem Einfügen ermitteln
Zeile_L = .UsedRange.Row + .UsedRange.Rows.Count - 1
'neue letzte Zeile mit Inhalt in Spalte C
Zeile_L = .Cells(.Rows.Count, 3).End(xlUp).Row
'in Spalten P bis AI die Zahlen mit Text (Leerzeichen oder Tabs) in Zahlen umwandeln
Spalte_1 = .Range("P1").Column
Spalte_L = .Range("AI1").Column
For Each rngZiel In .Range(.Cells(Zeile, Spalte_1), .Cells(Zeile_L, Spalte_L)).Cells
strText = rngZiel.Text
'Tab-Zeichen im Zellinhalt entfernen - durch Leerstring ersetzen
strText = Replace(strText, Chr(9), "")
'Leerzeichen am Anfang/Ende des Textes entfernen
strText = Trim(strText)
'ggf. Ziffernfolge in Zahl umwandeln und in Zelle eintragen.
If IsNumeric(strText) Then rngZiel.Value = CDbl(strText)
Next
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
End With
End Sub

Anzeige
AW: Einfügen per Makro Problem
06.01.2020 12:23:38
fcs
Hallo Tobias,
das Problem liegt hier wohl an 2 Stellen.
1. In der Quelle sind die Daten als Text vorhanden.
2. Beim Einfügen per Makro werden andere Optionen verwendet als beim Einfügen von Hand.
Wahrscheinlich mussen die Daten im Makro per ActiveCell.PasteSpecial mit der passenden Option eingefügt werden.
Hast du das Einfügen der Daten mit dem Makro-Recorder aufgezeichnet?
Deine Beispieldatei hilft hier nicht weiter.
Für eine konkrete Hilfe bräuchte man die zu kopieren Daten im Original. Excel geht manchmal seltsame Wege und die sind bei manuellen Aktionen und Makro-Aktionen nicht immer identisch.
LG
Franz
Anzeige
AW: Einfügen per Makro Problem
06.01.2020 12:43:35
Tobias
Hallo Franz!
Ich kann die Quelle nicht mitliefern, ich markiere die Werte direkt in der Software welche die Ergebnisse liefert.
Mit dem Rekorder ist das Problem das gleiche, hier habe ich angefangen selbst zu stricken/klauen. ;-)
Gruß Tobias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige