PDA

Vollständige Version anzeigen : visual basics macro in excel


jessica
08.08.2001, 15:02
Hallo, ich brauche dringend Hilfe! Ich versuche gerade in einem Excel file ein Makro einzubauen, dass immer wieder die gleiche Zeile zur Berechnung benutzt. Das Ergebnis lasse ich in eine Zelle schreiben, deren Adresse ich natuerlich gern iterieren moechte, damit jedes neue Ergebnis in die naechste Zelle geschrieben wird und nicht wieder in die gleiche (ich brauche den Ergebniswert von jedem Durchlauf). Wuerde visual basics die Sprache von excel verstehen, wuerde ich mit der "address"-funktion oder der "indirect"-funktion arbeiten, und diese an die visual basic-Funktion "Range" koppeln, etwa so:
Range("Address(G4,5)").Select
Selection Paste usw.
(wobei G4 ein Teil in meiner "Berechnungszeile" ist und der Wert von G4 mit jedem Durchlauf automatisch um 1 erhoeht wird, so dass die Adresse (G4,5) fuer jeden Durchlauf eine andere ist.)
Aber Visual basics versteht das wohl nicht. Drum meine Frage: Gibts ein visual-basics-analogon zu "address" oder "indirect"? Und wenn nicht: Hat jemand eine andere Idee, wie ich den output fuer jeden Durchlauf in eine andere Zelle schreiben lassen koennte?
Waere toll, wenn mir jemand helfen koennte!!!
Jessica

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

Alfons Seeberger
08.08.2001, 16:11
Hallo Jessica,
ich bin mir nicht sicher ob ich dich richtig verstanden habe ...
trag mal in G4 einen Wert ein und laß das Makro zwei- dreimal laufen.
<font size="2" face="Courier New, FixedSys"><blockquote><font color="#0000CC">Sub</font> Do_Loop_3()<font color="#000000">
&nbsp; &nbsp; <font color="#0000CC">Dim</font> i <font color="#0000CC">As Integer</font>
&nbsp; &nbsp; <font color="#0000CC">Dim</font> sum <font color="#0000CC">As Long</font>
</font><font color="#009900">'Addiert die Werte ab Zelle G4 bis zur ersten leeren Zelle</font><font color="#000000">
</font><font color="#009900">'und schreibt unten drunter die Summe.</font><font color="#000000">
&nbsp; &nbsp; sum = 0
&nbsp; &nbsp; i = 4
&nbsp; &nbsp;
&nbsp; &nbsp; <font color="#0000CC">Do Until</font> IsEmpty(Cells(i, 7))
&nbsp; &nbsp; &nbsp; sum = sum + Cells(i, 7)
&nbsp; &nbsp; &nbsp; i = i + 1
&nbsp; &nbsp; <font color="#0000CC">Loop</font>
&nbsp; &nbsp; Cells(i, 7) = sum
&nbsp; &nbsp; Range("G:G").Interior.ColorIndex = xlNone
&nbsp; &nbsp; Cells(i, 7).Interior.ColorIndex = 35
<font color="#0000CC">End Sub</font></font></font></blockquote></font><font face="FixedSys, Courier New">


hilft dir das weiter?
schönen Gruß
Alfons
<a href="http://people.freenet.de/a.seeberger/"><br><img src="http://people.freenet.de/a.seeberger/grafi/allesExcel.gif" alt="" border="0"></a>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag der Link auf die neue HP gesetzt.<font>

jinx
08.08.2001, 22:01
Moin, jessica,

Wuerde visual basics die Sprache von excel verstehen....
und ich dachte immer, dass durch Excel und Makros in Excel nur ein Teil der Möglichkeiten von VBA ausgelotet würde!

Aus der Online Hilfe Excel2000
Offset-Eigenschaft (Range-Objekt)
Gibt ein Range-Objekt zurück, das einen Bereich darstellt, der gegenüber dem angegebenen Bereich versetzt ist. Schreibgeschützt.
Syntax
Ausdruck.Offset(RowOffset, ColumnOffset)
Ausdruck Ein erforderlicher Ausdruck, der ein Range-Objekt zurückgibt.
RowOffset Variant optional. Die Anzahl der Zeilen (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach unten, bei negativen Werten ein Versatz nach oben. Der Standardwert ist 0.
ColumnOffset Variant optional. Die Anzahl der Spalten (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach rechts, bei negativen Werten ein Versatz nach links. Der Standardwert ist 0.
Beispiel:Sub Offset()
Dim i As Integer
Dim j As Integer
j = 0
i = 1
Range("G4").Select
Do While i <= 10
j = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = j + 1
i = i + 1
Loop
End Sub

Beginnt mit dem Startwert aus G4 und addiert in jeder Zeile der Spalte G den Wert 1 hinzu, stoppt in G14 mit um 10 erhöhten Wert. Muss bei Dir natürlich auf Berechnung angepasst werden.
Nicht schön, aber käfert....

<font color="#808080" size="3" face="Arial Black">HTH
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag der Code für dieses Forum und die Signatur angepasst.<font>