Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Makro für Zeile einfügen & Formeln ausfüren
Burkhard
Hallo Forum,
ich bin leider mal wieder an meine Grenzen gestoßen und brauche eure Hilfe im bereich VBA.
ich habe mir hier schon einige kleine Dinge zusammen gebastelt, aber leider fehlt noch etwas.
Folgendes Problem:
Ich mache jeden Tag aus unserem System einen Report, dessen Inhalte Kopiere ich dann in diese Datei.
Die Datei beinhaltet in Spalte "C" das Julianische Datum. In Spalte "O" kommt eine Formel, die dieses datum in ein normales umwandelt, hierzu habe ich auch schon in VBA die Formel, diese läuft aber nochnicht komplett, das Jahr soll für diese Formel fix aus der Zelle "P1" geholt werden.
Weiterhin habe ich das Problem, das die Zahl für das Julianische Datum nicht immer fortlaufent ist, das soll heissen, das auf die 112125 die Zahl 112130 folgen kann (wie in der Beispielmappe) in diesem Fall sollen 4 Zeilen eingefügt werden und die Spalte soll forlaufend durchnummeriert werden, in diesem Fall müßte dann auch in Spalte "K" jeweils in die eingefügte Zeile die Zahl "162281" geschrieben werden.
Das stellt derzeit mein größtes Problem da.
Diese Aufgabe sollte im Makro auch als erstes ausgeführt werden.
Denn wenn das gemacht ist, wäre es klasse, wenn das Makro erkennen würde bis zu wellcher Zeile die Spalten "N,O,P" berechnet sin, denn ab der Zeile soll dann erst wieder berechnet werden und die Werte der Formeln eingefügt werden. Hiermit will ich Rechnerleistung sparen.
Denn in der Orginaldatei bin ich mitlerweile bei Zeille 11000.
Und ich mache diese Aufgaben immer von Hand.
Wäre schön wenn ich das jetzt Automatisch machen könnte.
Ich hoffe ich konnte mein Problem gut beschreiben und ich hoffe ihr könnt mir helfen!!
Grüße Burkhard
https://www.herber.de/bbs/user/80130.xls

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

Betreff
Benutzer
Anzeige
AW: Makro für Zeile einfügen & Formeln ausfüren
14.05.2012 17:07:43
Rolf
Hallo Burkhard,
mein Vorschlag ist vielleicht etwas umständlich, aber bei mir funktionierts.
Sub Einfügen()
Dim z As Long
Range("C2").Select
Do Until ActiveCell.Offset(1, 0) = ""
If ActiveCell.Value + 1  ActiveCell.Offset(1, 0).Value Then
z = ActiveCell.Offset(1, 0).Value - ActiveCell.Value - 1
Do Until z = 0
ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Insert
ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1
ActiveCell.Offset(0, 8).Value = 162281
z = z - 1
Loop
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
Gruß, Rolf
Anzeige
AW: Makro für Zeile einfügen & Formeln ausfüren
14.05.2012 19:10:29
Burkhard
Hallo Rolf,
danke für deine Antwort!
Habe den Code bei mir in die Datei eingefügt, aber leider sagt er Laufzeitfeler 13,
Typen unverträglich
Dafür bin ich in VBA zu schwach um solche fehler rauszufinden, kannst du mir weiterhelfen.
So sieht der Code jetzt aus:
Grüße Burkhard
Private Sub CommandButton1_Click()
'Sub Einfügen()
Dim z As Long
Range("C2").Select
Do Until ActiveCell.Offset(1, 0) = ""
If ActiveCell.Value + 1  ActiveCell.Offset(1, 0).Value Then
z = ActiveCell.Offset(1, 0).Value - ActiveCell.Value - 1
Do Until z = 0
ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Insert
ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1
ActiveCell.Offset(0, 8).Value = 162281
z = z - 1
Loop
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
'End Sub

'Text in Zahl umwandeln
'**************************************************************************
Dim intSpalten() As Variant 'Array enthält die Spaltennummern
Dim i As Integer
ReDim intSpalten(1 To 20)
intSpalten() = Array(5, 6, 7, 8, 11, 13)
Range("AN1") = 1
Range("AN1").Copy
For i = LBound(intSpalten) To UBound(intSpalten)
Range(Cells(3, intSpalten(i)), Cells(Cells(Rows.Count, 1).End(xlUp).Row, intSpalten(i))) _
_
.PasteSpecial _
Paste:=xlPasteAll, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
Next i
Range("A1:P65536").Select
With Selection.Font
.Name = "Calibri"
.Size = 8
Rows("1:65536").RowHeight = 12
End With
Worksheets("Tabelle1").Range("N2:N65536").End(xlDown).Offset(1, 0).Select
Do
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],Lieferantendatei!C1:C2,2,FALSE)"
ActiveCell.Offset(columnOffset:=1).Activate
ActiveCell.FormulaR1C1 = "=DATE(IF(0+(LEFT(RC[-12],2)) ActiveCell.Offset(columnOffset:=1).Activate
ActiveCell.FormulaR1C1 = "=DATE(IF(0+(LEFT(RC[-13],2)) Worksheets("Tabelle1").Range("N2:N65536").End(xlDown).Offset(1, 0).Select
Loop Until ActiveCell.Offset(columnOffset:=-1) = ""
End Sub
Anzeige
AW: Makro für Zeile einfügen & Formeln ausfüren
14.05.2012 20:12:14
Rolf
Hallo Burkhard,
ehrlich gesagt, allzu viel Ahnung von VBA hab ich auch nicht. allerdings verwirren mich die
beiden Unterstriche bei folgendem Befehl. Tritt da evtl. der Fehler auf?
Range(Cells(3, intSpalten(i)), Cells(Cells(Rows.Count, 1).End(xlUp).Row, intSpalten(i))) _
_
.PasteSpecial
Habe den Teil "Einfüge-Makro" nochmal bei mir laufen lassen, ohne dass ein Fehler auftrat.
Falls du nicht weiter kommst, markiere deine Frage doch nochmal als offen.
Gruß, Rolf
AW: Makro für Zeile einfügen & Formeln ausfüren
14.05.2012 20:45:32
Burkhard
Hallo Rolfund alle anderen Forum Leute!!!
so habe deinen Code zum Teil am laufen gebracht.
Der Fehler lag daran, das er schon ab Zeile 2 anfing.
Und genau da ist ein hauptproblem, das Rechnen dauert somit zu lange!
Der Code Sollte immer erst ab der letzten beschriebenen Zelle in Spalte "N" anfangen, alles davor sollte nicht mehr berücksichtigt werden.
Nach dem Berechnen der neu eingefügten Zeilen soll er dann die Berechneten Ergebnisse als Werte einfügen.
Danke für eure Hilfe, Burkhard
Private Sub CommandButton1_Click()
'Sub Einfügen()
Dim z As Long
Range("C3").Select
Do Until ActiveCell.Offset(1, 0) = ""
If ActiveCell.Value + 1  ActiveCell.Offset(1, 0).Value Then
z = ActiveCell.Offset(1, 0).Value - ActiveCell.Value - 1
Do Until z = 0
ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Insert
ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1
ActiveCell.Offset(0, 8).Value = 162281
z = z - 1
Loop
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
'End Sub

'Text in Zahl umwandeln
'**************************************************************************
Dim intSpalten() As Variant 'Array enthält die Spaltennummern
Dim i As Integer
ReDim intSpalten(1 To 20)
intSpalten() = Array(5, 6, 7, 8, 11, 13)
Range("AN1") = 1
Range("AN1").Copy
For i = LBound(intSpalten) To UBound(intSpalten)
Range(Cells(3, intSpalten(i)), Cells(Cells(Rows.Count, 1).End(xlUp).Row, intSpalten(i))) _
_
.PasteSpecial _
Paste:=xlPasteAll, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
Next i
Range("A1:P65536").Select
With Selection.Font
.Name = "Calibri"
.Size = 8
Rows("1:65536").RowHeight = 12
End With
Worksheets("Tabelle1").Range("N2:N65536").End(xlDown).Offset(1, 0).Select
Do
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],Lieferantendatei!C1:C2,2,FALSE)"
ActiveCell.Offset(columnOffset:=1).Activate
ActiveCell.FormulaR1C1 = "=DATE(IF(0+(LEFT(RC[-12],2)) ActiveCell.Offset(columnOffset:=1).Activate
ActiveCell.FormulaR1C1 = "=DATE(IF(0+(LEFT(RC[-13],2)) Worksheets("Tabelle1").Range("N2:N65536").End(xlDown).Offset(1, 0).Select
Loop Until ActiveCell.Offset(columnOffset:=-1) = ""
End Sub
Anzeige
AW: Makro für Zeile einfügen & Formeln ausfüren
15.05.2012 08:38:45
Rolf
Hallo Burkhard,
meinst du vielleicht so:
Sub Einfügen()
Dim z As Long
Range("N2").Select
Selection.End(xlDown).Offset(0, -11).Select
'Range("C2").Select >diese Zeile kannst du löschen
Do Until ActiveCell.Offset(1, 0) = ""
usw...
Gruß, Rolf

335 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige