HERBERS Excel-Forum - das Archiv
.offset
meixner

Hallo zusammen,
habe mit einem Makro ein Problem. Bekomme die Fehlermeldung 438. Objekt unterstützt diese Eigenschaft oder Methode nicht.
Falls zwei Spalten weiter links von Spalte H aus gesehen, nämlich die Spalte F leer ist, dann soll in Spalte H auch nichts eingetragen werden. Falls Spalte F befüllt ist, dann soll auch die Spalte H befüllt werden durch das , was ich in der Inputbox eingebe.
Spalte F Spalte H
Nr. ISIN NAME WP_Bestand Bezugspreis
1 ES0124244E34 ALLIANZ 5.641
2 ES0124244E34 ALLIANZ 35.387
Bezugspreis = Application.InputBox("Bezugspreis bitte eingeben:", "Dateneingabe:", , , , , , 1)
If Bezugspreis = False Then Exit Sub
If Worksheets(1).cell(0, -2).Offset <> "" Then Sheets(1).Cells(0, 1) = Bezugspreis (HIER LIEGT DER FEHLER)
Macht das fur euch Sinn? Sorry, falls nicht, aber das Makro ist ziemlich lang und das ist nur ein Bruchteil.
Vielen Dank für die Hilfe.
Dani.

AW: .offset
Jens

Hallo
If Worksheets(1).cell(0, -2).Offset 
Diese Syntax ist falsch.
If Worksheets(1).Cells(Zeile, Spalte).Offset(0,-2) <> "" Then ...
Gruß Jens
AW: .offset
meixner

und wie ist diese richtig?
If Worksheets(1).cell(0, -2).Offset = "" Then Sheets(1).Cells(0, 1) = Bezugspreis
Das geht aber auch nicht.
Viele Grüße
Dani
AW: .offset
Jens

Hallo
Cells(0,1) gibt es nicht
Die Syntax ist Cells(Zeile, Spalte).
Cells(0,1) wäre dann Zeile 0 und Spalte 1 (A). Zeile 0 gibt es aber nicht.
Beschreibe mal, was Du vorhast. Mit genauen Zellenangaben.
Gruß aus dem Sauerland
Jens
AW: .offset
meixner

die Range lautet (H8:H18)
Falls zwei Spalten weiter links von range(F8:f18) die spalte H8:H18 leer ist, dann soll in Spalte H auch nichts eingetragen werden. Falls z.B F8 befüllt ist, dann soll auch die H8 befüllt werden durch das , was ich in der Inputbox eingebe. Falls F9 befüllt ist, dann soll auch H9 befüllt werden...usw. bis F19 soll so vorgegangen werden.? Macht das für Dich Sinn?
Bezugspreis = Application.InputBox("Bezugspreis bitte eingeben:", "Dateneingabe:", , , , , , 1)
If Bezugspreis = False Then Exit Sub
If Worksheets(1).cell(1, -2).Offset = "" Then Sheets(1).Cells(0, 1) = "" else Bezugspreis
Nachfrage
Jens

Hallo
Soweit habe ich das jetzt verstanden:
Du willst im 1. Tabellenblatt die Zellen in F8:F18 prüfen, ob dort etwas steht.
? Ist in den Zellen eine Formel hinterlegt ? Wenn ja, wie heißt die Formel ?
Wenn dort nichts steht (Zellen leer), dann möchtest Du in einer Inputbox etwas eingeben, was dann in der gleichen Zeile in Spalte H eingetragen wird.
? Soll immer das gleiche eingetragen werden, oder soll die Inputbox für jede Zelle, mit anderen Eingaben, neu eingetragen werden ?
Wann soll das denn geschehen? Über den Klick auf einen Button, oder bei einer Eingabe oder einer Änderung in dem Tabellenblatt?
Evtl. mal die Datei mit den Erläuterungen hochladen. Das sollte nicht schwer zu lösen sein.
Gruß aus dem Sauerland
Jens
AW: Nachfrage
meixner

Hallo Jens,
nein, es soll immer das Gleiche eingetragen werden, nämlich der Bezugspreis, den ich nur einmal am Anfang in die Inputbox eingebe. Die Inputbox rufe ich über ein Makrobutton auf.
Bezugspreis = Application.InputBox("Bezugspreis bitte eingeben:", "Dateneingabe:", , , , , , 1)
If Bezugspreis = False Then Exit Sub
Bsp. Über den Button rufe ich die Inputbox auf und gebe dort z.B 2,5 € als Bezugspreis ein. Jetzt wird überprüft, ob in der Range(F8 : F18) irgendetwas eingetragen ist (evtl. steht dort eine Zahl, aber ohne Formel). Wenn in der F9 bspw. eine Zahl steht, dann soll in H8 diese 2,5 € eingetragen werden. Wenn
in der F9 wieder eine Zahl steht, dann soll in H9 auch wieder die 2,5 € eingetragen werden.
Die Datei hochzuladen macht glaube ich keinen Sinn, da ziemlich groß und das Makro auch sehr unübersichtlich und lang ist.
Vielen Dank
Dani.
AW: Nachfrage
hary

Hi Dani
so? Wenn in F etwas steht dann Eintrag in H

Dim c As Range
Dim Bezugspreis
Bezugspreis = Application.InputBox("Bezugspreis bitte eingeben:", "Dateneingabe:", , , , , , 1)
If Bezugspreis = False Then Exit Sub
For Each c In Range("F8:F18")
If c <> "" Then c.Offset(0, 2) = Bezugspreis
Next

gruss hary
@ Hary: Da fehlt das "NEXT" ;o) (oT)
Jens

Sry,wer lesen kann, ist klar im Vorteil ;o) (oT)
Jens

AW: Nachfrage
Jens

Hallo Dani
Dann probier mal so:
Sub tt()
Dim Zelle As Range
Dim Bezugspreis
Bezugspreis = Application.InputBox("Bezugspreis bitte eingeben:", "Dateneingabe:", , , , , , 1)
If Bezugspreis = False Then Exit Sub
For Each Zelle In Range("F8:F18")
If Zelle <> "" Then Zelle.Offset(0, 2) = Bezugspreis
Next Zelle
End Sub
Gruß aus dem Sauerland
Jens
AW: Nachfrage
meixner

Hallo Jens,
super. Funktioniert einwandfrei!
Vielen Dank für deine Mühe!!!!
dani
Danke für die Rückmeldung (oT)
Jens