Supportnet / Forum / Tabellenkalkulation
Nur markierten Bereich berechnen und ausdrucken
Frage
Moin an Alle!
So sieht die Sache z. Zt. aus:
Ich markiere einen, nicht immer gleich großen Bereich auf einem Tabellen Blatt und drucke die Markierung aus.
Nun möchte ich:
Das wenn ich einen Bereich zum ausdrucken markiere, in dieser Markierung mehrere Berechnungen stattfinden z.B. Gesammtsumme, Qudratmeter usw.
Ist so etwas, evtl. über ein Makro, möglich?
Besten Dank im voraus!
Rainer B.
Antwort 1 von Guenter
Hallo,
ja das geht.
Bei diesem Beispiel-Makro werden die markieren Zellen addiert und das Ergebnis in A1 geschrieben:
Gruß
Günter
ja das geht.
Bei diesem Beispiel-Makro werden die markieren Zellen addiert und das Ergebnis in A1 geschrieben:
Option Explicit
Sub test()
Dim cell As Range
If Selection Is Nothing Then Exit Sub
For Each cell In Selection.Cells
Cells(1, 1).Value = Cells(1, 1).Value + cell.Value
Next cell
End Sub
Gruß
Günter
Antwort 2 von Rainer B.
Danke das klappt wenn ich eine Spalte markiere.
Ich muß aber mehrere Spalten zum ausdrucken markieren und davon soll er aus Spalte "D", in der sich evtl. auch Text als Überschrift befindet, die Summe errechnen. Wenn möglich soll auch nach dem Ausdruck die Summe wieder auf Null gehen.
Ich weiß es ist vielleicht ein außergewöhnlicher Wunsch, aber evtl. kennt jemand eine Lösung.
Besten Dank in voraus!
Rainer B.
Antwort 3 von nighty
hi alle :)
dann so vielleicht :)
gruss nighty
Sub makro01()
With Worksheet
On Error GoTo fehler
For t% = Selection.Column To Selection.Column + Selection.Columns.Count - 1
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
summe = summe + Cells(t1%, t%)
Next t1%
Next t%
End With
Beenden = _
MsgBox("Ergebnis der Addition des Markierten Bereiches " & Chr$(10) & Chr$(10) & summe & _
OK)
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
dann so vielleicht :)
gruss nighty
Sub makro01()
With Worksheet
On Error GoTo fehler
For t% = Selection.Column To Selection.Column + Selection.Columns.Count - 1
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
summe = summe + Cells(t1%, t%)
Next t1%
Next t%
End With
Beenden = _
MsgBox("Ergebnis der Addition des Markierten Bereiches " & Chr$(10) & Chr$(10) & summe & _
OK)
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
Antwort 4 von nighty
hi alle :)
oder so vor dem drucken aktiv
gruss nighty
einzufuegen alt f11 (vbeditor)/projektexplorer/tabelle1 alternativ mappe
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Sub makro01()
With Worksheet
On Error GoTo fehler
For t% = Selection.Column To Selection.Column + Selection.Columns.Count - 1
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
summe = summe + Cells(t1%, t%)
Next t1%
Next t%
End With
Beenden = _
MsgBox("Ergebnis der Addition des Markierten Bereiches " & Chr$(10) & Chr$(10) & summe & _
OK)
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
End Sub
oder so vor dem drucken aktiv
gruss nighty
einzufuegen alt f11 (vbeditor)/projektexplorer/tabelle1 alternativ mappe
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Sub makro01()
With Worksheet
On Error GoTo fehler
For t% = Selection.Column To Selection.Column + Selection.Columns.Count - 1
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
summe = summe + Cells(t1%, t%)
Next t1%
Next t%
End With
Beenden = _
MsgBox("Ergebnis der Addition des Markierten Bereiches " & Chr$(10) & Chr$(10) & summe & _
OK)
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
End Sub
Antwort 5 von Rainer B.
@nighty
Wie ich lese gibst Du die Summe in einer MsgBox aus. Ich brauchte die Summe z.b. in Zelle A1, da aus der Summe auch noch die Quadratmeter und das Gewicht in Kilo ausgerechnet werden muss.
Danke und Grüße an alle
Rainer B.
Antwort 6 von nighty
hi alle :)
ausgabe der addition zelle a1
gruss nighty
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Sub makro01()
With Worksheet
On Error GoTo fehler
For t% = Selection.Column To Selection.Column + Selection.Columns.Count - 1
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
Cells(1,1) = Cells(1,1) + Cells(t1%, t%)
Next t1%
Next t%
End With
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
End Sub
ausgabe der addition zelle a1
gruss nighty
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Sub makro01()
With Worksheet
On Error GoTo fehler
For t% = Selection.Column To Selection.Column + Selection.Columns.Count - 1
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
Cells(1,1) = Cells(1,1) + Cells(t1%, t%)
Next t1%
Next t%
End With
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
End Sub
Antwort 7 von Rainer B.
Moin Nighty,
anscheinend bin ich zu dumm um deine Vorschlag einzubauen. Ich kann machen was ich will, es wird nichts berechnet.
Muß ich in Deinem Makro noch irgend wo angeben welche Spalte er berechnen soll?
Gruß
Rainer B.
Antwort 8 von Rainer B.
@nighty,
noch mal versucht und er rechnet. Nur in meiner Tabelle befinden sich auch Überschriften und andere Zahlen wie z.B. das Datum. Damit kommt das Makro beim berechnen durcheinander. Könnte man nicht eine bestimmte Spalte, ob wohl mehrere markiert sind, zum berechnen vorgeben?
z.B. Ich markiere von A2 bis G40 und aus der Markierung soll nur die Spalte D vor dem Drucken berechnet werden.
Ich kann mir vorstellen das es für Dich schwer zu verstehen ist, wenn man das Tabellenblatt nicht vor sich liegen hat.
Besten Dank
Rainer B.
Antwort 9 von nighty
hi rainer :)
ups Sub makro01() und einmal endsub waren zuviel :(
gruss nighty
nach deinen vorstellungen dann so ,bei einer beliebigen markierung(mehr als 1 zelle markiert) wird vor dem druck berechnet und in a1 ausgegeben
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Len(ActiveWindow.RangeSelection.Address) > 4 Then
rem hier von bis (zeilen)angeben ,zur zeit von 1 bis 5
For t = 1 To 5
Range("A1") = Range("A1") + Range("D" & t)
Next t
End If
End Sub
ups Sub makro01() und einmal endsub waren zuviel :(
gruss nighty
nach deinen vorstellungen dann so ,bei einer beliebigen markierung(mehr als 1 zelle markiert) wird vor dem druck berechnet und in a1 ausgegeben
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Len(ActiveWindow.RangeSelection.Address) > 4 Then
rem hier von bis (zeilen)angeben ,zur zeit von 1 bis 5
For t = 1 To 5
Range("A1") = Range("A1") + Range("D" & t)
Next t
End If
End Sub
Antwort 10 von Rainer B.
hi nighty,
erst einmal besten Dank für Deine Mühe und Nerven mit mir!!!
Jetzt habe ich Deinen letzten Vorschlag eingebaut und nun kommt die Meldung
"Typen unverträglich"
Gruß
Rainer
Antwort 11 von nighty
hi rainer :)
das liegt an deinem spaerlichen infos :)
gruss nighty
p.s.
zur vorsicht,datum verboten,darum ja die bereichsangabe
Private Sub Workbook_BeforePrint(Cancel As Boolean)
On Error GoTo fehler
If Len(ActiveWindow.RangeSelection.Address) > 4 Then
rem hier von bis (zeilen)angeben ,zur zeit von 1 bis 5
For t = 1 To 5
Range("A1") = Range("A1") + Range("D" & t)
Next t
End If
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
das liegt an deinem spaerlichen infos :)
gruss nighty
p.s.
zur vorsicht,datum verboten,darum ja die bereichsangabe
Private Sub Workbook_BeforePrint(Cancel As Boolean)
On Error GoTo fehler
If Len(ActiveWindow.RangeSelection.Address) > 4 Then
rem hier von bis (zeilen)angeben ,zur zeit von 1 bis 5
For t = 1 To 5
Range("A1") = Range("A1") + Range("D" & t)
Next t
End If
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
Antwort 12 von Rainer B.
@ nighty
Noch mal besten Dank für Deine Geduld. Mit den Infos verstehe ich dich, ist ja alles nicht so einfach zu erklären.
Darf ich Dir evtl. eine Musterdatei per Mail zuschicken?
Gruß
Rainer
Antwort 13 von nighty
hi rainer :)
wenn es nicht zu umfangreich wird,dann schick mal :)
gruss nighty
wenn es nicht zu umfangreich wird,dann schick mal :)
gruss nighty
Antwort 14 von Rainer B.
soeben geschehen!
Gruß
Rainer
Antwort 15 von nighty
hi alle
die gewuenschte loesung sah dann so aus :)
in einem commandbutton erstellt
gruss nighty
Private Sub CommandButton1_Click()
With Worksheet
On Error GoTo fehler
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
summe = summe + Cells(t1%, 4)
Next t1%
End With
Cells(2, 1) = summe
Selection.PrintOut Copies:=1, Collate:=True
Cells(2, 1) = 0
Cells(2, 1).Select
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
die gewuenschte loesung sah dann so aus :)
in einem commandbutton erstellt
gruss nighty
Private Sub CommandButton1_Click()
With Worksheet
On Error GoTo fehler
For t1% = Selection.Row To Selection.Row + Selection.Rows.Count - 1
summe = summe + Cells(t1%, 4)
Next t1%
End With
Cells(2, 1) = summe
Selection.PrintOut Copies:=1, Collate:=True
Cells(2, 1) = 0
Cells(2, 1).Select
fehler:
If Err = 13 Then
t1% = t1% + 1
Resume Next
End If
End Sub
Antwort 16 von Rainer B.
@nighty
falls Du hier noch mal im Forum vorbeischaust, hätte die Nervensäge Rainer noch mal 2 Fragen:
1.Kann man den Button zum Drucken vergrößern und wenn ja wie?
2.Kann man die Bezeichnung des Button (z.Zt. Drucken) auch umbenennen und wenn ja wie?
Ansonsten funzt es prima.
Gruß
Rainer
Antwort 17 von nighty
hi rainer :)
vergroesserung
Ansicht/Symbolleisten/Steuerelement-Toolbox dort entwurfsmodus anwaehlen,commandbutten selectieren,anhand der aeusseren kleinen karos die groesse veraenderbar ist.
namensaenderung
bis zur selectierung wie oben ,dann rechtsclick auf den selectierten button und dort eigenschaften anwaehlen,achte zeile sollte der name zu sehen sein(zur zeit "Drucken"),das wort Drucken mit doppelclick anwaehlen und den wuenschen anzupassen ist :)
gruss nighty
p.s.
oder eine vb loesung falls lieber ist :),doch glaub ich ist nicht von noeten ist,da ich ja die tabelle ein wenig kenne :)
vergroesserung
Ansicht/Symbolleisten/Steuerelement-Toolbox dort entwurfsmodus anwaehlen,commandbutten selectieren,anhand der aeusseren kleinen karos die groesse veraenderbar ist.
namensaenderung
bis zur selectierung wie oben ,dann rechtsclick auf den selectierten button und dort eigenschaften anwaehlen,achte zeile sollte der name zu sehen sein(zur zeit "Drucken"),das wort Drucken mit doppelclick anwaehlen und den wuenschen anzupassen ist :)
gruss nighty
p.s.
oder eine vb loesung falls lieber ist :),doch glaub ich ist nicht von noeten ist,da ich ja die tabelle ein wenig kenne :)
Antwort 18 von nighty
hi alle :)
es waere noch generell zu sagen das ein makroaufruf im butten statt des codes z.b. call makroname im allgemeinen besser waere,weil nicht alle vb befehle tabellenduebergreifen sind,da in diesem falle nur ein sheet benutzt wird spielt dies also keine rolle :).
gruss nighty
es waere noch generell zu sagen das ein makroaufruf im butten statt des codes z.b. call makroname im allgemeinen besser waere,weil nicht alle vb befehle tabellenduebergreifen sind,da in diesem falle nur ein sheet benutzt wird spielt dies also keine rolle :).
gruss nighty
Antwort 19 von Rainer B.
Danke nighty,
auch diese Erklärung war wieder super. Hat sofort geklappt.
Besten Dank
Rainer