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

Страницы: 1
Разорванный диапазон для ListBox.List
 
У меня ListBox заполняется построчно    
 
For iCol = 5 To 19  
For iRow = 0 To UBound(MonthDataArr) - 1  
 
т.е. цикл заполнения каждой строки и каждого столбца  
 
а у nerv одним махом    
 
ufInf.lbox1.List = v()  
 
т.е. заполнение всех строк и столбцов за один проход  
 
Просто у вас 20 строк, поэтому я не стал так делать, посчитав, что в данном случае скорость не будет критична.
Разорванный диапазон для ListBox.List
 
может так  
 
Private Sub cboxMonth_Change()  
Dim Rng As Range, MonthDataArr(), iCol As Long, iRow As Long  
 
   Set Rng = Sheets("baza").Rows(1).Find(Me.cboxMonth.Value, , xlFormulas, xlWhole)  
   If Rng Is Nothing Then  
       MsgBox "Месяц " & Me.cboxMonth.Value & " не найден на листе 'baza' в 1-й строке!", vbExclamation, "Ошибка"  
       Exit Sub  
   End If  
   MonthDataArr = Rng.Offset(1, -1).Resize(20, 15)  
   For iCol = 5 To 19  
       For iRow = 0 To UBound(MonthDataArr) - 1  
           Me.lbox1.List(iRow, iCol) = MonthDataArr(iRow + 1, iCol - 4)  
       Next iRow  
   Next iCol  
End Sub  
 
 
P.S. Заполнение формы я бы посоветовал бы посадить на    
 
Private Sub UserForm_Initialize()  
 
а не на  
 
Private Sub UserForm_Activate()
Формула СЛЧИС
 
=ЦЕЛОЕ((СЛЧИС()*(701-50)+50))  
 
 
Цитата из Справки Excel по функции СЛЧИС  
 
Чтобы получить случайное вещественное число в диапазоне между a и b, можно использовать следующую формулу:    
СЛЧИС()*(b-a)+a  
 
P.S. Вы справкой умеете пользоваться? Откройте Excel и нажмите F1
Ошибка при вводе данных в ТекстБокс
 
Да, ошибка возникает. Несовпадение типов (13). Потому, что вы делите любой текст, который записан в TextBox, а так делать нельзя. Знаете почему?  
 
Допустим мы ввели букву 'w' в TextBox, а теперь давайте разделим эту букву на 1000, что у нас будет? - ОШИБКА  
 
Теперь давайте введём в TextBox число 25, а потом удалим его, т.е. 2 раза нажмём на BackSpace, текста в TextBox не останется, т.е. будет "", но мы всё равно делим его на 1000 и получаем ошибку.  
 
Вам нужно делать проверку, является ли текст в TextBox числом или нет. Если это число, то делим, если нет, то НЕ делим.  
 
Проверить число или не число мы ввели в TextBox можно так  
 
Private Sub TextBox1_Change()  
   If IsNumeric(Me.TextBox1.Text) Then 'если в TextBox число, то ...  
       Cells(1, 4).Value = TextBox1.Text  
       TextBox11.Text = CDbl(TextBox1.Text) / 10000  
   End If  
End Sub
Определение диапазона заполненного данными (VBA)
 
может так  
 
Range("A1").CurrentRegion.Address  
 
он же    
 
[A1].CurrentRegion.Address
макрос на крестик
 
Смотрите событие формы QueryClose  
 
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)  
 
'сюда ваш код  
 
End Sub
путь к диапазону combobox
 
См. файл
путь к диапазону combobox
 
Попробуйте так  
 
Private Sub UserForm_Initialize()  
   Me.ComboBox1.RowSource = "Лист1!A1:A10"  
End Sub
Макрос перевода (анг-рус) очень долго работает из-за большого количества цифр. Как можно ускорить?
 
да, не за что. Если что-то будет непонятно, спрашивайте, мы всегда рады помочь.  
 
P.S. Цитировать сообщения лучше не нужно, они занимают много места и подглючивают на нашем сайте
msgBox VBA
 
Hugo, в Excel 2003 был объект Assistant. Там можно было создать Balloon(две буквы l) и с ним работать, типа  
 
Set b = Assistant.NewBalloon  
With b  
       .Heading = "Заголовок"  
end with  
 
и т.д. Но в Excel 2010 этот объект скрыли (Status = Hidden), как и FileSearch
Макрос перевода (анг-рус) очень долго работает из-за большого количества цифр. Как можно ускорить?
 
Попробуйте так  
 
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
msgBox VBA
 
Никак. Можно нарисовать свою форму и ей уже можно указать свойства Left & Height и тем самым корректировать место на экране
Макрос перевода (анг-рус) очень долго работает из-за большого количества цифр. Как можно ускорить?
 
Вы бы всё-таки сделали бы небольшой пример, строк на 10-20. А мы бы вам макрос быстрый бы сделали
Страницы: 1
Наверх