1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Ошибка run-time error '13'

Тема в разделе "Visual Basic", создана пользователем glass44, 1 фев 2016.

  1. glass44

    glass44 New Member

    Регистрация:
    1 фев 2016
    Сообщения:
    1
    Симпатии:
    0
    При заполнении таблицы на 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

    Не могу разобраться, ПОМОГИТЕ ПЛЗ!!! Очень надо!
     
Загрузка...

Поделиться этой страницей