Hallo,
wo genau kommt denn der Fehler ?
Zu der Neustart-Sachen.
- Task-Manager
- auf Reiter Prozesse
- nach Excel.Exe suchen und abschiessen
bei mehreren alle Excel.Exe abschiessen
- danach kannst du dein "normales" Excel wieder aufmachen
Ausserdem wäre es schön, wenn du den Quelltext mal anständig formatierst,
man bekommt ja Augenkrebs
Vorschlag
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
vArray : OleVariant;
WS : OleVariant;
aRange : Range;
i : Integer;
lc : Integer;
ObjNr : String;
adr : String;
temp : String;
begin
ExcelApplication1.Connect;
ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveSheet as _Worksheet);
WS := ExcelApplication1.ActiveSheet as _Worksheet;
If Edit1.Text <> '' then
begin
ObjNr := Edit1.Text;
zeile := 1;
spalte := 2;
repeat
inc(zeile);
until (WS.Cells.Item[zeile,spalte].Value = ObjNr) or
(WS.Cells.Item[zeile,spalte].Value = 'xx');
If (WS.Cells.Item[zeile,spalte].Value = ObjNr) then
begin
Edit2.Text := WS.Cells.Item[zeile,4].Value +' '
+WS.Cells.Item[zeile,5].Value;
end
end
else
begin
If Edit2.Text <> '' then
begin
adr := Edit2.Text;
//zeile := 1;
spalte := 4;
repeat
inc(zeile);
until (Pos(adr,WS.Cells.Item[zeile,spalte].Value) > 0) or
(WS.Cells.Item[zeile,spalte].Value = 'xx');
If (Pos(adr,WS.Cells.Item[zeile,spalte].Value) > 0) then
begin
Edit2.Text := WS.Cells.Item[zeile,4].Value +' '
+WS.Cells.Item[zeile,5].Value;
Edit1.Text := WS.Cells.Item[zeile,2].Value;
end;
end;
end;
Label1.Caption := WS.Cells.Item[zeile,20].Value;
ExcelWorksheet1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Disconnect;
end;
Heiko