Excel VBA: Приёмы программирования
По материалам эхоконференции RU.EXCEL
Collected by Kirienko Andrew, 2:5020/239.21@fidonet
Collected by Kirienko Andrew, 2:5020/239.21@fidonet
Cодержание
- Как определить последнюю запись в таблице Excel ?
- Как отменить выделение диапазона ячеек ?
- Как из макроса Excel программно создать таблицу Access ?
- Удаление листов в зависимости от даты.
- Подавление «горячих» клавиш
- Подсказки к Toolbar
- Как определить адрес активной ячейки.
- Подсчет комментариев на рабочем листе.
- Подсказки к Toolbar (Excel'95).
- Запуск Excel с поиском ячейки
- ThisWorkBook или ActiveWorkBook ?
- Как задать имя листу, который будет вставлен ?
- Как проверить существует ли лист ?
- Как обратиться к ячейке по ее имени ?
- Можно ли из программы на Visual Basic создать рабочую книгу Excel ?
Оставить комментарий
Комментарии
1.
+1 / -0
18 января 2011, 23:28:37
Для работы макроса в Excel 2007, нужно автоматически выгрузить данные из pdf файла, как это сделать?
Каким бесплатным конвектором Pdf в MS Word можно воспользоваться?
Каким бесплатным конвектором Pdf в MS Word можно воспользоваться?
2.
+0 / -1
18 января 2011, 22:33:21
Для работы макроса в Excel 2007, нужно автоматически выгрузить данные из pdf файла, каким бесплатным конвектором Pdf в MS Word можно воспользоваться?
3.
28 июля 2008, 15:33:48
Привет.Кто-нибудь пдскажите,пожалуйста.Как в Excel сделать.Мне нужно,чтобы из таблицы автоматически проверялись ячейки,если на текущую дату есть задание,то чтобы оно автоматически отправлялось по электронной почте,по адресу указанному в этой же строке.Кто-нибудь,подскажите
4.
+0 / -1
27 февраля 2007, 23:13:15
Забыл! Написать на VBA (Excel). Не использовать посторонних программ (KeyLogger и т.п.)
5.
+2 / -0
27 февраля 2007, 23:11:54
Ребят, нужна помощь.
Задача такая:
Надо узнать какую кнопку нажал пользователь в диалогом окне Excel.
К примеру, пользователь пытается скопировать файл, но он уже существует. Естественно, Excel пишет, что есть такой файл. Перезаписать?
Да Нет Отмена
Надо узнать, что нажал пользователь. Да, Нет или Отмена.
Причём диалоговое окно вызывается не MsgBox, а Excel.
Очень срочно. Помогите, пожалуйста.
Задача такая:
Надо узнать какую кнопку нажал пользователь в диалогом окне Excel.
К примеру, пользователь пытается скопировать файл, но он уже существует. Естественно, Excel пишет, что есть такой файл. Перезаписать?
Да Нет Отмена
Надо узнать, что нажал пользователь. Да, Нет или Отмена.
Причём диалоговое окно вызывается не MsgBox, а Excel.
Очень срочно. Помогите, пожалуйста.
6.
8 февраля 2006, 10:06:35
To Gennadiy
мне кажется, что в вашем случае нужно создавать массив текстбоксов
Тогда у Вас текстбоксы будут называться Т(1), Т(2)...Т(n).
соответственно цикл будет выглядеть так:
for x=1 to 30
Т(х).value="траляля"
next x
мне кажется, что в вашем случае нужно создавать массив текстбоксов
Тогда у Вас текстбоксы будут называться Т(1), Т(2)...Т(n).
соответственно цикл будет выглядеть так:
for x=1 to 30
Т(х).value="траляля"
next x
7.
21 декабря 2005, 16:09:58
А вот теперь не из разряда программирования! Ехель стоит на старенькой машинке и при клине на одну ячейку начинает хаотично выделять диапазон согласно движению мыши.... бред... как-то раньше устранял а теперь проблема
8.
25 сентября 2005, 14:48:32
народ, помогите пжалста в написании проги.
необходимо расширить функции даты-времени в Excel'e через C++ (те подключить к макросу Dll)
как работать с датой-временем на C++ и как можно это использовать для создания, например, будильника или органайзера в Excel'e ?
если несложно отправляйте ответы rebelz@yandex.ru,заранее благодарен, n00d
необходимо расширить функции даты-времени в Excel'e через C++ (те подключить к макросу Dll)
как работать с датой-временем на C++ и как можно это использовать для создания, например, будильника или органайзера в Excel'e ?
если несложно отправляйте ответы rebelz@yandex.ru,заранее благодарен, n00d
9.
+1 / -0
1 июня 2005, 10:55:57
Как добавить новую строку в єкселе. Подключаюсь к єкселю из 1с..структура таблиці уже определена
10.
+2 / -0
29 апреля 2005, 12:53:32
Люди добрые, вот появилась срочная потребность написать макрос редактирующий страничку ехеля, а знания только в турбопаскале есть и хелоу ворлд писать в вижуал си и делфи пробовал. дайте ссылку н апростой пример рабочего макроса где есть открытие файла, поиск ячеек по условию, изменение ячейки, цикл, закрытие фафла.Будьте милосердны...)
11.
2 февраля 2005, 09:54:45
Господа, подскажите как сделать многопользовательский вход в книгу Excel, как например в 1С и чтобы при заполнении строки в определенной ячейке автоматом забивалось бы имя пользователя создавшего запись в строке. Заранее спасибо.
12.
+1 / -1
24 января 2005, 13:15:41
To Serzh:
у меня недавно была такая же проблема... вот решение не блещущее гениальностью...:
Dim folder1 As Variant
folder1 = Application.GetOpenFilename("книги Excel *.xls,*.xls,все файлы(*.*),*.*", 1, "open file(s)", 1)
Workbooks.Open Filename:=folder1
вот собственно и все...
можно конечно кучу проверок навернуть...
если надо обрасчайтесь...
у меня недавно была такая же проблема... вот решение не блещущее гениальностью...:
Dim folder1 As Variant
folder1 = Application.GetOpenFilename("книги Excel *.xls,*.xls,все файлы(*.*),*.*", 1, "open file(s)", 1)
Workbooks.Open Filename:=folder1
вот собственно и все...
можно конечно кучу проверок навернуть...
если надо обрасчайтесь...
13.
22 декабря 2004, 12:35:34
To Gennadiy
Private Sub UserForm_Initialize()
Dim iCount As Integer
Dim iCntrl As Control
For iCount = 1 To 5
iTxb = "T" & iCount
Set iCntrl = Controls(iTxb)
'Set iCntrl = Me.Controls(iTxb)
'Set iCntrl = UserForm4.Controls(iTxb)
iCntrl.Value = "траляля"
Rem можно короче, вот так :
'Me.Controls(iTxb) = "траляля"
Next
End Sub
'Проверено MS Excel 97, 2000
Private Sub UserForm_Initialize()
Dim iCount As Integer
Dim iCntrl As Control
For iCount = 1 To 5
iTxb = "T" & iCount
Set iCntrl = Controls(iTxb)
'Set iCntrl = Me.Controls(iTxb)
'Set iCntrl = UserForm4.Controls(iTxb)
iCntrl.Value = "траляля"
Rem можно короче, вот так :
'Me.Controls(iTxb) = "траляля"
Next
End Sub
'Проверено MS Excel 97, 2000
14.
16 декабря 2004, 14:18:54
Не могу обратиться к Текстбоксу в Экселе 2003 в теле цикла. :-(
Например у меня 30 текстбоксов с именами Т1,Т2,Т3 и так далее. В цикле хочу их "перебрать" составляя имя из части "Т" и переменной х от 1 до 30. Но при Обращении через промежуточную переменную идет ошибка. Например:
Dim x as integer
Dim box as object
for x=1 to 30
box="Т" & x
box.value="траляля"
next x
Текстбокс находится в форме. Как правильно перебрать их?
Например у меня 30 текстбоксов с именами Т1,Т2,Т3 и так далее. В цикле хочу их "перебрать" составляя имя из части "Т" и переменной х от 1 до 30. Но при Обращении через промежуточную переменную идет ошибка. Например:
Dim x as integer
Dim box as object
for x=1 to 30
box="Т" & x
box.value="траляля"
next x
Текстбокс находится в форме. Как правильно перебрать их?
15.
8 ноября 2004, 17:28:46
У меня вопрос по Excel VBA.
как решить следующую задачу:
задана таблица. первый столбец и строка - заглавные.
как создать функцию которая по заданным значениям из 1 столбца и 1 строки находит соответствующее значение в таблице?
Заранее благодарю за ответ!
как решить следующую задачу:
задана таблица. первый столбец и строка - заглавные.
как создать функцию которая по заданным значениям из 1 столбца и 1 строки находит соответствующее значение в таблице?
Заранее благодарю за ответ!
16.
31 августа 2004, 22:25:10
Сергей, если я Вас правильно понял, то Вы хотите вызвать стандартное диалоговое окно для просмотра и открытия файлов.
Application.Dialogs(xlDialogOpen).Show
Application.Dialogs(xlDialogOpen).Show
17.
31 августа 2004, 22:17:07
-----
fm
-----
Полагаю, что адрес активной ячейки определить можно, но сразу
возникает несколько но, а именно :
Функция СУММ при попытке суммировать активную ячейку, т.е ячейку,
где находится сама функция СУММ будет выдаваться сообщение о
циклической ошибке
Даже если это сообщение отключить, то сумма всё равно не будет
корректной, а это значит, что все наши действия не носят особенного
смысла.
-----
Алес
-----
Запуск внешней программы (обратите внимание на точное указание
места расположения программы)
Prog = Shell("C:\WINDOWS\WINFILE.EXE")
Prog = Shell("C:\WINDOWS\WINFILE.EXE", 1)
fm
-----
Полагаю, что адрес активной ячейки определить можно, но сразу
возникает несколько но, а именно :
Функция СУММ при попытке суммировать активную ячейку, т.е ячейку,
где находится сама функция СУММ будет выдаваться сообщение о
циклической ошибке
Даже если это сообщение отключить, то сумма всё равно не будет
корректной, а это значит, что все наши действия не носят особенного
смысла.
-----
Алес
-----
Запуск внешней программы (обратите внимание на точное указание
места расположения программы)
Prog = Shell("C:\WINDOWS\WINFILE.EXE")
Prog = Shell("C:\WINDOWS\WINFILE.EXE", 1)
18.
30 августа 2004, 08:19:11
Вопрос:
Как из макроса открыть другую книгу Excel, внешнее имя которой пока неизвестно, но она точно есть на диске.
Стандартный генератор макросов рожает что-то вроде:
ChDir <конкретная папка>
Workbooks.Open FileName:= <конкретное имя>
Но ведь когда тоже самое делаешь руками,
Excel открывает окошко для навигации к нужной книге. Вот как бы это же самое
запрограммировать?
Как из макроса открыть другую книгу Excel, внешнее имя которой пока неизвестно, но она точно есть на диске.
Стандартный генератор макросов рожает что-то вроде:
ChDir <конкретная папка>
Workbooks.Open FileName:= <конкретное имя>
Но ведь когда тоже самое делаешь руками,
Excel открывает окошко для навигации к нужной книге. Вот как бы это же самое
запрограммировать?
19.
26 августа 2004, 09:12:09
как вставить в формулу (СУММ(G24:?)) адрес активной ячеки?
20.
9 августа 2004, 12:06:40
Как из VBA Exel запустить другое Windows приложение (например, прог-у по раскрою), и, если возможно, вставить уже помещенные в Буфер обмена данные и выполнить просчет?
Благодарю за внимание.
Спасибо за форум!
Благодарю за внимание.
Спасибо за форум!
21.
10 июля 2004, 07:23:30
Sub RangeColor()
'ActiveCell можно заменить на Cells(iRow, iClm), если они определяются программно !!!
Set iRang = ActiveCell: iData = iRang
If IsNumeric(iData) = True Then
If iData > 0 Then
iRang.Interior.ColorIndex = 50
ElseIf iData < 0 Then
iRang.Interior.ColorIndex = 3
End If
End If
End Sub
'ActiveCell можно заменить на Cells(iRow, iClm), если они определяются программно !!!
Set iRang = ActiveCell: iData = iRang
If IsNumeric(iData) = True Then
If iData > 0 Then
iRang.Interior.ColorIndex = 50
ElseIf iData < 0 Then
iRang.Interior.ColorIndex = 3
End If
End If
End Sub
22.
+2 / -1
1 июля 2004, 09:56:24
У меня вопрос по Excel VBA.
как решить следующую задачу:
в ячейках имеются цифры;
если число отрицательное, то нужно окрасить ячейку (т.е. использовать инструмент "заливка") в красный, если положительное - зеленый.
Заранее благодарю за ответ!
как решить следующую задачу:
в ячейках имеются цифры;
если число отрицательное, то нужно окрасить ячейку (т.е. использовать инструмент "заливка") в красный, если положительное - зеленый.
Заранее благодарю за ответ!