Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 16:26   #11
sergey_wckd
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 13
По умолчанию

не работает...
sergey_wckd вне форума Ответить с цитированием
Старый 05.11.2009, 13:25   #12
sergey_wckd
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 13
По умолчанию

Друзья, помогите пожалуйста с этим кодом в нём ошибка!сегодня надо дать какой-то ответ, а то останусь без работы, придётся расстасться с машиной
мечты и коллекторы сразу возьмут меня.очень надеюсь на вас.
sergey_wckd вне форума Ответить с цитированием
Старый 05.11.2009, 13:30   #13
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Друзья, помогите пожалуйста с этим кодом в нём ошибка!
Цитата:
не работает...
Пока будет подобное описание ошибки, никто Вам не поможет.

Неужели сложно описать в подробностях, что именно не работает (и как должно работать)?

Цитата:
придётся расстасться с машиной мечты
Машина - не главное в жизни.
А если останетесь на этой работе, все задачи будете решать с помощью форума?

Цитата:
и коллекторы сразу возьмут меня
Звучит ужасающе )))
EducatedFool вне форума Ответить с цитированием
Старый 05.11.2009, 13:59   #14
sergey_wckd
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 13
По умолчанию

Описаник ошибки:
Ошибка 13
type mismath



Public Sub zapsuk()
Dim i As Integer, j As Integer, k As Integer, j1 As Integer, j2 As Integer
Dim sm As Double
Dim st As String
Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
Set sh1 = ThisWorkbook.Worksheets("Лист1")
Set sh2 = ThisWorkbook.Worksheets("Лист2")
Set sh3 = ThisWorkbook.Worksheets("Лист3")
j = sh1.Cells(Rows.Count, "A").End(xlUp).Row
j1 = sh2.Cells(Rows.Count, "A").End(xlUp).Row
j2 = sh3.Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To j
st = Trim(Str(sh1.Range("a" & i)))
For k = 1 To j1
If Trim(Str(sh2.Range("a" & k))) = st Then
sh1.Range("c" & i) = CDbl(Str(sh2.Range("c" & i)) - CDbl(Str(sh1.Range("c" & k))))
sh2.Range("d" & k) = 1
sh1.Range("d" & i) = 1
End If
Next k
Next i
For i = 1 To j
If Not sh1.Range("d" & i) = 1 Then
sh3.Range("a" & j1 + 1) = sh1.Range("a" & i)
sh3.Range("b" & j1 + 1) = sh1.Range("b" & i)
sh3.Range("c" & j1 + 1) = sh1.Range("c" & i)
j = j - 1
sh1.Rows(i).Delete
i = i - 1
End If
Next i
For i = 1 To j1
If Not sh1.Range("d" & i) = 1 Then
sh3.Range("a" & j1 + 1) = sh2.Range("a" & i)
sh3.Range("b" & j1 + 1) = sh2.Range("b" & i)
sh3.Range("c" & j1 + 1) = sh2.Range("c" & i)
j = j - 1
sh1.Rows(i).Delete
i = i - 1
End If
Next i

End Sub

Код:
Машина - не главное в жизни.
А если останетесь на этой работе, все задачи будете решать с помощью форума?
Нет мне нужно решить, только эту конкретную задачу.

Цитата:
Звучит ужасающе )))
да))
sergey_wckd вне форума Ответить с цитированием
Старый 05.11.2009, 14:55   #15
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот в таком виде макрос работает:

Код:
Sub auto_open()
    zapsuk
End Sub


Public Sub zapsuk()
    Dim i As Integer, j As Integer, k As Integer, j1 As Integer, j2 As Integer
    Dim sm As Double
    Dim st As String
    Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
    Set sh1 = ThisWorkbook.Worksheets("Лист1")  ' название первого листа
    Set sh2 = ThisWorkbook.Worksheets("Лист2")    ' название второго листа
    Set sh3 = ThisWorkbook.Worksheets("Лист3")    ' название третьего листа
    j = sh1.Cells(Rows.Count, "A").End(xlUp).Row
    j1 = sh2.Cells(Rows.Count, "A").End(xlUp).Row
    j2 = sh3.Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To j
        st = Trim(sh1.Range("a" & i))
        For k = 1 To j1
            If Trim(sh2.Range("a" & k)) = st Then
                sh1.Range("c" & i) = CDbl(sh2.Range("c" & i)) - CDbl(sh1.Range("c" & k))
                sh2.Range("d" & k) = 1
                sh1.Range("d" & i) = 1
            End If
        Next k
    Next i
    For i = 1 To j
        If Not sh1.Range("d" & i) = 1 Then
            sh3.Range("a" & j1 + 1) = sh1.Range("a" & i)
            sh3.Range("b" & j1 + 1) = sh1.Range("b" & i)
            sh3.Range("c" & j1 + 1) = sh1.Range("c" & i)
            j = j - 1
            sh1.Rows(i).Delete
            i = i - 1
        End If
    Next i
    For i = 1 To j1
        If Not sh1.Range("d" & i) = 1 Then
            sh3.Range("a" & j1 + 1) = sh2.Range("a" & i)
            sh3.Range("b" & j1 + 1) = sh2.Range("b" & i)
            sh3.Range("c" & j1 + 1) = sh2.Range("c" & i)
            j = j - 1
            sh1.Rows(i).Delete
            i = i - 1
        End If
    Next i
End Sub
Правда, работает ОЧЕНЬ долго, и непонятно что делает, но работает.
Убрал из кода вызывавшие ошибки функции Str()

Проверяйте:


Могу сделать гораздо более быстрый макрос, но не бесплатно.
EducatedFool вне форума Ответить с цитированием
Старый 05.11.2009, 16:07   #16
sergey_wckd
Пользователь
 
Регистрация: 26.10.2009
Сообщений: 13
По умолчанию

ну спасибо, работает)
жаль, что делает не то, что надо
sergey_wckd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA Excel .::pk::. Помощь студентам 2 14.05.2016 09:54
Excel VBA, Экспорт в txt, кодировка файла UTF-16 LE/UCS-2 Little Endian+еще один интересный вопрос Maxximus Microsoft Office Excel 17 04.09.2009 20:03
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47
VBA i Excel corsarlt Microsoft Office Excel 3 03.04.2008 06:13