powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Анализ типа ячеек
8 сообщений из 8, страница 1 из 1
Анализ типа ячеек
    #34390294
S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
S
Гость
Добрый День, Всем!
Подскажите, пожалуйста, как написать макрос:
Есть лист, в котором содержится таблица (т.е. есть ячейки как числового значения, так и текстового) и есть кнопка на этом листе. Нужно умножить все числовые данные на определенное число. Т.е. хотелось бы, чтобы программа перебирала все заполненные ячейки, анализировала тип данных ячейки и в случае, если тип числовой, умножала на какое-нибудь.
...
Рейтинг: 0 / 0
Анализ типа ячеек
    #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
Анализ типа ячеек
    #34390688
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет vbapro!
А как сделать чтобы умножение происходило только в определенном столбце, например в "С", а не на всем листе?
...
Рейтинг: 0 / 0
Анализ типа ячеек
    #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
Анализ типа ячеек
    #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
Анализ типа ячеек
    #34390714
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое. Очень нужная штука
...
Рейтинг: 0 / 0
Анализ типа ячеек
    #34393943
S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
S
Гость
Спасибо большое! Все работает, только вот если нажать на кнопку <отмена>, то все числа на листе обнуляются.:)
...
Рейтинг: 0 / 0
Анализ типа ячеек
    #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
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Анализ типа ячеек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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