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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 22:49   #21
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Имхо потому что массивы.
Сперва сложите в третий массив или в том же Левый, потом выгрузите как iPrices.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.03.2011, 22:53   #22
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Имхо потому что массивы.
Сперва сложите в третий массив или в том же Левый, потом выгрузите как iPrices.
Не понимаю, можете показать готовое решение?
valerij вне форума Ответить с цитированием
Старый 01.03.2011, 23:01   #23
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Option Explicit

Sub zxc()
    Dim Левый#(1 To 2, 1 To 1), iPrices#(1 To 2, 1 To 1), iRow&, iLL As Byte
    Dim sum_#(1 To 2, 1 To 1)
    
    Application.EnableEvents = False
            For iLL = 1 To 1
    iPrices(1, 1) = 3.32
    iPrices(2, 1) = 2.73
    
    Левый(1, 1) = 0.65 * 0.3
    Левый(2, 1) = 0.45 * 0.3
    
    sum_(1, 1) = iPrices(1, 1) + Левый(1, 1)
    sum_(2, 1) = iPrices(2, 1) + Левый(2, 1)
    
    
        For iRow = 3 To 1323 Step 44
                With Sheets(iLL)
                    .Cells(iRow, 5).Resize(31).Value = iPrices
                    .Cells(iRow, 14).Resize(31).Value = sum_
                End With
             Next
                Erase iPrices
        Next
            Application.EnableEvents = True
End Sub
Только вот зачем там 31?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.03.2011, 23:11   #24
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Так, так работает, я сократил запись, там 31 параметр, наверное проще, никак?
Код:
Sub zxc()
    Dim Левый#(1 To 2, 1 To 1), iPrices#(1 To 2, 1 To 1), iRow&, iLL As Byte
    Application.EnableEvents = False
            For iLL = 1 To 1
    iPrices(1, 1) = 3.32
    iPrices(2, 1) = 2.73
    
    Левый(1, 1) = iPrices(1, 1) + 0.65 * 0.3
    Левый(2, 1) = iPrices(2, 1) + 0.45 * 0.3
        For iRow = 3 To 1323 Step 44
                With Sheets(iLL)
                    .Cells(iRow, 5).Resize(31).Value = iPrices
                    .Cells(iRow, 14).Resize(31).Value = Левый
                End With
             Next
                Erase iPrices
        Next
            Application.EnableEvents = True
End Sub
Hugo121
Спасибо за помощь!!

Последний раз редактировалось valerij; 01.03.2011 в 23:18.
valerij вне форума Ответить с цитированием
Старый 01.03.2011, 23:20   #25
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну можно суммировать в цикле
For i=1 to 31
sum_(i, 1) = iPrices(i, 1) + Левый(i, 1)
next

Может ещё какие закономерности есть...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.03.2011, 23:48   #26
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Ну можно суммировать в цикле
For i=1 to 31
sum_(i, 1) = iPrices(i, 1) + Левый(i, 1)
next

Может ещё какие закономерности есть...
Hugo121
Я, Вас понял, цикл, попробую, я моментом не могу, зеленый в VBA, а пожалуй закономерностей более нет, параметры iPrices и Левый, очень разные.

Если, что - то .... , я продолжу.
Спасибо!!!
valerij вне форума Ответить с цитированием
Старый 15.07.2011, 21:21   #27
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Можно ли упростить? Использую две строки В11:I11 и B13:i13
Если будет нужно, прикреплю файл, 24 кб.
Код:
With [B11:i11] 
    If Not Intersect(Target, .Cells) Is Nothing Then
If [c11] > 14 And [c11] < 15.1 Then всего = 17.14
If [c11] > 15 And [c11] < 15.6 Then всего = 21.53
If [c11] > 15.5 And [c11] < 16.1 Then всего = 23.92
If [c11] > 16 And [c11] < 16.6 Then всего = 26.31
If [c11] > 16.5 And [c11] < 17.1 Then всего = 29.9
If [c11] > 17 And [c11] < 17.6 Then всего = 32.69
If [c11] > 17.5 And [c11] < 18.1 Then всего = 35.88
If [b11] = 0 Then сор = 0
    End If
End With

With [B13:i13]
    If Not Intersect(Target, .Cells) Is Nothing Then
If [c13] > 14 And [c13] < 15.1 Then всего = 17.14
If [c13] > 15 And [c13] < 15.6 Then всего = 21.53
If [c13] > 15.5 And [c13] < 16.1 Then всего = 23.92
If [c13] > 16 And [c13] < 16.6 Then всего = 26.31
If [c13] > 16.5 And [c13] < 17.1 Then всего = 29.9
If [c13] > 17 And [c13] < 17.6 Then всего = 32.69
If [c13] > 17.5 And [c13] < 18.1 Then всего = 35.88
If [b13] = 0 Then сор = 0
    End If
End With
valerij вне форума Ответить с цитированием
Старый 15.07.2011, 21:34   #28
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

и так все красиво было...
Цитата:
for r = 11 to 13 step 2
If Intersect(Target, range(Cells(r,3), cells(r,9))) Is Nothing Then exit for
If cells(r,3) > 14 And cells(r,3) < 15.1 Then всего = 17.14
If cells(r,3) > 15 And cells(r,3) < 15.6 Then всего = 21.53
If cells(r,3) > 15.5 And cells(r,3) < 16.1 Then всего = 23.92
If cells(r,3) > 16 And cells(r,3) < 16.6 Then всего = 26.31
If cells(r,3) > 16.5 And cells(r,3) < 17.1 Then всего = 29.9
If cells(r,3) > 17 And cells(r,3) < 17.6 Then всего = 32.69
If cells(r,3) > 17.5 And cells(r,3) < 18.1 Then всего = 35.88
If cells(r,2) = 0 Then сор = 0
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.07.2011, 22:01   #29
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
и так все красиво было...
Да, мысль понял, воплотить, НЕТ!

Последний раз редактировалось valerij; 16.07.2011 в 16:27.
valerij вне форума Ответить с цитированием
Старый 16.07.2011, 01:35   #30
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Игорь, почему, запускаю только так, ни чего друго нет, 11 выскакивает, а 13, нет?
Код:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Excel.Range)
For r = 11 To 13 Step 2
If Intersect(Target, Range(Cells(r, 2), Cells(r, 9))) Is Nothing Then Exit For
MsgBox r
Next
End Sub

Последний раз редактировалось valerij; 16.07.2011 в 16:26.
valerij вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите упростить простой макрос frantic150 Microsoft Office Excel 2 23.06.2009 04:55
проверьте плз код!можно ли его оптимизировать или упростить? -ushёl- Помощь студентам 10 23.04.2009 21:07
Вот! Тот макрос, который заставил обратится меня на этот форум! Дмитрий Фукс Microsoft Office Excel 6 10.04.2009 10:29
Запереть макрос можно? zander Microsoft Office Excel 1 15.02.2009 15:40