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

Вход

Регистрация

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

 

= Мир MS Excel/Определить ячейку отталкиваясь от места положения кнопки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Определить ячейку отталкиваясь от места положения кнопки (Макросы Sub)
Определить ячейку отталкиваясь от места положения кнопки
Эмка Дата: Вторник, 20.08.2013, 16:45 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Моих мозгов хватает только на задание конкретной ячейки для вывода результата макроса, а можно ли ее вычислить отталкиваясь от положения кнопки?
К сообщению приложен файл: 1816034.xls (39.0 Kb)
 
Ответить
СообщениеМоих мозгов хватает только на задание конкретной ячейки для вывода результата макроса, а можно ли ее вычислить отталкиваясь от положения кнопки?

Автор - Эмка
Дата добавления - 20.08.2013 в 16:45
Формуляр Дата: Вторник, 20.08.2013, 16:56 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Можно:
[vba]
Код
    ActiveSheet.Shapes(Application.Caller).TopLeftCell = Filename$
[/vba]
К сообщению приложен файл: 3268594.xls (36.5 Kb)


Excel 2003 EN, 2013 EN
 
Ответить
СообщениеМожно:
[vba]
Код
    ActiveSheet.Shapes(Application.Caller).TopLeftCell = Filename$
[/vba]

Автор - Формуляр
Дата добавления - 20.08.2013 в 16:56
Эмка Дата: Вторник, 20.08.2013, 16:59 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Спасибо ^_^
 
Ответить
СообщениеСпасибо ^_^

Автор - Эмка
Дата добавления - 20.08.2013 в 16:59
Эмка Дата: Среда, 21.08.2013, 12:33 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Извиняюсь за тупость, но как определить ячейку на пять строк выше чем ячейка определенная по кнопке?
 
Ответить
СообщениеИзвиняюсь за тупость, но как определить ячейку на пять строк выше чем ячейка определенная по кнопке?

Автор - Эмка
Дата добавления - 21.08.2013 в 12:33
SkyPro Дата: Среда, 21.08.2013, 12:41 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5, 0) = Filename$
[/vba]
OFFSET(количество строк, количество столбцов)


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5, 0) = Filename$
[/vba]
OFFSET(количество строк, количество столбцов)

Автор - SkyPro
Дата добавления - 21.08.2013 в 12:41
Эмка Дата: Среда, 21.08.2013, 13:37 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
Выдает ошибку :(
К сообщению приложен файл: 5435040.xls (39.5 Kb)
 
Ответить
СообщениеВыдает ошибку :(

Автор - Эмка
Дата добавления - 21.08.2013 в 13:37
Формуляр Дата: Среда, 21.08.2013, 13:52 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Эмка,
";" в VBA нельзя использовать как разделитель аргументов.
Ошибка здсь:
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5;  0)
[/vba]
Собственно, это не ваша ошибка. :)

И лучше не использовать Application.Caller нигде кроме непосредственно вызываемой процедуры. Передавайте нужную строку как параметр, в худшем случае - через глобальную переменную.


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Среда, 21.08.2013, 13:58
 
Ответить
СообщениеЭмка,
";" в VBA нельзя использовать как разделитель аргументов.
Ошибка здсь:
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5;  0)
[/vba]
Собственно, это не ваша ошибка. :)

И лучше не использовать Application.Caller нигде кроме непосредственно вызываемой процедуры. Передавайте нужную строку как параметр, в худшем случае - через глобальную переменную.

Автор - Формуляр
Дата добавления - 21.08.2013 в 13:52
Эмка Дата: Среда, 21.08.2013, 14:50 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
%) видать я полнейший идиот. Можно пример :'( )))
 
Ответить
Сообщение%) видать я полнейший идиот. Можно пример :'( )))

Автор - Эмка
Дата добавления - 21.08.2013 в 14:50
Формуляр Дата: Среда, 21.08.2013, 15:08 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Да какой тут пример?
Поменяйте в макросах
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5;  0)
[/vba]
на
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5,  0)
[/vba]


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Среда, 21.08.2013, 15:09
 
Ответить
СообщениеДа какой тут пример?
Поменяйте в макросах
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5;  0)
[/vba]
на
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5,  0)
[/vba]

Автор - Формуляр
Дата добавления - 21.08.2013 в 15:08
SkyPro Дата: Среда, 21.08.2013, 15:20 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Эмка, Формуляр, копировал из ВБА и заключил не в те теги :)
Само поменяло запятую на точку с запятой.
Прошу прощения.

Главное потом еще и удивился, почему это у меня код разукрашен :)


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Среда, 21.08.2013, 15:23
 
Ответить
СообщениеЭмка, Формуляр, копировал из ВБА и заключил не в те теги :)
Само поменяло запятую на точку с запятой.
Прошу прощения.

Главное потом еще и удивился, почему это у меня код разукрашен :)

Автор - SkyPro
Дата добавления - 21.08.2013 в 15:20
SkyPro Дата: Среда, 21.08.2013, 15:20 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[offtop]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5,  0)

[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5,  0)
[/vba]
Вот так :)
Из одного буфера вставлял )


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Среда, 21.08.2013, 15:21
 
Ответить
Сообщение[offtop]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5,  0)

[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5,  0)
[/vba]
Вот так :)
Из одного буфера вставлял )

Автор - SkyPro
Дата добавления - 21.08.2013 в 15:20
Эмка Дата: Среда, 21.08.2013, 15:20 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 1 ±
Замечаний: 0% ±

Excel 2007
%) мне казалось я пробовала с запятой...извините меня видать глючит %)
 
Ответить
Сообщение%) мне казалось я пробовала с запятой...извините меня видать глючит %)

Автор - Эмка
Дата добавления - 21.08.2013 в 15:20
Nightmareterrible Дата: Понедельник, 13.01.2014, 14:52 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Помогите, пожалуйста, со скриптом.
Пытался сделать тоже самое применительно к нажатию кнопки - не получилось.
Кнопка выводится, но данный код даёт Runtime ошибку "Type mismatch"
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell = "значение"
[/vba]
В VBA я новичок, не хочется читать тонны литературы.
К сообщению приложен файл: 123123.xls (41.0 Kb)


Сообщение отредактировал Nightmareterrible - Понедельник, 13.01.2014, 14:52
 
Ответить
СообщениеПомогите, пожалуйста, со скриптом.
Пытался сделать тоже самое применительно к нажатию кнопки - не получилось.
Кнопка выводится, но данный код даёт Runtime ошибку "Type mismatch"
[vba]
Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell = "значение"
[/vba]
В VBA я новичок, не хочется читать тонны литературы.

Автор - Nightmareterrible
Дата добавления - 13.01.2014 в 14:52
AndreTM Дата: Понедельник, 13.01.2014, 15:26 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
А вы проверяли, что у вас за "значение" там формируется? :)
И вообще, зачем вам Application.Caller, если вызов идет из конкретного известного элемента интерфейса?
[vba]
Код
Private Sub CommandButton1_Click()
     CommandButton1.TopLeftCell.Offset(, -1) = Format(Time(), "HH:MM")
End Sub
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА вы проверяли, что у вас за "значение" там формируется? :)
И вообще, зачем вам Application.Caller, если вызов идет из конкретного известного элемента интерфейса?
[vba]
Код
Private Sub CommandButton1_Click()
     CommandButton1.TopLeftCell.Offset(, -1) = Format(Time(), "HH:MM")
End Sub
[/vba]

Автор - AndreTM
Дата добавления - 13.01.2014 в 15:26
Nightmareterrible Дата: Понедельник, 13.01.2014, 16:15 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
CommandButton1.TopLeftCell.Offset(, -1)

нда... глупая ошибка, признаю. Благодарю за помощь. (+1) Может быть тогда ещё чуток поможете "допилить"? Надо в ячейку запихнуть разность между Time() и значением ячейки.
 
Ответить
Сообщение
CommandButton1.TopLeftCell.Offset(, -1)

нда... глупая ошибка, признаю. Благодарю за помощь. (+1) Может быть тогда ещё чуток поможете "допилить"? Надо в ячейку запихнуть разность между Time() и значением ячейки.

Автор - Nightmareterrible
Дата добавления - 13.01.2014 в 16:15
AndreTM Дата: Понедельник, 13.01.2014, 16:28 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
И в чём проблема?
[vba]
Код
Private Sub CommandButton1_Click()
     Set oCell = CommandButton1.TopLeftCell.Offset(, -1)
     oCell.Value = Format(CDbl(Time()) - oCell.Offset(, -1), "HH:MM")
End Sub
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеИ в чём проблема?
[vba]
Код
Private Sub CommandButton1_Click()
     Set oCell = CommandButton1.TopLeftCell.Offset(, -1)
     oCell.Value = Format(CDbl(Time()) - oCell.Offset(, -1), "HH:MM")
End Sub
[/vba]

Автор - AndreTM
Дата добавления - 13.01.2014 в 16:28
Nightmareterrible Дата: Понедельник, 13.01.2014, 16:30 | Сообщение № 17
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Благодарю. Я тоже поэкпериментировал. Не успел дождаться ответа :)
[vba]
Код
idata$ = Format(Now() - CommandButton1.TopLeftCell.Offset(, -2), "HH")
    If (idata$ = "00") Then
      idata = Format(Now() - CommandButton1.TopLeftCell.Offset(, -2), "MM:SS")
    Else
      idata = Format(Now() - CommandButton1.TopLeftCell.Offset(, -2), "HH:MM:SS")
    End If
      
    CommandButton1.TopLeftCell.Offset(, -1) = idata$
    CommandButton1.Visible = False
[/vba]


Сообщение отредактировал Nightmareterrible - Понедельник, 13.01.2014, 16:30
 
Ответить
СообщениеБлагодарю. Я тоже поэкпериментировал. Не успел дождаться ответа :)
[vba]
Код
idata$ = Format(Now() - CommandButton1.TopLeftCell.Offset(, -2), "HH")
    If (idata$ = "00") Then
      idata = Format(Now() - CommandButton1.TopLeftCell.Offset(, -2), "MM:SS")
    Else
      idata = Format(Now() - CommandButton1.TopLeftCell.Offset(, -2), "HH:MM:SS")
    End If
      
    CommandButton1.TopLeftCell.Offset(, -1) = idata$
    CommandButton1.Visible = False
[/vba]

Автор - Nightmareterrible
Дата добавления - 13.01.2014 в 16:30
AndreTM Дата: Понедельник, 13.01.2014, 16:47 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Ну да, лучше всего учитывать дату-время (мало ли, будет переход через полночь). Ну и при работе с timestamp обычно надо явно приводить типы:
[vba]
Код
Private Sub CommandButton1_Click()
      Set oCell = CommandButton1.TopLeftCell.Offset(, -1)
      oCell.Value = Format(Now() - (CDbl(CDate(oCell.Offset(, -2))) + CDbl(oCell.Offset(, -1))), "HH:MM:SS")
      CommandButton1.Visible = False
End Sub
[/vba]
И замените ещё в столбце D формат на [ч]:мм:сс


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНу да, лучше всего учитывать дату-время (мало ли, будет переход через полночь). Ну и при работе с timestamp обычно надо явно приводить типы:
[vba]
Код
Private Sub CommandButton1_Click()
      Set oCell = CommandButton1.TopLeftCell.Offset(, -1)
      oCell.Value = Format(Now() - (CDbl(CDate(oCell.Offset(, -2))) + CDbl(oCell.Offset(, -1))), "HH:MM:SS")
      CommandButton1.Visible = False
End Sub
[/vba]
И замените ещё в столбце D формат на [ч]:мм:сс

Автор - AndreTM
Дата добавления - 13.01.2014 в 16:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Определить ячейку отталкиваясь от места положения кнопки (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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