Страницы: Пред. 1 2
RSS
Привязать кнопки сложения и вычитания к активной ячейке заданного столбца.
 
Вот вариант с активной ячейкой и с кнопками, которые не нужно таскать по листу. Ведь выяснилось, что будет 2 кнопки - сложения и вычитания ))
Выделяем ячейку столбца В и жмём на нужную кнопку.
 
А вот это решение отличное  :D  
 
Цитата
Юрий М написал:
Вот вариант с активной ячейкой и с кнопками, которые не нужно таскать по листу. Ведь выяснилось, что будет 2 кнопки - сложения и вычитания ))
Елки-палки, как же это удобно! :)

Боюсь, начать копаться в коде и поломать, подскажите, как дополнить — добавить еще такие же 2 кнопки (но уже слева от колонки B), они также будут прибавлять и вычитать к ячейкам колонки B, но по 0,2. (т.е. по 1 единице прибавляют/вычитают 2 кнопки справа, а по 0,2 будут прибавлять/вычитать 2 кнопки слева)
 
Готово. Величины приращения в ячейках А1 и А2.
 
Цитата
Юрий М написал:
Готово.
Огромное спасибо за помощь!
 
еще вариант, кладем в модуль книги
Код
Option Explicit

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call b(Sh, Selection)
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Call a
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Call b(Sh, Target)
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
     Call b(ActiveSheet, Selection)
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Call a
End Sub
Private Sub a()
    Dim s, k
    For Each s In Array("", "^")
        For Each k In Array(107, 109, "+", "-")
            Application.OnKey s & "{" & k & "}"
    Next k, s
End Sub
Private Sub b(ByVal Sh As Object, ByVal Target As Range)
    Const addr$ = "B1:B100"
    Call a
    If Not Sh Is Лист1 Then Exit Sub
    If Intersect(Target, Sh.Range(addr)) Is Nothing Then Exit Sub
    Dim s, k, i%
    For Each s In Array("", "^")
        For Each k In Array(107, 109, "+", "-")
            Application.OnKey s & "{" & k & "}", "'" & Me.CodeName & ".c """ & _
                              IIf(i Mod 2, "-", "") & IIf(s > "", [A2], [A1]).Formula & _
                              """, [" & addr & "]'"
            i = i + 1
    Next k, s
End Sub
Sub c(n, ByRef r As Range)
    With Intersect(Selection, r)
        .Value = Evaluate(.Address(, , Application.ReferenceStyle) & "+" & n)
    End With
End Sub
и жмакаем на клаве
+Прибавить к выделенным ячейкам число из A1
-Вычесть из выделенных ячейкам число из A1
Ctrl++Прибавить к выделенным ячейкам число из A2
Ctrl+-Вычесть из выделенных ячейкам число из A2
 
Цитата
Андрей Лящук написал:
еще вариант, кладем в модуль книги
Спасибо за дополнительный вариант реализации задачи.
 
Цитата
RAN написал: Тягайте на здоровье.  
Сейчас есть кнопки, которые прибавляют или вычитают 1 единицу к следующей / предыдущей ячейке:
Код
 On Error Resume Next
    With ActiveSheet.Shapes(Application.Caller).TopLeftCell.Previous
        .Value = .Value + 1
    End With

Подскажите, как доработать Ваш функционал до этих условий:
Вывести в другую ячейку "K6" номер текущей ячейки "C2" (в которую мы сейчас прибавляем и вычитаем) и далее менять номер строки данной ячейки (на "C1", "С3", "C4" и тп), но другими новыми добавленными кнопками? *(в файле Excel новые кнопки в "M7" и "N7" ячейках).

В excel файле подробнее расписал.
Изменено: oleg9911 - 30.06.2020 13:31:15
 
Если правильно понял задачу.
 
oleg9911, я Вам уже о форматировании писал. Вы бы поменьше жирности деали, да побольше обращаи внимание на форматирование кода в сообщении (уже отредактировано)..
 
Цитата
Юрий М написал: Если правильно понял задачу.
Не совсем.
Кнопки, находящиеся в "B3" и "D3" сейчас прибавляют/вычитают фиксированно в ячейку "C3".

Необходимо, чтобы в ячейке "K6" было как-то прописано, что сейчас работа кнопками + - идет с ячейкой "C3".  Это необходимо, чтобы далее менять ссылку на рабочую ячейку с "C3", например, на "C4" или "C1".
То есть, запись прибавления/вычитания кнопками в "B3" и "D3" будет теперь не в "C3", а в другой ячейке, которая у нас будет указана именно в "K6". (в "K6" прописано в какую ячейку плюсовать/вычитать и для какой ячейки работают кнопки "B3" и "D3").

Для удобства, чтобы менять в "K6" номер строки ячейки C(n) — добавлены кнопки, которые лежат в M7 и N7.
Задача такая. Надеюсь, смог описать.
 
Так?
 
Да, только нужна возможность менять значение в K6 (сейчас там фиксированно проставлено C3) на другое, например C4, C5 и так далее вниз или наоборот вверх. Соответственно кнопки + и - будут работать (прибавлять/вычитать) уже в другой ячейку, которую мы прописываем в К6.  
 
Цитата
oleg9911 написал:
только нужна возможность менять значение в K6
А Вы пробовали и не меняется?
 
Да, тест был такой:
- Меняю значение в K6 (в нем указано было C3) на значение C4 .
- Нажимаю на кнопку в D3 - результат: добавление снова идет в ячейку C3, а не C4, которую указали только что.
 
Я Вам показал только по вопросу, как в ячейке К6 отобразить адрес изменённой ячейки в контролируемом диапазоне.
 
Цитата
Юрий М написал:
Я Вам показал только по вопросу, как в ячейке К6 отобразить адрес изменённой ячейки в контролируемом диапазоне.
Понял. Можно ли не двигая кнопки, находящиеся в B3 и D3 менять значение в ячейке K6 на другое (указывать там номер другой ячейки C(n) с помощью доп кнопок +- ) , чтобы кнопки B3 и D3 начинали писать в новую, указанную в K6 ячейку?

Например: Сейчас сложение/вычитание идет в C3. Нам необходимо не двигая кнопки сделать так, чтобы сложение/вычитание было теперь в C4.
Меняем в K6 значение с С3 на C4 (с помощью новых кнопок в M7, N7, которые меняют номер строки в заданной колонке (здесь колонка C) ).  
 
Т.е. Вы в ячейке К6 вручную хотите указывать, в какой ячейке должно быть приращение? Если так, то см. вариант для плюса. Минус сделайте по аналогии.
P.S. А чем не устроил мой вариант с автоматическим перемещением кнопок?
 
Цитата
Юрий М написал:
А чем не устроил мой вариант с автоматическим перемещением кнопок?
Он почему-то конфликтовал с кодом др. кнопок. Не работал.
 
Цитата
oleg9911 написал:
Он почему-то конфликтовал с кодом др. кнопок.
Вот и нужно было разбираться с конфликтом, а не городить  огород с ячейкой-посредником ))
Вариант из #48 - то, что нужно?
 
Цитата
Юрий М написал:
Вариант из #48 - то, что нужно?
Да, единственное, осталось повесить на кнопки M7, N7 код, который увеличивает/уменьшает номер строки (не колонки) в ячейке K6. (чтобы руками не править каждый раз ячейку K6)
Изменено: oleg9911 - 30.06.2020 14:32:57
 
А кто мешает переместить кнопки из M7 и  N7 правее и левее ячейки К6* Пример у Вас уже есть.
 
Цитата
Юрий М написал:
А кто мешает переместить кнопки из M7 и  N7 правее и левее ячейки К6* Пример у Вас уже есть.
Пробую прописать на кнопку код: Range("K6") = Range("K6") + Range("A1")
где в A1 значение 1 (число, пробовал также текстом)

Выдает ошибку, либо просто затирает значение в ячейке на цифру. Не плюсует к C3 +1, чтобы получилось C4 и тд +1
 
См. вариант для кнопки сложения (неважно, где она будет находиться). Для минуса сами по аналогии - там всего один символ поменять )) И я бы добавил проверку, чтобы не получить строку с номером ноль.
 
Цитата
Юрий М написал:
См. вариант для кнопки сложения
Просто великолепно!  :)  Большое спасибо Вам за помощь!  
Страницы: Пред. 1 2
Наверх