Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос перевода (анг-рус) очень долго работает из-за большого количества цифр. Как можно ускорить?
 
А никто  не посоветует хорошую книгу для самообучения VBA страниц так на тысячу? И еще лучше - в электронном виде? А то, в общем, я как-то понял, посмотрев предложенные макросы, что плохо разбираюсь и надо бы просветиться в данном вопросе. Не дайте закоснеть в невежестве хорошему человеку!
Макрос перевода (анг-рус) очень долго работает из-за большого количества цифр. Как можно ускорить?
 
{quote}{login=Flash}{date=16.11.2011 07:36}{thema=}{post}Попробуйте так  
 
Sub Translate()  
   Dim DicArray(), iCell As Range, Rng As Range, i As Long  
 
   FromRusIntoEng = False  
   With Worksheets("Dict")  
       DicArray() = .Range("A1:B" & .[B1].End(xlDown).Row).Value
   End With  
   Set Rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, 2)  
   Application.ScreenUpdating = False  
   For Each iCell In Rng  
       For i = 1 To UBound(DicArray)  
           'с русского на английский  
           If iCell.Value = DicArray(i, 2) Then  
               iCell.Value = DicArray(i, 1)  
               Exit For  
           End If  
           'с английского на русский  
           If iCell.Value = DicArray(i, 1) Then  
               iCell.Value = DicArray(i, 2)  
               Exit For  
           End If  
       Next i  
   Next iCell  
   Application.ScreenUpdating = True  
   MsgBox "Перевод выполнен!", vbInformation, "Конец"  
End Sub{/post}{/quote}  
 
Ой, лепота! Перевод прямо летает! Большущее Вам спасибо, Flash!  Буду разбираться в макросе - кое-что тут для меня новое есть. Еще раз спасибо огромное!!!
Макрос перевода (анг-рус) очень долго работает из-за большого количества цифр. Как можно ускорить?
 
{quote}{login=KukLP}{date=16.11.2011 12:06}{thema=}{post}Так напишите: .SpecialCells(xlCellTypeConstants, 2)  
Тогда он цифры просматривать не будет.{/post}{/quote}  
 
Большое спасибо, очень помогло!
Макрос перевода (анг-рус) очень долго работает из-за большого количества цифр. Как можно ускорить?
 
Для перевода большой книги, где много листов, и они представляют собой небольшой текст вместе с большой цифровой таблицей (до несколько тысяч ячеек в каждой и где выше, ниже и сбоку цифр есть еще и другой текст) я использую любезно написанный владельцем сайта макрос перевода:    
 
Sub Translate()  
Dim cell1, cell2 As Range  
Dim i, Langs As Long  
 
Langs = 2 'количество языков перевода (включая русский)  
 
   For Each cell1 In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)  
          For Each cell2 In Worksheets("Dict").Cells.SpecialCells(xlCellTypeConstants)  
           If cell1.Value = cell2.Value Then  
               i = cell2.Column  
               If i = Langs Then i = 1 Else i = i + 1  
               cell1.Value = Worksheets("Dict").Cells(cell2.Row, i).Value  
               GoTo 1  
           End If  
       Next cell2  
1:   Next cell1  
End Sub  
 
Проблема заключается в том, что макрос переводит листы до 10 минут каждый (словарь при этом имеет около 1000 строк). Может это потому, что макрос пытается перевести цифры (а их, как я уже написал, в каждом листе - по две-три тысячи, получается, цифры дают несколько миллионов ненужных переборов). Можно ли как-то сделать, чтобы макрос не перебирал ячейки с цифровыми значениями и за счет этого ускорить процесс перевода? Помогите, пожалуйста.
Страницы: 1
Loading...