Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Создание примитивного счетчика - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание примитивного счетчика (Макросы/Sub)
Создание примитивного счетчика
vdekameron Дата: Вторник, 12.01.2016, 17:23 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, понимаю что вопрос простейший, но не знаю как реализовать, так как слаб в VBA. Нужно чтобы когда на листе в excel писалась буква Г в ячейке допустим A1 работал счетчик, т.е введена одна Г , в ячейке A1 появляется цифра 1, еще где то ставим "г" в А1 уже -2 и т.д.
Заранее спасибо!
К сообщению приложен файл: 9360011.xlsx(8Kb)
 
Ответить
СообщениеДобрый день, понимаю что вопрос простейший, но не знаю как реализовать, так как слаб в VBA. Нужно чтобы когда на листе в excel писалась буква Г в ячейке допустим A1 работал счетчик, т.е введена одна Г , в ячейке A1 появляется цифра 1, еще где то ставим "г" в А1 уже -2 и т.д.
Заранее спасибо!

Автор - vdekameron
Дата добавления - 12.01.2016 в 17:23
Manyasha Дата: Вторник, 12.01.2016, 17:31 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1826
Репутация: 765 ±
Замечаний: 0% ±

Excel 2007, 2010
vdekameron, а так не подойдет?
Код
=СЧЁТЕСЛИ($B$1:$P$24;"г")

Диапазон нужный поставьте.


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеvdekameron, а так не подойдет?
Код
=СЧЁТЕСЛИ($B$1:$P$24;"г")

Диапазон нужный поставьте.

Автор - Manyasha
Дата добавления - 12.01.2016 в 17:31
vdekameron Дата: Вторник, 12.01.2016, 17:34 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
да я же вроде пишу в ветке VBA. мне нужен код. со счет если я сам знаю
 
Ответить
Сообщениеда я же вроде пишу в ветке VBA. мне нужен код. со счет если я сам знаю

Автор - vdekameron
Дата добавления - 12.01.2016 в 17:34
Roman777 Дата: Вторник, 12.01.2016, 17:35 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 748
Репутация: 81 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
В модуль нужного листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "г" Or Target = "Г" Then
  Cells(1, 1) = Cells(1, 1) + 1
End If
End Sub
[/vba]
Правда если в ячейку где уже стоит "г" или "Г" вписать заного какой-нибудь из этих символов, в ячейке А1 всё-равно приплюсуется =))


Много чего не знаю!!!!
 
Ответить
СообщениеВ модуль нужного листа
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "г" Or Target = "Г" Then
  Cells(1, 1) = Cells(1, 1) + 1
End If
End Sub
[/vba]
Правда если в ячейку где уже стоит "г" или "Г" вписать заного какой-нибудь из этих символов, в ячейке А1 всё-равно приплюсуется =))

Автор - Roman777
Дата добавления - 12.01.2016 в 17:35
_Boroda_ Дата: Вторник, 12.01.2016, 17:35 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно? Можно сразу несколько "г" вводить
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    For i = 1 To Target.Cells.Count
        If Target(i) = "г" Then n_ = n_ + 1
    Next i
    Range("A1") = Range("A1") + n_
End Sub
[/vba]
Или еще проще. Тогда можно стирать "г" или ставить в ту ячейку, где уже она стоит - все равно в А1 будет реальное количество "г".
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A1") = WorksheetFunction.CountIf(Cells, "г")
End Sub
[/vba]
К сообщению приложен файл: 9360011_1.xlsm(15Kb) · 9360011_2.xlsm(15Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно? Можно сразу несколько "г" вводить
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    For i = 1 To Target.Cells.Count
        If Target(i) = "г" Then n_ = n_ + 1
    Next i
    Range("A1") = Range("A1") + n_
End Sub
[/vba]
Или еще проще. Тогда можно стирать "г" или ставить в ту ячейку, где уже она стоит - все равно в А1 будет реальное количество "г".
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A1") = WorksheetFunction.CountIf(Cells, "г")
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 12.01.2016 в 17:35
vdekameron Дата: Вторник, 12.01.2016, 17:47 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Так нужно? Можно сразу несколько "г" вводить

Да, именно так и хотел, только 2 нюанса сразу всплывает.
1)Если я эти "г" удаляю счетчик не работает в обратном направлении.
2)Если я в одной и той же ячейке 100 раз введу "г" то счетчик 100 раз будет работать а не хотелось бы.
 
Ответить
Сообщение
Так нужно? Можно сразу несколько "г" вводить

Да, именно так и хотел, только 2 нюанса сразу всплывает.
1)Если я эти "г" удаляю счетчик не работает в обратном направлении.
2)Если я в одной и той же ячейке 100 раз введу "г" то счетчик 100 раз будет работать а не хотелось бы.

Автор - vdekameron
Дата добавления - 12.01.2016 в 17:47
vdekameron Дата: Вторник, 12.01.2016, 17:49 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Или еще проще

Ооооо огромное вам спасибо!!!сразу 2 нюанса закрылись!!!
Спасибо!
 
Ответить
Сообщение
Или еще проще

Ооооо огромное вам спасибо!!!сразу 2 нюанса закрылись!!!
Спасибо!

Автор - vdekameron
Дата добавления - 12.01.2016 в 17:49
vdekameron Дата: Вторник, 12.01.2016, 18:06 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A1") = WorksheetFunction.CountIf(Cells, "г")
End Sub

Только в вашем файле все работает а в моем когда я удаляю букву счетчик назад не работает(((
 
Ответить
Сообщение
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A1") = WorksheetFunction.CountIf(Cells, "г")
End Sub

Только в вашем файле все работает а в моем когда я удаляю букву счетчик назад не работает(((

Автор - vdekameron
Дата добавления - 12.01.2016 в 18:06
vdekameron Дата: Вторник, 12.01.2016, 18:10 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_,
К сообщению приложен файл: 0016366.xlsm(15Kb)
 
Ответить
Сообщение_Boroda_,

Автор - vdekameron
Дата добавления - 12.01.2016 в 18:10
Manyasha Дата: Вторник, 12.01.2016, 18:18 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 1826
Репутация: 765 ±
Замечаний: 0% ±

Excel 2007, 2010
vdekameron, поднимите строчку счетчика:
[vba]
Код
    Range("A1") = WorksheetFunction.CountIf(Cells, "b")
    With Target
        Select Case .Value
        Case "nb", "b"
        '...
[/vba]
К сообщению приложен файл: 0016366-1.xlsm(15Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеvdekameron, поднимите строчку счетчика:
[vba]
Код
    Range("A1") = WorksheetFunction.CountIf(Cells, "b")
    With Target
        Select Case .Value
        Case "nb", "b"
        '...
[/vba]

Автор - Manyasha
Дата добавления - 12.01.2016 в 18:18
Udik Дата: Вторник, 12.01.2016, 18:22 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1375
Репутация: 178 ±
Замечаний: 0% ±

Excel 2016 х 64
а в моем когда я удаляю букву счетчик назад не работает(((


Ну так пересчёт идет только при введении разрешенных букв, т.е. стерли где не надо, а потом где-нибудь вводите буквочку


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Вторник, 12.01.2016, 18:27
 
Ответить
Сообщение
а в моем когда я удаляю букву счетчик назад не работает(((


Ну так пересчёт идет только при введении разрешенных букв, т.е. стерли где не надо, а потом где-нибудь вводите буквочку

Автор - Udik
Дата добавления - 12.01.2016 в 18:22
_Boroda_ Дата: Вторник, 12.01.2016, 20:32 | Сообщение № 12
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я бы перенес строку (Марина, спасибо), но немного выше. Для возможности множественного ввода и/или стирания. Если он возможен и нужен. Если нет, то так, как написала Марина.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("D5:BI30")) Is Nothing Then Exit Sub
    Range("A1") = WorksheetFunction.CountIf(Cells, "b")
    If Target.Count > 1 Then Exit Sub
...
[/vba]
К сообщению приложен файл: 0016366_1.xlsm(18Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЯ бы перенес строку (Марина, спасибо), но немного выше. Для возможности множественного ввода и/или стирания. Если он возможен и нужен. Если нет, то так, как написала Марина.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("D5:BI30")) Is Nothing Then Exit Sub
    Range("A1") = WorksheetFunction.CountIf(Cells, "b")
    If Target.Count > 1 Then Exit Sub
...
[/vba]

Автор - _Boroda_
Дата добавления - 12.01.2016 в 20:32
vdekameron Дата: Среда, 13.01.2016, 11:02 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_,
Спасибо большое, так вообще идеально. проверил-работает. Огромное спасибо за помощь.
 
Ответить
Сообщение_Boroda_,
Спасибо большое, так вообще идеально. проверил-работает. Огромное спасибо за помощь.

Автор - vdekameron
Дата добавления - 13.01.2016 в 11:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание примитивного счетчика (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!