VB in Excel Zelle als Variable

...komplette Frage anzeigen

4 Antworten

Hi,

Du kannst es so schreiben:

Sheets("+101").Range("L5", Zahl) = ...

Oder aber, unter Umgehung des Murkses mit dem zusammengesetzten String:

Sheets("+101").Range("L5").Resize(AnzahlZeilen_SVerweis - 4, 1) = ...

ich blick zwar auch nicht durch, aber versuch mal anstatt Sheets("+101").[L5:Zahl] zu schreiben Sheets("+101").Range("L5:"&Zahl).

erstens muss Text als solcher gekennzeichnet sein (wie ja auch "+101") und zweitens muss eine Verkettung mit dem Inhalt der Variablen Zahl her. Ausserdem wertet [..] nicht aus, also besser die Langform Range(..)

Wie sich das allerdings mit dem übrigen vertragen soll, verstehe ich nicht. das Linke wird durch das Rechte definiert, ist aber nichts Definierbares, und den rechten Teil verstehe ich auch nicht (was nichts sagt, jeder hat seine eigenen Methoden, oft schwer nachzuvollziehen)

Ah ja, hab grad den Code von GF123 angelesen, alsi (L5, Zahl) könnte besser sein

Iamiam 21.06.2011, 17:28

wenn Du aber nur die Zeilenposition eines Eintrags wissen willst, brauchst Du kein VBA: Angenommem Du suchst den Eintrag "Tisch" in Spalte C, schreibst Du die Formel:

=Vergleich("Tisch";C:C;0).

Fängt Der Suchbereich aber erst in Zeile 5 an, dann eben =Vergleich("Tisch";C5:C9999;0)

im ersten Fall also die absolute Zeilennummer, im zweiten relativ zum Anfang. Das geht auch im Makro besser.

Willst Du die Zelle links daneben, kombinierst du das mit index (danke, augsburgchris!) zu

=index(B:B;Vergleich("Tisch";C:C;0);1) . Will heissen: Du suchst in der ersten (und einzigen) Spalte von B:B in der Zeile, die Dir Vergleich in C:C zurückgibt.

Du findest nur das Einzelwort Tisch, nicht zB fanatisch oder identisch. Für Endungen gibt es noch die Möglichkeit, in einer Zusatzspalte die Formel =rechts(C1;5) , -runterkopieren- nach ...tisch zu suchen.

Mittendrin mit =suchen("tisch";C1) in Zusatzspalte in zB X1, runterkopiert. Da wird dann bei "nautisches Instrument") eine Zahl: 4 zurückgegeben, weil tisch mit dem 4. Zeichen beginnt, bei anderen Einträgen der Fehler #Wert!. Auch per Makro auswertbar.Im Makro hieße der Befehl für suchen innerhalb eines Zelltextes übrigens Instr (in String, also in der Zeichenkette).

0
Iamiam 21.06.2011, 17:35
@Iamiam

Eselsbrücke: nautisches Instrument.

Die Syntax musst Du selber nachschlagen, kann ich mir nie merken!

0

Ist AnzahlZeilen_SVerweis eine UDF?
Wenn ja, wie sieht die aus?
Wie sieht der Code "drumherum" aus?
Steht L47 denn auch in den Zellen?
Warum schreibst Du das in mehrere Zellen?
Um es also kurz zu sagen: So richtig blicke ich nicht durch.

Zahl = AnzahlZeilen_SVerweis

Sheets("+101").Range("L5:L" & Zahl)= WorksheetFunction.VLookup(Sheets("+101").[E5:E47], Sheets("Kundenpreis").[C2:F74], 3, False)

Brrrrrr SVERWEIS auch noch als VBA da schüttelts mich gleich.

Was möchtest Du wissen?