AW: EM Tipspiel
08.06.2008 23:34:00
fcs
Hallo Christian,
es gibt verschiedene Möglichkeiten.
1. Vor dem Starten des Makros positionierst du den Cursor auf der Zelle A1.
Die anderen Zellen werden dann relativ zu dieser Zelle vom Makro ermittelt und die Berechnungen Durchgeführt.
Sub Beispiel1()
Dim objA1 As Range 'gewählte Startzelle
Dim objBereichA As Range
Dim objBereichB As Range
Dim objBereichC As Range ' Zielzelle
Dim dblErgebnis As Double
Dim lngZeile As Long
Set objA1 = Selection
Set objBereichA = objA1.Range("A1:A10")
Set objBereichB = objA1.Range("B1:B2")
Set objBereichC = objA1.Range("C1")
'Beispielberechnung
dblErgebnis = 1
'Prüfen, ob für Alle Werte in BereichA die Bedingungen erfüllt sind
For lngZeile = 1 To objBereichA.Rows.Count
If Not (objBereichA(lngZeile, 1) > objBereichB(1, 1) _
Or objBereichA(lngZeile, 1)
2. Während des Ablaufs des Makros werden die zu verwendenden Zellbereiche in Inpurboxen abgefragt.
Beispiel:
Sub Beispiel2()
Dim objBereichA As Range
Dim objBereichB As Range
Dim objBereichC As Range ' Zielzelle
Dim dblErgebnis As Double
Dim lngZeile As Long
Set objBereichA = Application.InputBox(Prompt:="Bitte Zellen für BereichA auswählen", _
Title:="Zellenauswahl für Berechnung", Type:=8)
Set objBereichB = Application.InputBox(Prompt:="Bitte 2 Zellen für BereichB auswählen", _
Title:="Zellenauswahl für Berechnung", Type:=8)
Set objBereichC = Application.InputBox(Prompt:="Bitte Zellen für Ergebnis auswählen", _
Title:="Zellenauswahl für Berechnung", Type:=8)
'Beispielberechnung
dblErgebnis = 1
'Prüfen, ob für Alle Werte in BereichA die Bedingungen erfüllt sind
For lngZeile = 1 To objBereichA.Rows.Count
If Not (objBereichA(lngZeile, 1) > objBereichB(1, 1) _
Or objBereichA(lngZeile, 1)
3. Direkte Zuweisung von Bereichen
Sub Beispiel3()
Dim objWks As Worksheet
Dim objBereichA As Range
Dim objBereichB As Range
Dim objBereichC As Range ' Zielzelle
Dim dblErgebnis As Double
Dim lngZeile As Long
Set objWks = Worksheets("Tabelle2")
With objWks
Set objBereichA = .Range(.Cells(1, 1), .Cells(10, 1)) '.Range("A1:A10")
Set objBereichB = .Range(.Cells(1, 2), .Cells(2, 2)) '.Range("B1:B2")
Set objBereichC = .Cells(1, 3) '.Range("C1")
End With
'Beispielberechnung
dblErgebnis = 1
'Prüfen, ob für Alle Werte in BereichA die Bedingungen erfüllt sind
For lngZeile = 1 To objBereichA.Rows.Count
If Not (objBereichA(lngZeile, 1) > objBereichB(1, 1) _
Or objBereichA(lngZeile, 1)
Gruß
Franz