Ausdruck.Offset(RowOffset, ColumnOffset)
Ausdruck.Offset(RowOffset, ColumnOffset)
Ausdruck Erforderlich. Ein Ausdruck, der ein Range-Objekt zurückgibt.
einen Offset auf eine komplette Spalte gibt es nicht.
Sub test()
Dim r As Range
Set r = Columns(2).Offset(, 2)
MsgBox r.Address
End Sub
Sub Austausch()
Dim RICAktie As String
RICAktie = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
With Workbooks("Template BZR in Arbeit.xls")
If Not .Worksheets(2).Range("c:c") _
.Find(What:=RICAktie, LookAt:=xlPart) Is Nothing Then
.Worksheets(1).Range("p8") = RICAktie
.Worksheets(4).Range("A3") = RICAktie
.Worksheets(4).Range("A12") = RICAktie
.Worksheets(4).Range("b12") = Worksheets(2).Range("C:C").Offset(0, -2) (HIER IST DAS PROBLEM)
Else
MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
vbCritical, "Nur Zahlen eingeben!"
End If
End With
Worksheets(1).Range("q8").FormulaR1C1 = Worksheets(4).Range("b3").FormulaR1C1
Bezugspreis = InputBox("Bezugspreis bitte eingeben:", "Dateneingabe:")
Worksheets(1).Range("q9") = Bezugspreis
alte_Aktien = InputBox("BEZUGSVERHÄLTNIS: alte Aktien eingeben", "Dateneingabe:")
Worksheets(4).Range("b4") = alte_Aktien
neue_Aktien = InputBox("BEZUGSVERHÄLTNIS: neue Aktien eingeben", "Dateneingabe:")
Worksheets(4).Range("b5") = neue_Aktien
Dividendennachteil = InputBox("Dividendennachteil eingeben:", "Dateneingabe:")
Worksheets(1).Range("q10") = Dividendennachteil
Worksheets(1).Range("q14").Value = Worksheets(4).Range("b7").Value
End Sub
Option Explicit
Sub Austausch()
Dim RICAktie As String, rngF As Range
RICAktie = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
With Workbooks("Template BZR in Arbeit.xls")
Set rngF = .Worksheets(2).Range("c:c").Find(What:=RICAktie, LookAt:=xlPart)
If Not rngF Is Nothing Then
.Worksheets(1).Range("p8") = RICAktie
.Worksheets(4).Range("A3") = RICAktie
.Worksheets(4).Range("b12") = rngF.Offset(-2, 0)
.Worksheets(4).Range("A12") = RICAktie
Else
MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
vbCritical, "Nur Zahlen eingeben!"
End If
End With
' usw.
End Sub
Alles klar?.Worksheets(4).Range("a" & .Cells.Count).End(xlUp).Offset(1, 0) = rngF.Offset(0, -2)
.Worksheets(4).Range("d" & .Cells.Count).End(xlUp).Offset(1, 0) = rngF.Offset(0, 1)
.Worksheets(4).Range("e" & .Cells.Count).End(xlUp).Offset(1, 0) = rngF.Offset(0, 2)
.Worksheets(4).Range("f" & .Cells.Count).End(xlUp).Offset(1, 0) = rngF.Offset(0, 3)
.Worksheets(4).Range("b" & .Cells.Count).End(xlUp).Offset(1, 0) = rngF.Offset(0, -1)
.Worksheets(4).Range("m" & .Cells.Count).End(xlUp).Offset(1, 0) = rngF.Offset(0, 7)
Gruß Ingolf
Option Explicit
Sub Austausch3()
Dim strRIC As String, rngF As Range, lngZ As Long, lngErst As Long, lngU As Long
strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
With Workbooks("Template BZR in Arbeit.xls")
Set rngF = .Worksheets(2).Range("c:c").Find(What:=strRIC, LookAt:=xlPart)
If Not rngF Is Nothing Then
lngErst = rngF.Row
Do
lngZ = rngF.Row
With .Worksheets(1)
.Range("p8") = strRIC
.Range("c8") = strRIC
End With
With .Worksheets(4)
.Cells(3 + lngU, 1) = strRIC ' A3
.Cells(8 + lngU, 1) = rngF.Offset(0, -2) ' a8
.Cells(8 + lngU, 2) = rngF.Offset(0, -1) ' b8
.Cells(8 + lngU, 4) = rngF.Offset(0, 1) ' d8
.Cells(8 + lngU, 5) = rngF.Offset(0, 2) ' e8
.Cells(8 + lngU, 6) = rngF.Offset(0, 3) ' f8
.Cells(8 + lngU, 6) = rngF.Offset(0, 3) ' f8 doppelt
.Cells(8 + lngU, 13) = rngF.Offset(0, 7) ' m8
End With
lngU = lngU + 1
Set rngF = .FindNext(rngF)
Loop While Not rngF Is Nothing And rngF.Row <> lngErst
Else
MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
vbCritical, "Nur Zahlen eingeben!"
End If
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Option Explicit
Sub Austausch3()
Dim strRIC As String, rngSuch As Range
Dim rngF As Range, lngZ As Long, lngErst As Long, lngU As Long
strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
With Workbooks("Template BZR in Arbeit.xls")
Set rngSuch = .Worksheets(2).Columns(3)
Set rngF = rngSuch.Find(What:=strRIC, LookAt:=xlPart)
If Not rngF Is Nothing Then
lngErst = rngF.Row
Do
lngZ = rngF.Row
With .Worksheets(1)
.Range("p8") = strRIC
.Range("c8") = strRIC
End With
With .Worksheets(4)
.Cells(3 + lngU, 1) = strRIC ' A3
.Cells(8 + lngU, 1) = rngF.Offset(0, -2) ' a8
.Cells(8 + lngU, 2) = rngF.Offset(0, -1) ' b8
.Cells(8 + lngU, 4) = rngF.Offset(0, 1) ' d8
.Cells(8 + lngU, 5) = rngF.Offset(0, 2) ' e8
.Cells(8 + lngU, 6) = rngF.Offset(0, 3) ' f8
.Cells(8 + lngU, 6) = rngF.Offset(0, 3) ' f8 doppelt
.Cells(8 + lngU, 13) = rngF.Offset(0, 7) ' m8
End With
lngU = lngU + 1
Set rngF = rngSuch.FindNext(rngF) ' ### korrigiert
Loop While Not rngF Is Nothing And rngF.Row <> lngErst
Else
MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
vbCritical, "Nur Zahlen eingeben!"
End If
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
If Not .Worksheets(2).Range("c:c") _
.Find(What:=RICAktie, LookAt:=xlPart) Is Nothing Then
.Worksheets(1).Range("p8") = RICAktie
.Worksheets(4).Range("A3") = RICAktie
.Worksheets(4).Range("A12") = RICAktie
.Worksheets(4).Range("b12") = .Worksheets(2).Range("c:c") _
.Find(What:=RICAktie, LookAt:=xlPart).Offset(0, -2)
GrußDen meisten anderen wohl auch nicht,