Zu deiner bisherigen Variante:
cells.find liefert ein Range Objekt zurück, davon liefert .Offset(0,-1) wieder ein Range-Objekt, nämlich das mit der Zelle links daneben zurück und .Value liefert deren Wert:
Code:
function TForm1.lese_Artikel(art: string):String;
begin
result:=excel.Worksheets[1].cells.find(art, MatchCase:=False, SearchFormat:=False).Offset(0,-1).Value
end;
Das ist aber nur Q+D. Findet Find nichts, liefert es Nothing/nil zurück und dann knallt der Rest. Sauber wäre also eine variable (z.B. rg) für das Range-Objekt zu erstellen. .Find anwenden. Wenn rg nicht nil, dann weiter machen mit .Offset usw.