Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: нужна помощь! Добавлено: 14.08.07 11:50  

Автор вопроса:  Piastra | Web-сайт: no
Здравствуйте, подскажите пожалуйста как можно зделать так, чтобы при нажатии кнопки макроса в excel - данные определённых столбцов умножались на определённую ячейку??

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #1 Добавлено: 14.08.07 15:32
Сервис - Макрос - Начать запись. Делаем, что нужно, останавливаем. Приспосабливаем кнопку. По необходимости корректируем код ;)

Ответить

Номер ответа: 2
Автор ответа:
 Piastra



Вопросов: 1
Ответов: 6
 Web-сайт: no
 Профиль | | #2
Добавлено: 15.08.07 12:19
 .. если бы я знала что нужно.. вопросы бы не задавала))
 а можно по подробнее что нужно написать в программе?

Ответить

Номер ответа: 3
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #3 Добавлено: 15.08.07 12:50
Так я ж вам и советую самый доступный способ - записать в макрорекордер и смотреть как это работает

Ответить

Номер ответа: 4
Автор ответа:
 Piastra



Вопросов: 1
Ответов: 6
 Web-сайт: no
 Профиль | | #4
Добавлено: 15.08.07 14:39
.. ну представьте, что я раньше никогда не работала с макросами..
Макросы - имя макроса Книга1 .. что дальше? мне нужна сама программа: как это записать, чтобы работало.

Ответить

Номер ответа: 5
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #5 Добавлено: 15.08.07 15:03
А вообще в Ехселе вы знаете как это делать - умножить ячейки столбца на какую-либо ячейку? Это в макрос и запишите для начала :)

Ответить

Номер ответа: 6
Автор ответа:
 Andrew_nik



Вопросов: 15
Ответов: 30
 Профиль | | #6 Добавлено: 15.08.07 15:24
Измени в соответствии с тем, как тебе это надо и пользуйся


Sub Macro()
 Dim i&, A&, B&
   ' Вставляем в столбцец следующие значения
    Range("B2";).Value = 5
    Range("B3";).Value = 10
    Range("B4";).Value = 15
    Range("B5";).Value = 20
    
    ' Вставляем в ячейку Е2 значение - на что будет умножать
    Range("E2";).Value = 120
    ' Присваиваем ячейкам в столбце С значения, равные значению в толбце "В" * "E2"
    For i = 2 To 5
     A = Range("B" & i).Value
     B = Range("E2";).Value
     Range("c" & i).Value = A * B
    Next
        
End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Piastra



Вопросов: 1
Ответов: 6
 Web-сайт: no
 Профиль | | #7
Добавлено: 15.08.07 16:06
.. я так понимаю, это формируется новый массив? мне нужно, чтобы данные изменялись непосредственно в одном и том же..
 столбцы С,F,I,L,O,R,U,X,AA,AD,AG,AI (диапозон 9:37) должны умножаться на ячейку D4 , а столбцы AM,AP,AS,AV,AY,BB,BE,BH,BK,BN,BQ,BS (диапозон тот же) на ячейку I4. Это нужно записывать как Range("C9:C37";).Value = ?
 .. и спасибо за помощь)

Ответить

Номер ответа: 8
Автор ответа:
 Andrew_nik



Вопросов: 15
Ответов: 30
 Профиль | | #8 Добавлено: 15.08.07 18:18
Вот так можно перемножить первый диапазон
С,F,I,L,O,R,U,X,AA,AD,AG,AI (диапозон 9:37) на D4.

По аналогии так же и второй...


Sub Macro_f(col As String)
 Dim j&, ColValue&, myConst&
   For j = 9 To 37
'----Здесь - устанавливаем адрес константы, на которую будем уиножать
     myConst = Range(";D4";).Value
'----------------------------------------
     ColValue = Range(col & j).Value
     Range(col & j).Value = ColValue * myConst
  Next
End Sub

Sub Multiply()
Dim col As String
   col = "C"
   Macro_f (col)
   
   col = "F"
   Macro_f (col)
   
   col = "I"
   Macro_f (col)
   
   col = "L"
   Macro_f (col)
   
   col = "O"
   Macro_f (col)
   
   col = "R"
   Macro_f (col)
   
   col = "U"
   Macro_f (col)
   
   col = "XX"
   Macro_f (col)
   
   col = "AA"
   Macro_f (col)
   
   col = "AD"
   Macro_f (col)
   
   col = "AG"
   Macro_f (col)
   
   col = "AI"
   Macro_f (col)
End Sub

Ответить

Номер ответа: 9
Автор ответа:
 Andrew_nik



Вопросов: 15
Ответов: 30
 Профиль | | #9 Добавлено: 16.08.07 10:05
И еще ...

Sub SubMultiply(Col As String, ConstAdr As String)
 Dim j&, ColValue&, myConst&
' Col - название столбца где, находятся данные
' ConstAdr - адрес постоянной, на которую надо умножать
  For j = 9 To 37
     myConst = Range(ConstAdr).Value
     ColValue = Range(Col & j).Value
     Range(Col & j).Value = ColValue * myConst
  Next
End Sub

Sub dd()
   SubMultiply "C", ";D4"
   SubMultiply "F", ";D4"
   SubMultiply "I", ";D4"
   SubMultiply "L", ";D4"
   SubMultiply "O", ";D4"
   SubMultiply "R", ";D4"
   SubMultiply "U", ";D4"
   SubMultiply "X", ";D4"
   SubMultiply "AA", ";D4"
   SubMultiply "AD", ";D4"
   SubMultiply "AG", ";D4"
   SubMultiply "AI", ";D4"
End Sub

Ответить

Номер ответа: 10
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #10
Добавлено: 16.08.07 11:01
Решение без цикла:
Sub myMultipl()
    Dim myRange As Range, r As Range, myMult As Range
    With ActiveSheet
    'столбцы С,F,I,L,O,R,U,X,AA,AD,AG,AI (диапозон 9:37) D4
        Set myMult = .Range(";D4";)
        Set r = .Range("9:37";)
        Set myRange = Union( _
            Intersect(.Range("C:C";), r), _
            Intersect(.Range("F:F";), r), _
            Intersect(.Range("I:I";), r), _
            Intersect(.Range("L:L";), r), _
            Intersect(.Range("O:O";), r), _
            Intersect(.Range("R:R";), r), _
            Intersect(.Range("U:U";), r), _
            Intersect(.Range("X:X";), r), _
            Intersect(.Range("AA:AA";), r), _
            Intersect(.Range("AD:AD";), r), _
            Intersect(.Range("AG:AG";), r), _
            Intersect(.Range("AI:AI";), r))
        myMult.Copy
        myRange.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
    'столбцы AM,AP,AS,AV,AY,BB,BE,BH,BK,BN,BQ,BS (диапозон тот же) на ячейку I4.
        Set myMult = .Range("I4";)
        Set myRange = Union( _
            Intersect(.Range("AM:AM";), r), _
            Intersect(.Range("AP:AP";), r), _
            Intersect(.Range("AS:AS";), r), _
            Intersect(.Range("AV:AV";), r), _
            Intersect(.Range("AY:AY";), r), _
            Intersect(.Range("BB:BB";), r), _
            Intersect(.Range("BE:BE";), r), _
            Intersect(.Range("BH:BH";), r), _
            Intersect(.Range("BK:BK";), r), _
            Intersect(.Range("BN:BN";), r), _
            Intersect(.Range("BQ:BQ";), r), _
            Intersect(.Range("BS:BS";), r))
        myMult.Copy
        myRange.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
    End With
End Sub

Ответить

Номер ответа: 11
Автор ответа:
 Piastra



Вопросов: 1
Ответов: 6
 Web-сайт: no
 Профиль | | #11
Добавлено: 16.08.07 13:09
myRange.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply

вот эта строка почему - то не идёт.. пишет, что метод PasteSpecial из класса Range завершён не верно...
 ;(спасибо за помощь)

Ответить

Номер ответа: 12
Автор ответа:
 Piastra



Вопросов: 1
Ответов: 6
 Web-сайт: no
 Профиль | | #12
Добавлено: 16.08.07 13:13
вот!, как раз этого мне и не хватало )) .. и ещё.. какое должно быть завершение первой операции? для того, чтобы начать считать вторую часть столбцов?
End With
End Sub ?

Ответить

Номер ответа: 13
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #13
Добавлено: 16.08.07 13:53
пишет, что метод PasteSpecial из класса Range завершён не верно...


Странно.. у меня все отработалось на примере листа, заполненного двойками... может быть у Вас умножаемые данные на листе не все числовые?

и ещё.. какое должно быть завершение первой операции?

Никакой... обе операции делаются внутри одного блока With ActiveSheet.

Ответить

Номер ответа: 14
Автор ответа:
 Piastra



Вопросов: 1
Ответов: 6
 Web-сайт: no
 Профиль | | #14
Добавлено: 16.08.07 16:40
.. всё равно что - то не получается. Дело в том, что некоторые столбцы имеют нулевое значение.. как вы думаете будет проще, если я вышлю вам файл с массивом?

Ответить

Номер ответа: 15
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #15
Добавлено: 16.08.07 17:02
Нулевые значения не должны мешать... могли помешать пустые ячейки... но я не уверен...

шлите в упакованном (сжатом) виде...

genyaa[coбачkа]nm.ru

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам