Страницы: 1
RSS
Где различия в кодахVBA ?
 
Всем день добрый. В прилагаемом файле два кода по структуре ничем не отличаются. Но в листе "Справочник" проблем нет, а в листе "Сводная" умножение не идет. Где собака зарыта?
 
Смотрим код для листа «Сводная»

1) Слово «Сводная» написано в 2 вариантах (в первых 3-4 строках кода - правильно, в остальных - с ошибкой (какая-то буква заменена на похожую из английского алфавита))

Решение: копируем имя листа, и вставляем его в код вместо нынешних вариантов написания

2) ещё одна проблема
Код
...
Sheets("Сводная").Cells(СтрокаСводная, 10).Value = Sheets("Сводная").Cells(СтрокаСводная, 4).Value _
                                                                   * CDbl(Sheets("БД").Cells(СтрокаБД, 9))
...

а именно, - эту его часть:
Код
CDbl(Sheets("БД").Cells(СтрокаБД, 9)

Если ячейка пустая, - код выдаст ошибку



PS: Можно было бы намного упростить код
Или вообще его убрать, воспользовавшись формулами
 
Сравните строки 2 на листах. Сравните данные в столбце С на листах.
Или вы считаете, что Excel сам это должен сделать?  :)
Он может, но вы об этом не просили.

В модуле листа указывать ссылку на родной лист не нужно.
Ссылку на другой лист можно оформить группой Wiht/End With

Не переделывал, упростил ссылки. Теперь может работать на двух листах:
Код
Private Sub CommandButton1_Click()
СтрокаСпр = 2
    Do While Cells(СтрокаСпр, 1) <> ""
        Название = Sheets("Справочник").Cells(СтрокаСпр, 1)
        СтрокаЦен = 2
        
        With Sheets("Цены")
            Do While .Cells(СтрокаЦен, 1) <> ""
                If .Cells(СтрокаЦен, 2) = Название Then
                    Cells(СтрокаСпр, 4) = .Cells(СтрокаЦен, 4)
                    Cells(СтрокаСпр, 6) = .Cells(СтрокаЦен, 6)
                    Cells(СтрокаСпр, 5).Value = Cells(СтрокаСпр, 3).Value _
                    * CDbl(.Cells(СтрокаЦен, 5))
                    Cells(СтрокаСпр, 7).Value = Cells(СтрокаСпр, 3).Value _
                    * CDbl(.Cells(СтрокаЦен, 7))
                End If
                СтрокаЦен = СтрокаЦен + 1
            Loop
        End With
        
        СтрокаСпр = СтрокаСпр + 1
    Loop
End Sub
 
Вы правы. Заменил "Сводная" и все работает как надо. Большое спасибо, сам бы не догадался. Хотя часто проверяю "х" , "x" Про пустую ячейку пока не проникся. Пробовал, но все работает. Возможно есть и более простые и лучшие варианты, но для меня наверно будет трудно вникнуть во всякие коллекции и т.п. Если Вам не сложно и Вы приложите пример с объяснением, буду очень признателен
 
Здравствуй, Виктор. Как там в Запорожье? Что-то ты пропал с весны. Попробовал твой вариант. Пока не работает. Но я про этот вариант знаю. Только практики мало. Только учусь. Сейчас гонят на дачу, вечером разберусь.
Страницы: 1
Читают тему
Наверх