PDA

Vollständige Version anzeigen : Excel XP Makro läuft nicht


Prian0815
18.04.2009, 07:56
soweit hab ich mein Makro bekommen, aber es tut nich.
Ich will, dass wenn z. B. 4 eingegeben wird in 'G4' die summme (f4:f4) + summe (f2:f3) drin steht, und das bis zur letzten zeile (mit jeweils aktueller Zeilennummer also iteration). Und die gibt er nun schon immer falsch aus (also die< letzte Zeilennummer). da bringt er '15881'statt '170'. Und dann schreibt er mir in 'H12''' =SUMME(F4:F4) + SUMME(F2:F3)'' rein, was ja für 'G4' richtig wäre, da ich '04' eingegeben habe. Aber er müßt das ja eigentlich in 'g4' reinschreiben und dann in die Schleife gehn und weitermachen. macht er aber ned.Ich hab nu auch gedebuggt und die Werte überprüft, seh aber keinen Fehler, vielleicht fällt euch ja was auf oder ein dazu. Bin auch dankbar für alle anderen Tipps.
Wär echt toll hier Hilfe zu erhalten, weil ich mir das Makro für den Osterurlaub vorgenommen hatte und nun nicht weiterkomme.

Sub gesamt_stream()
Dim zelle1 As String
Dim zelle2 As String
Dim actcell As Range
Dim zellnrF As Long
Dim Zellnract As Long
Dim zellnrL As Long
'Dim WS As Worksheet
'WS = ActiveSheet.Name
zellnrF = InputBox("Bitte geben Sie die erste zu summierende ZeilenNummer" & _
"ein (z.B. 8)")
zellnrL = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox zellnrL
Zellnract = zellnrF
zelle1 = ("F" & zellnrF)
zelle2 = ("F" & Zellnract)
ActiveCell = ("G" & Zellnract)
ActiveCell.FormulaLocal = "=SUMME(" & zelle1 & ":" & zelle2 & ") + Summe(F2:F3)"
While Zellnract <= zellenrL
Zellnract = Zellnract + 1
zelle2 = ("F" & Zellnract)
ActiveCell = ("G" & Zellnract)
ActiveCell.FormulaLocal = "=SUMME(" & zelle1 & ":" & zelle2 & ") + Summe(" & _
"F2:F3)"
Wend
End Sub

jinx
18.04.2009, 08:02
Moin, Armin,

ActiveCell = ("G" & Zellnract)
versetzt den Zellzeiger auch nicht...

Ungetestet:
Sub gesamt_stream()
Dim zelle1 As String
Dim zelle2 As String
Dim actcell As Range
Dim zellnrF As Long
Dim Zellnract As Long
Dim zellnrL As Long

'Dim WS As Worksheet
'WS = ActiveSheet.Name
zellnrF = InputBox("Bitte geben Sie die erste zu summierende ZeilenNummer" & _
"ein (z.B. 8)")
zellnrL = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox zellnrL

Zellnract = zellnrF
zelle1 = ("F" & zellnrF)
zelle2 = ("F" & Zellnract)
Range("G" & Zellnract).FormulaLocal = "=SUMME(" & zelle1 & ":" & zelle2 & ") + Summe(F2:F3)"

While Zellnract <= zellenrL
Zellnract = Zellnract + 1
zelle2 = ("F" & Zellnract)
Range("G" & Zellnract).FormulaLocal = "=SUMME(" & zelle1 & ":" & zelle2 & ") + Summe(" & _
"F2:F3)"
Wend

End Sub
Und auf die Verwendung der Variablen zelle1 und zelle2 kann ggf. auch verzichtet werden, indem die Variablen in der Formel direkt angegeben werden.

ransi
18.04.2009, 08:04
HAllo

Ich kann den Code nicht nachvollziehen.
<b>Tabelle1</b><br /><br /><table border="1" cellspacing="0" cellpadding="0" style="font-family:Arial,Arial; font-size:10pt; background-color:#ffffff; padding-left:2pt; padding-right:2pt; "> <colgroup><col style="font-weight:bold; width:30px; " /><col style="width:80px;" /><col style="width:80px;" /></colgroup><tr style="background-color:#cacaca; text-align:center; font-weight:bold; font-size:8pt; "><td >&nbsp;</td><td >G</td><td >H</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >4</td><td style="text-align:right; ">0</td><td >???</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >5</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >6</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >7</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >8</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >9</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >10</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >11</td><td >???</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >12</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >13</td><td >&nbsp;</td><td >&nbsp;</td></tr><tr style="height:17px ;" ><td style="font-size:8pt; background-color:#cacaca; text-align:center; " >14</td><td >&nbsp;</td><td >???</td></tr></table><br /><table style="font-family:Arial; font-size:10pt; border-style: groove ;border-color:#00ff00;background-color:#fffcf9; color:#000000; "><tr><td ><b>Formeln der Tabelle</b></td></tr><tr><td ><table border = "1" cellspacing="0" cellpadding="2" style="font-family:Arial; font-size:9pt;"><tr style="background-color:#cacaca; font-size:10pt;"><td >Zelle</td><td >Formel</td></tr><tr><td >G4</td><td >=SUMME(F4:F4)+SUMME(F2:F3)</td></tr></table></td></tr></table> <br /><br /><span style="font-family:Arial; font-size:9pt; font-weight:bold;background-color:#ffffff; color:#000000; ">Excel Tabellen im Web darstellen &gt;&gt; </span><a style ="font-family:Arial; font-size:9pt; color:#fcf507; background-color:#800040; font-weight:bold;" href="http://www.excel-jeanie-html.de" target="_blank"> Excel Jeanie HTML 4 </a>


Du sagst G4 hat die richtige Formel.
Welche Formel soll in den anderen Zellen stehen ?

ransi

Prian0815
23.04.2009, 14:47
kann leider erst am WE testen, da ich in Stgt auf Arbeit bin und z. Zeit keinen Internetzugang in der dortigen Wohnung habe.
in den Summenzellen(wo also die Formel stehen soll), soll also dies hier stehen, wenn erste zu summierende Zelle = 'F4' ist:
Zelle G4: =SUMME(F4:F4) + Summe(F2:F3)
Zelle G5: =SUMME(F4:F5) + Summe(F2:F3)
Zelle G6: =SUMME(F4:F6) + Summe(F2:F3)
etc.
etc.
etc.

Ich hoffe, dass nun klar ist, was ich erreichen will.

Prian0815
23.04.2009, 14:58
ActiveCell = ("G" & Zellnract)
versetzt den Zellzeiger auch nicht...


ich wollte erreichen, dass er da quasi Zeile für Zeile vom angegebenen Startpunkt 'ZellnrF' (Zelle für Zelle) bis zur letzten Zeile abarbeitet, darum ja auch die Schleife.


Ungetestet:
Sub gesamt_stream()
Dim zelle1 As String
Dim zelle2 As String
Dim actcell As Range
Dim zellnrF As Long
Dim Zellnract As Long
Dim zellnrL As Long

'Dim WS As Worksheet
'WS = ActiveSheet.Name
zellnrF = InputBox("Bitte geben Sie die erste zu summierende ZeilenNummer" & _
"ein (z.B. 8)")
zellnrL = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox zellnrL

Zellnract = zellnrF
zelle1 = ("F" & zellnrF)
zelle2 = ("F" & Zellnract)
Range("G" & Zellnract).FormulaLocal = "=SUMME(" & zelle1 & ":" & zelle2 & ") + Summe(F2:F3)"

While Zellnract <= zellenrL
Zellnract = Zellnract + 1
zelle2 = ("F" & Zellnract)
Range("G" & Zellnract).FormulaLocal = "=SUMME(" & zelle1 & ":" & zelle2 & ") + Summe(" & _
"F2:F3)"
Wend

End Sub
Und auf die Verwendung der Variablen zelle1 und zelle2 kann ggf. auch verzichtet werden, indem die Variablen in der Formel direkt angegeben werden.[/SIZE][/FONT]

das werde ich wie geschrieben am WE zuhause testen. sorry, dass das grad solang dauert, mich nervt's ohne Zugang auch voll.

Prian0815
29.04.2009, 14:19
Bin letztes WE leider nicht zum testen gekommen, aber die Suche nach einer neuen Wohnung im Raum Stgt und andere wichtige Dinge hatten mich voll in Beschlag genommen.
Schön wäre es, wenn mir noch jemand mitteilen könnte, wie ich es denn erreichen kann, dass sich der Zeiger(active.cell) verändert, sprich diese sich innerhalb der Schleife jeweils um eins erhöht. Zudem bräucht ich noch nen möglichst kurzen Coidetipp um die letzte Zeilennummer hertauszufinden, um das Abbruchkritterium vernünftig setzen zu können.
Ich hoffe und denke, dass ich dieses WE mehtr Zeit habe um an dem Prob weiterzuarbeiten.

Prian0815
06.07.2009, 14:46
Bin letztes WE leider nicht zum testen gekommen, aber die Suche nach einer neuen Wohnung im Raum Stgt und andere wichtige Dinge hatten mich voll in Beschlag genommen. .
Nachdem ich nun zwar eine Wohnung habe und diese bislang auch soweit eingerichtet ist, fehlt mir in dieser nur noch der Internetzugang. Wenn ich denn dann mal habe, bin ich auch wieder besser verfügbar.


Schön wäre es, wenn mir noch jemand mitteilen könnte, wie ich es denn erreichen kann, dass sich der Zeiger(active.cell) verändert, sprich diese sich innerhalb der Schleife jeweils um eins erhöht. Zudem bräucht ich noch nen möglichst kurzen Coidetipp um die letzte Zeilennummer hertauszufinden, um das Abbruchkritterium vernünftig setzen zu können.
Ich hoffe und denke, dass ich dieses WE mehtr Zeit habe um an dem Prob weiterzuarbeiten.
Ich habe nun neulich Zuhause erstmall ein anderes Makro in Angriff genommen. Dieses läuft wunderbar. Dabei hab ich rausgefunden, dass ich eine Rangevariable sehr gut mit cstr(ZZ) aufbauen kann.
Die hier von mir gepostete Formel hab ich inzwischen auch angepasst, da das Arbeiten mit festen Zellbezügen z. B. '$A$1' die ganze Arbeit mit der Datei wesentlich erleichtert. Ich möchte das Makro demnächst trotzdem noch fertig stellen und an die neruen Besdürfnisse anpassen. dafür wäre ein kurzer Codetipp um die letzte Zeilennummer herauszufinden noch sehr hilfreich. Ich hatte irgendwann mal was wirklich schönes kurzes hierfür gezeigt bekommen. Ich denke, dass ich bis dahin auch einen vernünftigen Netz-zugang habe und die Lösung hier dann noch posten kann.

jinx
06.07.2009, 16:11
Moin, Prian0815,

für Spalte A
lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row
für Zeile 1
lngLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
eingeschränkt, da sich SpecialCells nach Löschen ohne Speichern nicht verkleinert
MsgBox Cells.SpecialCells(xlCellTypeLastCell).Address
Und über die Find-Mtehode, hier wird aber abweichend der letzte Eintrag gefunden (nicht aber Formeln, die nichts oder "" zurückliefern)...

Prian0815
15.07.2009, 08:02
Hi jinx,
na echt klasse, dass is ma n Beitrag mit dem ich echt was Anfangen kann.
Ich werd das schnellstmöglich ausprobieren, ab 24.07 hab ich dann eh erst mal Urlaub und werd da auch sicher mal dazukommen. Lesen tut sich das schon mal echt Prima, vielen Dank hierfür.

Prian0815
17.09.2009, 16:15
cool, genau dass hier wars - ich mußte die spalte angeben thänx


lngLastRow = Cells(Rows.Count, "C").End(xlUp).Row

hiermit erhalte ich nun die gewünschte letzte Zeilennummer und kann somit meine Schleifenbedingung setzen.
Soirry, das es so lang gedauert hat, aber ich hab grad zienliche Probs mit Job und Gesundheit.