![]() |
Модераторы: mihanik |
![]() ![]() ![]() |
|
glass44 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.2.2016 Репутация: нет Всего: нет |
При заполнении таблицы на 3-4 строке выскакивает вот это;
Вот полный код ! 'читаем признак Private Sub inic() Dim k, z, priznak Application.ScreenUpdating = False Workbooks.Open Filename:=ThisWorkbook.path + "" + "конф.xls" With Workbooks("конф.xls") For k = 2 To .Worksheets("пользовательские").Range("A100").End(xlUp).Row priznak = .Worksheets("пользовательские ").Cells(k, 1).Value ComboBox4.AddItem priznak Next k End With Workbooks("конф.xls").Close (False) End Sub Private Sub Frame2_Click() End Sub Private Sub UserForm_Initialize() inic End Sub ФОРМИРОВАНИЕ КАТЕГОРИИ Private Sub ComboBox4_Change() 'при выборе признака ComboBox1.Clear ComboBox2.Clear Dim sh As Worksheet Dim path, list, cat, k Application.ScreenUpdating = False Workbooks.Open Filename:=ThisWorkbook.path + "" + "конф.xls" With Workbooks("конф.xls") For k = 2 To .Worksheets("прайс-листы").Range("A1000").End(xlUp).Row If .Worksheets("прайс-листы ").Cells(k, 12) = ComboBox4.Text Then path = .Worksheets("прайс-листы ").Cells(k, 1).Value list = .Worksheets("прайс-листы ").Cells(k, 2).Value Set sh = GetObject(path).Sheets(list) cat = .Worksheets("прайс-листы ").Cells(k, 3).Value ComboBox1.AddItem sh.Range(cat).Value втягиваем категорию sh.Parent.Close (False) Else End If Next k End With Workbooks("конф.xls").Close (False) 'sh.Parent.Close (False) End Sub 'ФОРМИРОВАНИЕ НАИМЕНОВАНИЯ Private Sub ComboBox1_Change() 'при выборе категории Dim sh As Worksheet Dim path, list, cena, k, cat, mat, vid, ed, e, tol, procent Application.ScreenUpdating = False ListBox1.Clear Workbooks.Open Filename:=ThisWorkbook.path + "" + "конф.xls" With Workbooks("конф.xls") For k = 2 To 100 If .Worksheets("прайс-листы ").Range("L" & k).Text = ComboBox4.Text Then path = .Worksheets("прайс-листы ").Cells(k, 1).Value list = .Worksheets("прайс-листы ").Cells(k, 2).Value Set sh = GetObject(path).Sheets(list) 'формируем список наименование и цена Dim n, g, c, cc, ccc cat = .Worksheets("прайс-листы ").Cells(k, 3).Value If ComboBox1.Value = sh.Range(cat).Value Then 'втягиваем категорию g = Mid(.Worksheets("прайс-листы ").Cells(k, 4).Text, 2) 'берем из ячейки с началом списка диапазона только цифру c = Mid(.Worksheets("прайс-листы ").Cells(k, 5).Text, 2) ' берем из ячейки с концом списка диапазона только цифру cc = Left(.Worksheets("прайс-листы ").Cells(k, 4).Text, 1) ' берем из ячейки с началом списка диапазона только букву ccc = Left(.Worksheets("прайс-листы ").Cells(k, 6).Text, 1) ' берем из ячейки с началом цены только букву ed = .Worksheets("прайс-листы ").Cells(k, 8).Text mat = .Worksheets("прайс-листы ").Cells(k, 9).Text tol = .Worksheets("прайс-листы ").Cells(k, 10).Text vid = .Worksheets("прайс-листы ").Cells(k, 11).Text procent = .Worksheets("прайс-листы ").Cells(k, 13).Text valu = .Worksheets("прайс-листы ").Cells(k, 14).Text 'ставим значение в листбокс For n = g To c a = sh.Cells(n, cc).Text ListBox1.AddItem a 'наименования ComboBox2.list = ListBox1.list 'наименования 'цены и остальные пункты Me.ListBox1.list(Me.ListBox1.ListCount - 1, 1) = sh.Cells(n, ccc).Text 'цена Me.ListBox1.list(Me.ListBox1.ListCount - 1, 2) = ed Me.ListBox1.list(Me.ListBox1.ListCount - 1, 3) = mat Me.ListBox1.list(Me.ListBox1.ListCount - 1, 4) = tol Me.ListBox1.list(Me.ListBox1.ListCount - 1, 5) = vid Me.ListBox1.list(Me.ListBox1.ListCount - 1, 6) = procent Me.ListBox1.list(Me.ListBox1.ListCount - 1, 7) = valu Me.ListBox1.list(Me.ListBox1.ListCount - 1, 8) = ComboBox4.Text Next n End If sh.Parent.Close (False) End If Next k End With Workbooks("конф.xls").Close (False) 'sh.Parent.Close (False) End Sub 'ВСТАВКА ЗНАЧЕНИЙ Private Sub ComboBox2_Change() ' при выборе наименование If ComboBox2.Value = "" Then 'если комбо очистили то идем на иник Else '*********ИНАЧЕ ВСТАВЛЯЕМ ЗНАЧЕНИЕ*************** inic2: Dim koli As Variant koli = Application.InputBox("ВВЕДИТЕ КОЛИЧЕСТВО!", "НОВЫЙ РАСЧЕТ") If koli = False Then Exit Sub 'если нажать Cancel If koli <> "" Then 'если ни чего не ввели If IsNumeric(koli) Then 'если ввели цифру Новый расчет.ListView1.ListItems.Add , , "" 'вынесли вверх чтобы не было пустой строки For i = 1 To Новый расчет.ListView1.ListItems.Count If Новый расчет.ListView1.ListItems.Item(i) <> "" Then Else Новый расчет.ListView1.ListItems.Item(i) = ComboBox1.Value 'категория Новый расчет.ListView1.ListItems.Item(i).SubItems(1) = ComboBox2.Value 'наименование Новый расчет.ListView1.ListItems.Item(i).SubItems(2) = ListBox1.list(ListIndex, 3) 'материал Новый расчет.ListView1.ListItems.Item(i).SubItems(3) = ListBox1.list(ListIndex, 4) 'толщина Новый расчет.ListView1.ListItems.Item(i).SubItems(4) = ListBox1.list(ListIndex, 5) 'вид Новый расчет.ListView1.ListItems.Item(i).SubItems(6) = ListBox1.list(ListIndex, 2) 'ед Новый расчет.ListView1.ListItems.Item(i).SubItems(7) = CDbl(ListBox1.list(ComboBox2.ListIndex, 1)) 'закупка Новый расчет.ListView1.ListItems.Item(i).SubItems(9) = ListBox1.list(ListIndex, 6) 'процент Новый расчет.ListView1.ListItems.Item(i).SubItems(5) = koli 'кол-во Новый расчет.ListView1.ListItems.Item(i).SubItems(8) = koli * Новый расчет.ListView1.ListItems.Item(i).SubItems(7) 'цена p = Íîâûé_ðàñ÷åò.ListView1.ListItems.Item(i).SubItems(9) / 100 + 1 Новый расчет.ListView1.ListItems.Item(i).SubItems(10) = p * Новый расчет.ListView1.ListItems.Item(i).SubItems(8) Новый расчет.ListView1.ListItems.Item(i).SubItems(11) = Новый расчет.ListView1.ListItems.Item(i).SubItems(10) - Новый расчет.ListView1.ListItems.Item(i).SubItems(8) Новый расчет.ListView1.ListItems.Item(i).SubItems(12) = ComboBox4.Text 'общая стоимость Dim a As Currency a = Новый расчет.ListView1.ListItems.Item(i).SubItems(10) OldStr = Новый расчет.TextBox1.Value NewStr = Replace(OldStr, ".", ",") 'меняем точку из текстбокса на запятую для вычисления s = NewStr s = s + a Новый расчет.TextBox1.Value = s Новый расчет.TextBox28.Value = s Новый расчет.TextBox34.Value = s 'краткий отчет Новый расчет.TextBox4.Value = s 'общая сумма Новый расчет.TextBox2.Value = i 'всего строк Dim aa As Currency aa = Новый расчет.ListView1.ListItems.Item(i).SubItems(8) 'закупка ss = Новый расчет.TextBox3.Value 'закупка ss = ss + aa (ОШИБКА) Новый расчет.TextBox3.Value = ss Новый расчет.TextBox5.Value = s - ss End If Next i Else 'это для ошибки ввода koli MsgBox "Вы ни чего не ввели, или ввели букву!", vbExclamation, "" GoTo inic2 End If Else MsgBox " Вы ни чего не ввели, или ввели букву!", vbExclamation, "" GoTo inic2 End If '**********************ЧИСТИМ ЗА СОБОЙ И ИДЕМ НА ИНИК ListBox1.Clear ComboBox2.Clear ComboBox1.Clear ComboBox4.Clear inic End If End Sub Private Sub CommandButton1_Click() Unload компоненты End Sub Не могу разобраться, ПОМОГИТЕ ПЛЗ!!! Очень надо! |
|||
|
||||
Angel666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 8.9.2011 Репутация: нет Всего: 1 |
А в чем проблема запустить отладку и поставить точку остановки на этом
aa = Новый расчет.ListView1.ListItems.Item(i).SubItems(8) 'закупка ss = Новый расчет.TextBox3.Value 'закупка и посмотреть существуют ли эти объекты в данный момент или нет. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
glass44 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.2.2016 Репутация: нет Всего: нет |
А как, я особо не силен в программировании. Просто очень нужна этоа программа. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование, связанное с MS Office" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |