Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Анализ типа ячеек / 8 сообщений из 8, страница 1 из 1
14.03.2007, 14:18:24
    #34390294
S
S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
Добрый День, Всем!
Подскажите, пожалуйста, как написать макрос:
Есть лист, в котором содержится таблица (т.е. есть ячейки как числового значения, так и текстового) и есть кнопка на этом листе. Нужно умножить все числовые данные на определенное число. Т.е. хотелось бы, чтобы программа перебирала все заполненные ячейки, анализировала тип данных ячейки и в случае, если тип числовой, умножала на какое-нибудь.
...
Рейтинг: 0 / 0
14.03.2007, 15:29:14
    #34390636
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
в код кнопки поместите код из этой процедуры. Умножатся только числа, но не формулы, дающие числа.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub MUL()
Dim MyNum As Double
Dim cell As Range

    MyNum = Application.InputBox("Введите число, на которое умножить", ,  1 , , , , ,  1 )
    
    For Each cell In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
        cell.Value = cell.Value * MyNum
    Next cell
    
End Sub
...
Рейтинг: 0 / 0
14.03.2007, 15:44:37
    #34390688
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
Привет vbapro!
А как сделать чтобы умножение происходило только в определенном столбце, например в "С", а не на всем листе?
...
Рейтинг: 0 / 0
14.03.2007, 15:49:38
    #34390705
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
andMegaMПривет vbapro!
А как сделать чтобы умножение происходило только в определенном столбце, например в "С", а не на всем листе?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim cell As Range
Dim targetRng As Range

    MyNum = Application.InputBox("Ââåäèòå ÷èñëî, íà êîòîðîå óìíîæèòü", ,  1 , , , , ,  1 )
    
    Set targetRng = Application.Intersect(ActiveSheet.Range("C:C"), ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers))
    
    For Each cell In targetRng
        cell.Value = cell.Value * MyNum
    Next cell
    
End Sub
...
Рейтинг: 0 / 0
14.03.2007, 15:50:38
    #34390709
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
vbapro andMegaMПривет vbapro!
А как сделать чтобы умножение происходило только в определенном столбце, например в "С", а не на всем листе?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim cell As Range
Dim targetRng As Range

    MyNum = Application.InputBox("Ââåäèòå ÷èñëî, íà êîòîðîå óìíîæèòü", ,  1 , , , , ,  1 )
    
    Set targetRng = Application.Intersect(ActiveSheet.Range("C:C"), ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers))
    
    For Each cell In targetRng
        cell.Value = cell.Value * MyNum
    Next cell
    
End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub MUL()
Dim MyNum As Double
Dim cell As Range
Dim targetRng As Range

    MyNum = Application.InputBox("Введите число, на которое умножить", ,  1 , , , , ,  1 )
    
    Set targetRng = Application.Intersect(ActiveSheet.Range("C:C"), ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers))
    
    For Each cell In targetRng
        cell.Value = cell.Value * MyNum
    Next cell
    
End Sub
...
Рейтинг: 0 / 0
14.03.2007, 15:51:46
    #34390714
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
Спасибо большое. Очень нужная штука
...
Рейтинг: 0 / 0
15.03.2007, 16:13:37
    #34393943
S
S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
Спасибо большое! Все работает, только вот если нажать на кнопку <отмена>, то все числа на листе обнуляются.:)
...
Рейтинг: 0 / 0
15.03.2007, 16:28:04
    #34393988
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ типа ячеек
SСпасибо большое! Все работает, только вот если нажать на кнопку <отмена>, то все числа на листе обнуляются.:)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub MUL()
Dim MyNum As Double
Dim cell As Range
Dim targetRng As Range

    MyNum = Application.InputBox("Введите число, на которое умножить", ,  1 , , , , ,  1 )
    
    If MyNum =  0  Then Exit Sub
    
    Set targetRng = Application.Intersect(ActiveSheet.Range("C:C"), ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers))
    
    For Each cell In targetRng
        cell.Value = cell.Value * MyNum
    Next cell
    
End Sub
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Анализ типа ячеек / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]