создание макросов в MS Excel 2003
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > создание макросов в MS Excel 2003

создание макросов в MS Excel 2003

Ответ
Поиск в этой теме
Непрочитано 26.06.2007, 14:35 #1
создание макросов в MS Excel 2003
natalieRIA
 
junior-t7777@mail.ru
Регистрация: 26.06.2007
Сообщений: 6

Очень надеюсь на помощь! В программировании понимаю слишком мало, поэтому обращаюсь за помощью к Вам! Помогите пожалуйста с макросом для Excel 2003: существует таблица, в ней - данные, как определить конец данных? После после определения конца данных в следующей строке необходимо поставить слово "end" :?: Заранее огромное СПАСИБО!!!
__________________
С уважением, Наталия!
Просмотров: 7995
 
Непрочитано 26.06.2007, 22:44
#2
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Тут можно много вариантов написать
Открой лист с таблицей и вставь этот код

Код:
[Выделить все]
Option Explicit
''-------последняя строка листа-------''

Sub FindLastRowInSheet()

Dim rng As Range
Set rng = ActiveSheet.UsedRange
Dim cel As Range
Set cel = rng.Cells.SpecialCells(xlCellTypeLastCell)
cel.Offset(1, 0) = "END"

End Sub

''-------последняя строка выделения-----''

Sub FindLastRowInSelection()

With Selection
Dim cel As Range
Set cel = .Cells.SpecialCells(xlCellTypeLastCell)
cel.Offset(1, 0) = "END"
End With

End Sub
В первом случае найдешь последнюю строку
на листе
Во втором случае нужно сперва выделить
область самой таблицы полностью а потом
запустить процедуру

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 27.06.2007, 09:43
#3
natalieRIA


 
Регистрация: 26.06.2007
junior-t7777@mail.ru
Сообщений: 6


Спасибо!Просто супер!!! Работает!!! Но теперь возникает новая проблема... Строка в которой появляется слово END зависит от количества строк с данными. Теперь нужно скопировать все данные, нажодящиеся до этого слова... Копировать умею, но как записать записать код копирования именно до слова END не знаю, ведь количество данных переменно, зависит от количества введенных исходных данных...
__________________
С уважением, Наталия!
natalieRIA вне форума  
 
Непрочитано 27.06.2007, 14:20
#4
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Скопировать не проблема, а что ты дальше
собираешься делать, от этого зависит какой
вариант выбирать
Надо ведь скопированное вставлять куда?

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 27.06.2007, 14:30
#5
natalieRIA


 
Регистрация: 26.06.2007
junior-t7777@mail.ru
Сообщений: 6


Мне необходимо скопировать эти данные на лист с именем "Лист 1", затем удалить строки, которые содержат нули в определенном столбце, точнее в столбце О. Эти данные нужны для перегонки в Axapta, она принимает данные, перегоняемые только с листа с именем Лист1... Вот так!
__________________
С уважением, Наталия!
natalieRIA вне форума  
 
Непрочитано 27.06.2007, 15:17
#6
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Так это можно без всякого макроса,
просто переименуй листы
Если все же копированием - сейчас
накидаю

~'J'~
fixo вне форума  
 
Непрочитано 27.06.2007, 15:30
#7
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Пробуй

Код:
[Выделить все]
Sub CopyToSheet()
    Worksheets("Sheet2").UsedRange.Copy _
    Destination:=Worksheets("Sheet1").Range("A1")
End Sub
Sheet2 - откуда копируем
Sheet1 - куда вставляем

~'J'~
fixo вне форума  
 
Непрочитано 27.06.2007, 15:43
#8
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


А так можно удалить строки если
в столбце "О" нулевые значения:

Код:
[Выделить все]
Sub DeleteRowsByCriteria()
Dim rng As Range
Dim cel As Range
Dim i As Long
Set rng = Worksheets("Sheet1").UsedRange
For i = 1 To rng.Rows.Count
Set cel = rng.Cells(i, 15)'<-- столбец "О"
If cel = "0" Then
rng.Rows(i).Delete
End If
Next
End Sub
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 27.06.2007, 15:49
#9
natalieRIA


 
Регистрация: 26.06.2007
junior-t7777@mail.ru
Сообщений: 6


Не получается... Он обнулил все суммы.... Видимо там путаница с формулами.... Мне не нужно копировать лист целиком, только таблицу ( до таблицы существует текстовое описание - его не надо).
__________________
С уважением, Наталия!
natalieRIA вне форума  
 
Автор темы   Непрочитано 27.06.2007, 15:52
#10
natalieRIA


 
Регистрация: 26.06.2007
junior-t7777@mail.ru
Сообщений: 6


А вот со строчками все в порядке!!! Ты просто молодец! Мне бы еще так научится
__________________
С уважением, Наталия!
natalieRIA вне форума  
 
Непрочитано 27.06.2007, 16:32
#11
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от natalieRIA
Не получается... Он обнулил все суммы.... Видимо там путаница с формулами.... Мне не нужно копировать лист целиком, только таблицу ( до таблицы существует текстовое описание - его не надо).
А если формулы нужно по-другому:

Код:
[Выделить все]
Sub CopyDiapazoneToSheet()
Dim row As Long, col As Long

With Selection
For row = 1 To .Rows.Count
For col = 1 To .Columns.Count
Worksheets("Sheet1").Cells(row, col).FormulaR1C1 = .Cells(row, col).FormulaR1C1
Next
Next
End With
End Sub

Сначала выделяешь копируемый диапазонб
потом выполняешь процедуру
Selection можно заменить на диапазон:
Dim rng as Range
Set rng =WorkSheets("Sheet2").Range("A3:Z100")
rng.Select

и далее тот же самый код

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 28.06.2007, 09:10
#12
natalieRIA


 
Регистрация: 26.06.2007
junior-t7777@mail.ru
Сообщений: 6


Все получилось!!! Ура! Огромное тебе спасибо! Без твоей помощи я бы не справилась!!!
__________________
С уважением, Наталия!
natalieRIA вне форума  
 
Непрочитано 28.06.2007, 10:09
#13
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Рад был помочь,
успехов

~'J'~
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > создание макросов в MS Excel 2003