Конференция "Corba" » Обработка ошибок Excel из Delphi. [Delphi, Windows]
 
  • Kiril (12.09.06 23:13) [0]
    Имеем работоспособный макрос:
    (предложен кусочек)
    On Error Resume Next
       Err.Clear
       Cells.Find(What:=NomNumber, After:=ActiveCell, LookIn:=xlFormulas, _
           LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
           MatchCase:=False, SearchFormat:=False).Activate
       If Err.Number <> 0 Then
           GoTo Start
       End If


    Как переложить в Delphi отслеживание ошибок VBA я не представляю, подскажите пожалуйста.

    Заранее благодарен, Кирилл.
  • Kiril (12.09.06 23:20) [1]

    >    Cells.Find(What:=NomNumber, After:=ActiveCell, LookIn:
    > =xlFormulas, _
    >        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:
    > =xlNext, _
    >        MatchCase:=False, SearchFormat:=False).Activate


    Извините, у меня и поиск перенести в Делфи не получается чисто интуитивно. Подскажите где можно накопать какую либо документацию?
  • Kiril (13.09.06 00:47) [2]
    Делаю так:

    ExcelApplication.Workbooks[1].WorkSheets[1].Cells.Find['3'].Activate;



    Пишет: Член группы не найден.
  • Сергей М. © (13.09.06 10:22) [3]
    Подсказка: Find - это функция, а не свойство.
  • umbra © (13.09.06 11:51) [4]

    > ExcelApplication.Workbooks[1].WorkSheets[1].Cells.Find['3'].
    > Activate;
    >
    > Пишет: Член группы не найден.
    >

    метод
    Find

    возвращает диапазон, состоящий из одной ячейки, а вы указываете индекс, причем как строку. Ниже - пример, как можно искать ячейки.


    function DoSomethingWithFound(range: variant, params: array of variant): integer;
    var
     Match, FirstFound, PrevMatch: Variant;

    begin
    Result := 0;
    Match := Unassigned;
    Match :=range.Find(What:=params[1], Lookin:=params[2]);
    if VarIsEmpty(Match) then
     exit
    else
     Firstfound := Match.Address;
    repeat
       Inc(Result);
       PrevMatch := match;
       //делаем что-то
       //с найденной ячейкой.
       match := Unassigned;
       match := range.FindNext(Prevmatch);
    until (match.Address = firstfound) or VarIsEmpty(match);
    Prevmatch := Unassigned;
    FirstFound := Unassigned;
    end;


  • Сергей М. © (13.09.06 12:45) [5]

    > umbra ©   (13.09.06 11:51) [4]


    У автора, судя по коду, раннее связывание.
  • umbra © (13.09.06 13:30) [6]
    э-э-э, да, недоглядел. :( Но принцип остается тот же, только типы, возможно, надо приводить.
 
Конференция "Corba" » Обработка ошибок Excel из Delphi. [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]