Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
224to228
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
224to228
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktionsaufruf

Funktionsaufruf
26.02.2003 13:01:41
Bernhard
To @ll,

habe folgendes Script:

Sub Währung()

Dim i%, rw%
rw = Cells(Rows.Count, 3).End(xlUp).Row
For i = 5 To rw
If Range("K" & i).Value = "" Then
!!!!Hier soll der Aufruf erfolgen!!!!
ElseIf Range("K" & i).Value >= "0" Then
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
Next i

Range("A1").Select
End Sub

Function RechnenFirst()

If Range("C" & i).Value = "" Or Range("C" & i).Value = "Gewinn" Or Range("C" & i).Value = "Verlust" Then
Else:
Range("D" & i).Select
Selection.Copy
Range("K" & i).Select
ActiveSheet.Paste
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
Next i
End Function

Ich möchte in der Sub die Function nach der ersten Bedingung aufrufen lassen! Wie funzt das? Passt der Rest?

Gruß Bernhard


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Funktionsaufruf
26.02.2003 13:16:16
Felix

Hallo,
ich weiß nicht genau worums geht, aber probiers mal so:

Dim i%, rw%
rw = Cells(Rows.Count, 3).End(xlUp).Row
For i = 5 To rw
If Range("K" & i).Value = "" Then
call rechnenfirst(i)
ElseIf Range("K" & i).Value >= "0" Then
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
Next i

Range("A1").Select
End Sub

private sub RechnenFirst(i as integer)

If Range("C" & i).Value = "" Or Range("C" & i).Value = "Gewinn" Or Range("C" & i).Value = "Verlust" Then
Else:
Range("D" & i).Copy
Range("K" & i).Paste
application.cutcopymode=false
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
End sub

Gruß Felix


Anzeige
Re: Funktionsaufruf
26.02.2003 13:24:02
Bernhard

Hallo Felix,

danke für die schnelle Antwort. Teilweise funktioniert die Sache. Hier das komplette Script.

Sub Währung()

Dim i%, rw%
rw = Cells(Rows.Count, 3).End(xlUp).Row
For i = 5 To rw
If Range("K" & i).Value = "" Then
Call RechnenFirst(i)
ElseIf Range("K" & i).Value >= "0" Then
Range("K" & i).Select
Selection.Copy
Selection.Delete
Range("D" & i).Select
ActiveSheet.Paste**
Selection.Copy
Range("K" & i).Select
ActiveSheet.Paste
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
Next i

Range("A1").Select
End Sub

Private Sub RechnenFirst(i As Integer)

If Range("C" & i).Value = "" Or Range("C" & i).Value = "Gewinn" Or Range("C" & i).Value = "Verlust" Then
Else:
Range("D" & i).Select
Selection.Copy
Range("K" & i).Select
ActiveSheet.Paste
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
End Sub

Beim ersten Durchlauf funktioniert die Sache, beim 2.ten Mal bleibt es in der mit ** gekennzeichneten zeile stehen.

Anzeige
Re: Funktionsaufruf
26.02.2003 13:28:15
Bernhard

Nachtrag:
Weshalb den Befehl:
application.cutcopymode=false


Re: Funktionsaufruf
26.02.2003 13:54:54
Felix

Hallo,

ich verstehe nicht genau, was Du mit Deinem Code bezwecken willst.
Bitte ewkläre mal, was das Ziel hiervon sein soll:

Range("K" & i).Select
Selection.Copy
Selection.Delete
Range("D" & i).Select
ActiveSheet.Paste**
Selection.Copy
Range("K" & i).Select
ActiveSheet.Paste
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"

Du kopierst von Ki nach Di, löscht Ki, kopiertst von Di nach Ki, und schreibst dann eine Formel in Di ??????
Versuche grundsätzlich ohne select zu arbeiten.

Vielleicht kann ich Dir ja weiterhelfen,

Gruß, Felix

Anzeige
Re: Funktionsaufruf
26.02.2003 14:48:42
Bernhard

Ich möchte damit bezwecken, das wenn ein zweites Mal das Makro aufgerufen wird, die ursprünglichen werte aus der Spalte Di verwendet werden. Deshalb lösche ich die Werte aus D und füge die von K wieder ein, danach soll eine Neuberechnng erfolgen!

Thanx Bernhard

P.S.: Warum den Befehl "application.cutcopymode=false"

Re: Funktionsaufruf
26.02.2003 15:43:53
Felix

Hallo,

also, dieser Code hier sollte jetzt folgendes machen:

Er durchläuft die Zellen in Spalte K von 5 bis rw.
Falls eine Zelle leer ist, dann
wenn Ci nicht leer oder Gewinn oder Verlust, dann kopiere von
Di nach Ki und packe in Di eine Formel. Dann ist die nächste
Zelle in K dran.
Oder falls eine Zelle nicht leer ist, dann kopiere von Ki nach Di, dann von Di nach Ki, und dann in Di eine Formel. Dann ist die nächste Zelle in K dran (bis rw).
Falls es das ist, was du willst, dann sollte es wir unten angegeben funktionieren:

Dim i%, rw%
rw = Cells(Rows.Count, 3).End(xlUp).Row
For i = 5 To rw
If Range("K" & i).Value = "" Then
Call RechnenFirst(i)
ElseIf Range("K" & i).Value >= "0" Then
Range("K" & i).Copy
Range("D" & i).paste
Range("K" & i).Delete
Range("D" & i).copy
Range("K" & i).paste
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
Next i

Range("A1").Select
End Sub

Private Sub RechnenFirst(i As Integer)

If Range("C" & i).Value = "" Or Range("C" & i).Value = "Gewinn" Or Range("C" & i).Value = "Verlust" Then
Else:
Range("D" & i).Copy
Range("K" & i).Paste
Range("D" & i).FormulaR1C1 = "=RC[7]*R8C8"
End If
End Sub

Gruß, Felix

P.S. application.cutcopymode=false beendet den Kopiermodus (diese gestrichelte Linie nach Strg+C)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige