Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

.offset | Herbers Excel-Forum


Betrifft: .offset von: meixner
Geschrieben am: 17.11.2009 13:54:30

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.

  

Betrifft: AW: .offset von: Jens
Geschrieben am: 17.11.2009 13:56:54

Hallo

If Worksheets(1).cell(0, -2).Offset 
Diese Syntax ist falsch.

If Worksheets(1).Cells(Zeile, Spalte).Offset(0,-2) <> "" Then ...

Gruß Jens


  

Betrifft: AW: .offset von: meixner
Geschrieben am: 17.11.2009 14:28:20

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


  

Betrifft: AW: .offset von: Jens
Geschrieben am: 17.11.2009 14:38:37

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


  

Betrifft: AW: .offset von: meixner
Geschrieben am: 17.11.2009 14:50:04

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


  

Betrifft: Nachfrage von: Jens
Geschrieben am: 17.11.2009 15:02:37

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


  

Betrifft: AW: Nachfrage von: meixner
Geschrieben am: 17.11.2009 15:13:31

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.


  

Betrifft: AW: Nachfrage von: hary
Geschrieben am: 17.11.2009 15:27:46

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


  

Betrifft: @ Hary: Da fehlt das "NEXT" ;o) (oT) von: Jens
Geschrieben am: 17.11.2009 15:30:03




  

Betrifft: Sry,wer lesen kann, ist klar im Vorteil ;o) (oT) von: Jens
Geschrieben am: 17.11.2009 15:34:42




  

Betrifft: AW: Nachfrage von: Jens
Geschrieben am: 17.11.2009 15:27:49

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


  

Betrifft: AW: Nachfrage von: meixner
Geschrieben am: 17.11.2009 15:40:12

Hallo Jens,

super. Funktioniert einwandfrei!

Vielen Dank für deine Mühe!!!!
dani


  

Betrifft: Danke für die Rückmeldung (oT) von: Jens
Geschrieben am: 17.11.2009 15:46:18