Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - *VBA* | Помогите написать макросы для Excel'я

Ответить
Настройки темы
VBA - *VBA* | Помогите написать макросы для Excel'я
ove


Сообщения: n/a

Профиль | Цитировать


Пользователю предлагается заполнять определенные ячейки (прямоугольная область) на листе. Данные вводятся по строкам. Подскажите, как сделать, чтобы после заполнения последней ячейки в строке курсор перемещался не вправо, а в нужную ячейку на следующей строке.

[s]Исправлено: ove, 22:51 12-02-2003[/s]

Отправлено: 22:49, 12-02-2003

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


MR.TOR, всегда рады помочь

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 00:49, 29-04-2010 | #51



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Большой Кол

Пользователь


Сообщения: 57
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите пожалуйста написать макрос. Мне нужно что бы из всех книг Excel удалялись все строки в которых первый столбец содержит МИ ( например МИ №1 или МИ №3 или МИ25), причем такие строки идут вперемешку с тем что надо оставить(а это все остальное).
Например

Х| A | B |
1| МИ 10 | 25 |
2| РФ | 100 |

В данном примере нужно чтобы удалилась первая строка, а вторая осталась


Вот что я на ваял

Код: Выделить весь код
Sub MySub()

Dim x As Worksheet
Dim a As Integer
For Each x In ActiveWorkbook.Sheets
If Not x.Cells.Find(what:="МИ") Is Nothing Then
With x
    a = CStr(x.Cells.Find(what:="МИ").Row)
    .Rows(a & ":" & a).Delete Shift:=xlUp
End With
End If
Next x

End Sub
Но не работает - вообще ничего не удаляет . Где я ошибся?

Последний раз редактировалось Delirium, 21-05-2010 в 01:12.


Отправлено: 12:19, 20-05-2010 | #52


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Большой Кол, всего навсего использовали не тот цикл, потому и не удаляло. Рабочий код:

Код: Выделить весь код
Dim x As Worksheet
    Dim a As Integer
    For Each x In ActiveWorkbook.Sheets
    While Not x.Cells.Find(what:="МИ") Is Nothing
        With x
            a = CStr(x.Cells.Find(what:="МИ").Row)
        .Rows(a & ":" & a).Delete Shift:=xlUp
        End With
    Wend
Next x

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:12, 21-05-2010 | #53


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


ребята программисты, помогите плиз, нужно в книге выделить цветом на 2-х листах ячейки с одинаковыми записями (я выделил их вручную как бы я хотел что б это делалось). А еще лучше чтоб отобранные данніе сопоставлялись в отдельнои листе. Помогите с макросом. Заранее благодарен
Прилагаю файл (записей много потому он большой).

Последний раз редактировалось BonoU2, 22-01-2011 в 00:47.


Отправлено: 21:05, 16-07-2010 | #54


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


BonoU2, по каким полям проводить сверку? В выделенном примере на листе выделена запись с номером 001602. На первом листе 2 строки с таким номером.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 15:39, 17-07-2010 | #55


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


сравнения с листа 803 - ТОЛЬКО по столбцам e,f и листа Новичівська тоже ТОЛЬКО столбцы e,f , но при етом мне надо результат (я сделал вручную) как на листе1 - в виде столбцов, возможно так? заранее благодарен. (прикрепил переделланый чучуть)

Последний раз редактировалось BonoU2, 22-01-2011 в 00:47.


Отправлено: 14:55, 18-07-2010 | #56


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Інвентаризація.rar
(40.3 Kb, 5 просмотров)

Макрос запускается по сочетанию клавиш Ctrl+E. После отработки выводит сообщение Done и открывается результативный лист.

В архиве 2 файла, один в формате Excel 2003, другой - в формате Excel 2007. Они идентичны.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:41, 19-07-2010 | #57


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


Delirium огромное спасибо, а как сравнить только по столбцам f ? пожалуйста дайте цикл макроса ибо как мне использовать на других файлах?

Отправлено: 15:10, 19-07-2010 | #58


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


BonoU2, открываем Excel, жмем Alt+F11, открывается окно макросов, переходим на вкладку Modules - там и будет исходный текст нашего макроса. Ниже приведен его текст:


Код: Выделить весь код
'
'
' Сочетание клавиш: Ctrl+e
'
Dim RowCountL1 As Integer
Dim RowCountL2 As Integer
Dim ResultIndex As Integer



Sheets("803").Select
Range("A1").Select
RowCountL1 = ActiveSheet.UsedRange.Rows.Count ' Кол-во строк на первом листе (803 который)
 
Sheets("Новичівська").Select
Range("A1").Select
RowCountL2 = ActiveSheet.UsedRange.Rows.Count ' Кол-во строк на втором листе
 

ResultIndex = 2
For i = 2 To RowCountL1
    For j = 2 To RowCountL2
        If Sheets("803").Cells(i, 5) = Sheets("Новичівська").Cells(j, 5) And Sheets("803").Cells(i, 6) = Sheets("Новичівська").Cells(j, 6) Then
         
         Sheets("Result").Cells(ResultIndex, 1) = Sheets("803").Cells(i, 1)
         Sheets("Result").Cells(ResultIndex, 2) = Sheets("803").Cells(i, 2)
         Sheets("Result").Cells(ResultIndex, 3) = Sheets("803").Cells(i, 3)
         Sheets("Result").Cells(ResultIndex, 4) = Sheets("803").Cells(i, 4)
         Sheets("Result").Cells(ResultIndex, 5) = Sheets("803").Cells(i, 5)
         Sheets("Result").Cells(ResultIndex, 6) = Sheets("803").Cells(i, 6)
         
         Sheets("Result").Cells(ResultIndex, 8) = Sheets("Новичівська").Cells(j, 1)
         Sheets("Result").Cells(ResultIndex, 9) = Sheets("Новичівська").Cells(j, 2)
         Sheets("Result").Cells(ResultIndex, 10) = Sheets("Новичівська").Cells(j, 3)
         Sheets("Result").Cells(ResultIndex, 11) = Sheets("Новичівська").Cells(j, 4)
         Sheets("Result").Cells(ResultIndex, 12) = Sheets("Новичівська").Cells(j, 5)
         Sheets("Result").Cells(ResultIndex, 13) = Sheets("Новичівська").Cells(j, 6)
         
         ResultIndex = ResultIndex + 1
        End If
    Next j
Next i
MsgBox "Done"
Sheets("Result").Activate
Строка
Код: Выделить весь код
If Sheets("803").Cells(i, 5) = Sheets("Новичівська").Cells(j, 5) And Sheets("803").Cells(i, 6) = Sheets("Новичівська").Cells(j, 6)
проверяет по нужным столбцам. Соответственно, если необходимо сравнивать только по столбцу F, то нужно убрать условие Sheets("803").Cells(i, 5) = Sheets("Новичівська").Cells(j, 5)

Для использования в других файлах:
ОТкрываем документ, идем Сервис-Макросы - Начать запись. Перед началом записи выбираем сочетание на клавиатуре для запуска. Начинаем запись и тут же останавливаем. Запускаем редактор (Alr+F11) и вставляем наш код. Следует учесть, что в макросе идет привязка к номерам столбцов, поэтому, если структура документа другая, то необходимо будет предварительно подправить код.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:20, 20-07-2010 | #59


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


Delirium Извените что надоедаю.вроде бы переделал так ка Вы говорили но что-то у меня не идет, останавливается, посмотрите пожалуйста вложение, я в коде переименовал листы и только по F сравниваю, правильно ли я сделал? и в дальнейшем если я просто в етот файл буду вставлять другие значения соответственно в лист 1 и 2 будет ли работать код? Заранее благодарен

Последний раз редактировалось BonoU2, 22-01-2011 в 00:47.


Отправлено: 16:28, 20-07-2010 | #60



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - *VBA* | Помогите написать макросы для Excel'я

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Помогите пожалуйста написать скрипт на VBA Большой Кол Программирование и базы данных 6 22-10-2009 22:49
VBA - VBA excel метод Холецкого romcd73 Программирование и базы данных 2 19-06-2009 10:03
VBA - помогите решить задачку Vba + Excel hellp123 Программирование и базы данных 3 14-03-2009 01:15
MsOffice | Макросы Excel, база данных sitaka Программирование и базы данных 2 08-09-2006 20:13
[решено] Отключить макросы на Excel и Worde через групповой политику dosim Microsoft Windows NT/2000/2003 8 07-08-2006 17:11




 
Переход