Страницы: 1
RSS
приостановка процедуры с возможностью обращения к листам рабочей книги
 
Добрый день.  
Уважаемые гуру, помогите разобраться в вопросе.  
Есть файл с заказом товаров и есть файл с базой, в которой на эти товары указаны разрешительные документы. Задача - если программа не может сама определить строку в базе из которой надо взять номер документа для товара из заказа, то предложить пользователю в ручном режиме указать эту строку путем активации этой строки. Фрагмент кода:  
   
  If Not Range("D:D").Find(predmet, , , xlPart, , xlNext) Is Nothing Then  
         b_str = Range("D:D").Find(predmet, , , xlPart, , xlNext).Row    
     Else: Workbooks("База_ДС.xls").Worksheets("База").Application.Visible = True  
   
и далее нужна подсказка как можно передать пользователю возможность поработать с листом.  
Такая возможность как я понял есть, потому что предварительно нашел на форуме похожий вопрос и ответ, но не могу реализовать код.  
Итак подсказка от Slan:  
     
"более красивый путь: вывесить форму в немодальном режиме,  
зациклить программу:  
global quit as boolean  
form.show(false)  
do  
doevents  
loop until quit  
 
Private Sub Form_Click()  
Unload form  
quit = True  
End Sub"
 
Я бы сделал так:  
 
 
   ' начало кода  
   On Error Resume Next: Err.Clear  
   b_str = Range("D:D").Find(predmet, , , xlPart, , xlNext).Row  
   If Err Then b_str = ВыбраннаяПользователемСтрока  
   ' код продолжается  
 
 
 
А ниже определил бы функцию, позволяющую выбирать ячейку:  
 
Function ВыбраннаяПользователемСтрока() As Long  
    Application.Visible = True  
   On Error Resume Next  
   Dim ra As Range: Set ra = Application.InputBox("Выделите ячейку", , , , , , , 8)  
   ВыбраннаяПользователемСтрока = ra.Row  
    Application.Visible = False  
End Function
 
Большое спасибо, EducatedFool!  
Я изучил код. И тут два варианта. Когда я его просто в короткий тестовый файл записываю, где кроме этого кода ничего нет, то он хорошо работает, на экране всплывает окно ввода и можно выделить ячейку - все что хотелось. Но вот когда я этот код уже в свою программу прописываю, то окно ввода всплывает, но не дает мне выбрать ячейку. Лист не становится активным. В чем может быть проблема?
 
Код не работал потому что надо было включить обновление экрана, которое я в самом начале откючил. Теперь полный порядок. Еще раз спасибо!
Страницы: 1
Читают тему
Наверх