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

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

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


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

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


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

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

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

 

Старожил


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

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


Я тоже его поробовал раскопировать. В конце получил вопрос - В буфере имеется большой список данных - сохранить его? Это при одном единственном столбце в Листе1. А если столбцов будет к примеру - 32 с разными данными? Попробуйте поэкспериментировать - Незабуксует программа?
Можно попробовать ещё вот так:
Код: Выделить весь код
Sheets(1).select
s=Cells(1,1).currentregion.rows.count
for i=1 to s-1
sheets(1).select
Cells(i,1).select
FF=activecell.value
L=Left(Cells(i,1),1)
Sheets(L).select
Selection.insert Shift:=xldown
Activeceell.value=FF
next i
msgbox("Конец")

Последний раз редактировалось azbest, 21-11-2008 в 21:42.

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

Отправлено: 17:40, 20-11-2008 | #31



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

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


Аватара для Pliomera

Технолог


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

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


Цитата Admiral:
Option Base 1
'...
Dim RussianLetters(33) As String
RussianLetters(1) = "Аа"
RussianLetters(2) = "Бб"
RussianLetters(3) = "Вв"
RussianLetters(4) = "Гг"
RussianLetters(5) = "Дд"
RussianLetters(6) = "Ее"
RussianLetters(7) = "Ёё"
RussianLetters(8) = "Жж"
RussianLetters(9) = "Зз"
RussianLetters(10) = "Ии"
RussianLetters(11) = "Йй"
RussianLetters(12) = "Кк"
RussianLetters(13) = "Лл"
RussianLetters(14) = "Мм"
RussianLetters(15) = "Нн"
RussianLetters(16) = "Оо"
RussianLetters(17) = "Пп"
RussianLetters(18) = "Рр"
RussianLetters(19) = "Сс"
RussianLetters(20) = "Тт"
RussianLetters(21) = "Уу"
RussianLetters(22) = "Фф"
RussianLetters(23) = "Хх"
RussianLetters(24) = "Цц"
RussianLetters(25) = "Чч"
RussianLetters(26) = "Шш"
RussianLetters(27) = "Щщ"
RussianLetters(28) = "Ъъ"
RussianLetters(29) = "Ыы"
RussianLetters(30) = "Ьь"
RussianLetters(31) = "Ээ"
RussianLetters(32) = "Юю"
RussianLetters(33) = "Яя"
For i = 1 To 33
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = RussianLetters(i)
Next i »
Вместо всего выше написанного, достаточно просто:
Код: Выделить весь код
For i = 1 To 32
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = Chr$(i + 191) & Chr$(i + 223)
Next i
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:12, 20-11-2008 | #32


Ветеран


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

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


Pliomera, да конечно, но то наочние для новичков, которые ещё не знают про Chr$, а про массивы уже знают.

Отправлено: 23:49, 20-11-2008 | #33


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


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

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


Доброго времени суток всем присутствующим.
Кто-нибудь может помочь с такой проблемкой:
Есть две книги file1 и file2, каждая с двумя столбцами, первый из которых это идентификатор, второй - значения; вобщем надо значения из первой книги переместить во вторую (при совпадении ячеек из первого столбца). Я использовал следующий макрос, но работает он крайне медлено при большом количестве строк(понятно, при прямом переборе то). Вообщем, как можно более эффективно и быстрее это сделать?
Код: Выделить весь код
 i = 1
    While Workbooks(file2).Worksheets("List").Cells(i, 1).Value <> ""
          current = Workbooks(file2).Worksheets("List").Cells(i, 1).Value
          j = 1
          flag = False
          Do While Workbooks(file1).Worksheets("List").Cells(j, 1).Value <> ""
                   If Workbooks(file1).Worksheets("List").Cells(j, 1).Value = current Then
                      flag = True
                      Exit Do
                   End If
                   j = j + 1
           Loop
          If flag = True Then
             Workbooks(file2).Worksheets("List").Cells(i, 2).Value = Workbooks(file1).Worksheets("List").Cells(j, 2).Value
             Workbooks(file2).Worksheets("List").Cells(i, 2).Interior.Color = RGB(0, 255, 0)             
          End If
          i = i + 1          
    Wend

Последний раз редактировалось Aizec, 23-11-2008 в 16:47.


Отправлено: 14:48, 23-11-2008 | #34


Аватара для Strange_V

Старожил


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

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


Aizec, ВПР?

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 14:53, 23-11-2008 | #35


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


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

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


Цитата Strange_V:
ВПР? »
Что это такое?

Отправлено: 15:23, 23-11-2008 | #36


Аватара для Strange_V

Старожил


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

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


ВПР - это функция, точно не помню работает ли она с разными книгами, но думаю да.

-------
Жизнь-это шахматная партия, по окончании которой и короли, и пешки ложатся в один ящик.


Отправлено: 15:37, 23-11-2008 | #37


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


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

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


Strange_V Спасибо, но это не подходит - я ведь не знаю содержимого ячеек.

Отправлено: 16:33, 23-11-2008 | #38


Старожил


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

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


Если Вы не знаете содержимое ячеек, значит Вы не можете знать сколько раз может совпасть идентификатор из первого файла с перебираемыми идентификаторами во втором файле (если только идентификатор - это не числа по порядку). А у вас как только они совпадают (i,1).value = (j,1).value - происхлдит выход из цикла переборки и берётся следующий идентификатор из первого файла (i,1).
Кроме того у вас каждый раз при "exit Do" - рушится цикл переборки хотя текущий его счётчик "j" запоминается и далее уже при i = i+1 - снова создается новый Do ...Loop c запомненным "j", плюс ещё каждый раз происходит сравнение с "непустым" значением - проверка на конец списка.
Попробуйте вот так:
Код: Выделить весь код
S1=Workbooks(file2).Worksheets("List").Cells(1, 1).currentregion.rows.count
S2=Workbooks(file1).Worksheets("List").Cells(1, 1).currentregion.rows.count
for x=1 to S1
idn1=Workbooks(file1).Worksheets("List").Cells(x, 1).value
      for y=1 to S2
        idn2=Workbooks(file2).Worksheets("List").Cells(y, 1).
            if idn1=idn2 then
            zn1=Workbooks(file1).Worksheets("List").Cells(x, 2).value
            Workbooks(file2).Worksheets("List").Cells(y, 2).value=zn1
            Workbooks(file2).Worksheets("List").Cells(i, 2).Interior.Color = RGB(0, 255, 0
            end if
            next y
next x

Отправлено: 21:33, 23-11-2008 | #39


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


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

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


azbest Спасибо.
И у меня еще один вопрос возник: как импортировать в Excel не весь текстовый файл, а только текст заключенный в кавычки ""? Потом его еще надо будет после перевода обратно вставить.

Последний раз редактировалось Aizec, 28-11-2008 в 18:44.


Отправлено: 15:28, 24-11-2008 | #40



Компьютерный форум 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




 
Переход