Определить ячейку отталкиваясь от места положения кнопки
Эмка
Дата: Вторник, 20.08.2013, 16:45 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация:
1
±
Замечаний:
0% ±
Excel 2007
Моих мозгов хватает только на задание конкретной ячейки для вывода результата макроса, а можно ли ее вычислить отталкиваясь от положения кнопки?
Моих мозгов хватает только на задание конкретной ячейки для вывода результата макроса, а можно ли ее вычислить отталкиваясь от положения кнопки? Эмка
Ответить
Сообщение Моих мозгов хватает только на задание конкретной ячейки для вывода результата макроса, а можно ли ее вычислить отталкиваясь от положения кнопки? Автор - Эмка Дата добавления - 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]
Можно: [vba]Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell = Filename$
[/vba] Формуляр
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(количество строк, количество столбцов)
[vba]Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5, 0) = Filename$
[/vba] OFFSET(количество строк, количество столбцов) SkyPro
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
Выдает ошибку
Ответить
Сообщение Выдает ошибку Автор - Эмка Дата добавления - 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 нигде кроме непосредственно вызываемой процедуры. Передавайте нужную строку как параметр, в худшем случае - через глобальную переменную.
Эмка, ";" в 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]
Да какой тут пример? Поменяйте в макросах [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
Эмка, Формуляр, копировал из ВБА и заключил не в те теги Само поменяло запятую на точку с запятой. Прошу прощения. Главное потом еще и удивился, почему это у меня код разукрашен
Эмка, Формуляр, копировал из ВБА и заключил не в те теги Само поменяло запятую на точку с запятой. Прошу прощения. Главное потом еще и удивился, почему это у меня код разукрашен SkyPro
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] Вот так Из одного буфера вставлял )
[offtop]Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5, 0)
[vba]Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(-5, 0)
[/vba] Вот так Из одного буфера вставлял ) SkyPro
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 я новичок, не хочется читать тонны литературы.
Помогите, пожалуйста, со скриптом. Пытался сделать тоже самое применительно к нажатию кнопки - не получилось. Кнопка выводится, но данный код даёт Runtime ошибку "Type mismatch" [vba]Код
ActiveSheet.Shapes(Application.Caller).TopLeftCell = "значение"
[/vba] В VBA я новичок, не хочется читать тонны литературы. Nightmareterrible
Сообщение отредактировал 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]
А вы проверяли, что у вас за "значение" там формируется? И вообще, зачем вам Application.Caller , если вызов идет из конкретного известного элемента интерфейса? [vba]Код
Private Sub CommandButton1_Click() CommandButton1.TopLeftCell.Offset(, -1) = Format(Time(), "HH:MM") End Sub
[/vba] AndreTM
Skype: andre.tm.007 Donate: Q iwi: 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
Ответить
Сообщение 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]
И в чём проблема? [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
Skype: andre.tm.007 Donate: Q iwi: 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]
Благодарю. Я тоже поэкпериментировал. Не успел дождаться ответа [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
Сообщение отредактировал 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 формат на [ч]:мм:сс
Ну да, лучше всего учитывать дату-время (мало ли, будет переход через полночь). Ну и при работе с 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
Skype: andre.tm.007 Donate: Q iwi: 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