Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Select диапазона ячеек / 25 сообщений из 30, страница 1 из 2
20.10.2010, 06:33
    #36908778
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
доброго времени суток, подскажите как вы делить ячейки - если одна граница всегда в одной ячейке, а нижняя всегда меняется?

я думал как то так -
Код: plaintext
Range("B3":"D"&k).Select

где к я вычислял выше... но нет, ругается на двоеточие.
...
Рейтинг: 0 / 0
20.10.2010, 06:46
    #36908779
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Код: plaintext
Range("B3:D" & k).Select
Код: plaintext
Range(Cells( 3 , 2 ),Cells(k, 4 )).Select
Код: plaintext
Range("B3").Resize(k- 2 , 3 ).Select
e.t.c.
...
Рейтинг: 0 / 0
20.10.2010, 07:06
    #36908782
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
спасибо ) а чтобы теперь создать новую книгу и эти ячейки в нее вставить:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
   Range("B3", "D" & k +  3 ).Select
   Selection.Copy
Application.SheetsInNewWorkbook =  1 
Set wbNew = Application.Workbooks.Add
Set wsNew = wbNew.Worksheets( 1 )
wsNew.Name = "Свод"
wbNew.Activate
Set wsNew = ActiveSheet
'потом хочется вставить в А1 то что копировал ...
wsNew.Range("A1").Paste
...
Рейтинг: 0 / 0
20.10.2010, 07:21
    #36908785
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
почему то при выполнении макроса - удаляет диапазон выделенный и говорит что не может вставить его в новую книгу
...
Рейтинг: 0 / 0
20.10.2010, 08:00
    #36908798
rtttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Nomad87,

Application.SheetsInNewWorkbook = 1
Set wbNew = Application.Workbooks.Add
Set wsNew = wbNew.Worksheets(1)
wsNew.Name = "Свод"
wbNew.Activate
Set wsNew = ActiveSheet
'потом хочется вставить в А1 то что копировал ...
ThisWorkbook.Activate
Range("B3", "D" & k + 3).Select
Selection.Copy
wbNew.Activate
Range("A1").Select
ActiveSheet.Paste
...
Рейтинг: 0 / 0
20.10.2010, 08:51
    #36908826
rtttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
покороче...

Application.SheetsInNewWorkbook = 1
Set wbNew = Application.Workbooks.Add
Set wsNew = wbNew.Worksheets(1)
wsNew.Name = "Свод"

ThisWorkbook.Activate
Range("B3", "D" & k + 3).Copy
wbNew.Activate
Range("A1").Select
ActiveSheet.Paste
...
Рейтинг: 0 / 0
20.10.2010, 11:14
    #36909055
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
rttttпокороче...Еще короче:
Код: plaintext
1.
2.
3.
4.
5.
dim wsSh as object
Set wsSh = Activesheet
Application.SheetsInNewWorkbook =  1 
Workbooks.Add
Activesheet.Name = "Свод"
wsSh.Range("B3", "D" & k +  3 ).Copy Range("A1")
...
Рейтинг: 0 / 0
21.10.2010, 08:36
    #36911032
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
коллеги, чувствую себя "блондинкой"....
код в режиме дебага работает отлично, все свои функции выполняет ... когда же запускаю в автомате ... копирует мне непонятно что ..непонятно с каких листов текущей рабочей книги...
как так может быть?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
 Private Sub Wb2()
Dim naz1, naz2 As String
Dim i, j, k, k1, k2, k3, k4 As Integer

j =  4 
k = k1 = k2 = k3 = k4 =  0 
naz1 = ActiveWorkbook.Name
For i =  1  To Workbooks(naz1).Worksheets.Count
     If Workbooks(naz1).Worksheets(i).Name = "Н-1" Then
        Do While Workbooks(naz1).Worksheets("i").Range("A" & j) <> ""
        j = j +  1 
        k = k +  1 
        Loop
     End If
Next i
Application.SheetsInNewWorkbook =  1 
Set wbNew = Application.Workbooks.Add
Set wsNew = wbNew.Worksheets( 1 )
wsNew.Name = "Свод"
wbNew.Activate
Set wsNew = ActiveSheet
Workbooks(naz1).Activate
Range("B3", "D" & k +  3 ).Select
Selection.Copy
wbNew.Activate
Range("A1").Select
ActiveSheet.Paste
i =  0 
j =  4 
For i =  1  To Workbooks(naz1).Worksheets.Count
     If Workbooks(naz1).Worksheets(i).Name = "Н-2" Then
        Do While Workbooks(naz1).Worksheets(i).Range("A" & j) <> ""
        j = j +  1 
        k1 = k1 +  1 
        Loop
     End If
Next i
 Set wsNew = ActiveSheet
Workbooks(naz1).Activate
Range("B4", "D" & k1 +  3 ).Select
Selection.Copy
wbNew.Activate
Range("A" & k +  2 ).Select
ActiveSheet.Paste

i =  0 
j =  4 
For i =  1  To Workbooks(naz1).Worksheets.Count
     If Workbooks(naz1).Worksheets(i).Name = "Н-3" Then
        Do While Workbooks(naz1).Worksheets(i).Range("A" & j) <> ""
        j = j +  1 
        k3 = k3 +  1 
        Loop
     End If
Next i
 Set wsNew = ActiveSheet
Workbooks(naz1).Activate
Range("B4", "D" & k3 +  3 ).Select
Selection.Copy
wbNew.Activate
Range("A" & k + k1 +  2 ).Select
ActiveSheet.Paste

i =  0 
j =  4 
For i =  1  To Workbooks(naz1).Worksheets.Count
     If Workbooks(naz1).Worksheets(i).Name = "Н-4" Then
        Do While Workbooks(naz1).Worksheets(i).Range("A" & j) <> ""
        j = j +  1 
        k4 = k4 +  1 
        Loop
     End If
Next i
 Set wsNew = ActiveSheet
Workbooks(naz1).Activate
Range("B4", "D" & k4 +  3 ).Select
Selection.Copy
wbNew.Activate
Range("A" & k + k1 + k3 +  2 ).Select
ActiveSheet.Paste

MsgBox "Создание книги завершено", vbOKOnly + vbInformation, "Сообщение"

end Sub

код видимо кривой.. но опыта не много
...
Рейтинг: 0 / 0
21.10.2010, 09:16
    #36911104
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Nomad87непонятно с каких листов текущей рабочей книги...
текущая книга - это ThisWorkbook (то есть книга, в которой, расположен макрос). А ActiveWorkbook это активная рабочая книга - это не одно то же.
...
Рейтинг: 0 / 0
21.10.2010, 10:06
    #36911220
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
я согласен. в книге(текущей) есть 8 листов из них меня интересуют 4 (Н-1,Н-2,Н-3, Н-4)
в них я копирую данные из столбцов В-С-D, которые потом помещаю на один лист книги которую создаю.
проще говоря свожу данные по 4м объектам в один, чтобы сделать потом сводную табюлицу
...
Рейтинг: 0 / 0
21.10.2010, 10:18
    #36911245
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Nomad87я согласен.
И что?
вы выводы из моего поста сделали?

замените во всем своем коде Workbooks(naz1) на ThisWorkbook
...
Рейтинг: 0 / 0
21.10.2010, 10:57
    #36911376
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
я поменял, но ничего не изменилось... если автоматом запускаю .. он вообще какие то данные не понятные берет...совершенно не те.

нашел закономерность - чтобы правильно все работало то запускать нужно с листа H-1 ячейки A3
объясните почему?
...
Рейтинг: 0 / 0
21.10.2010, 11:16
    #36911452
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Nomad87я поменял, но ничего не изменилось... если автоматом запускаю .. он вообще какие то данные не понятные берет...совершенно не те.

нашел закономерность - чтобы правильно все работало то запускать нужно с листа H-1 ячейки A3
объясните почему?

Код: plaintext
1.
2.
3.
Set wsNew = wbNew.Worksheets( 1 )
wsNew.Name = "Свод"
wbNew.Activate
Set wsNew = ActiveSheet

вот этого смысл объясни.
...
Рейтинг: 0 / 0
21.10.2010, 11:17
    #36911457
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Вообще забудь слово Active
от него все беды (в твоем случае)
...
Рейтинг: 0 / 0
21.10.2010, 11:32
    #36911536
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
ну там я создаю новую книгу с одним листом, который называю "Свод" - делаю активной книгу и этот лист..
был опыт создания книги из 03 офиса... он всегда создавал книгу с 3 листами, приходилось 2 удалять)
...
Рейтинг: 0 / 0
21.10.2010, 11:34
    #36911540
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Nomad87,

Код: plaintext
1.
2.
3.
Dim i, j, k, k1, k2, k3, k4 As Integer

j =  4 
k = k1 = k2 = k3 = k4 =  0 

Вряд ли вы получили, что хотели
это увы.........
k4 As Integer
i, j, k, k1, k2, k3-variant

k4 = 0
k1 = k2 = k3 -пустые
k =false
...
Рейтинг: 0 / 0
21.10.2010, 11:37
    #36911554
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Nomad87ну там я создаю новую книгу с одним листом, который называю "Свод" - делаю активной книгу и этот лист..
а зачем?
...
Рейтинг: 0 / 0
21.10.2010, 11:38
    #36911562
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Shocker.ProNomad87ну там я создаю новую книгу с одним листом, который называю "Свод" - делаю активной книгу и этот лист..
а зачем?
меня по большей части интересует вот это:
Код: plaintext
Set wsNew = ActiveSheet
...
Рейтинг: 0 / 0
21.10.2010, 11:45
    #36911583
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
даже если я оставляю так - ничего не меняется...

Код: plaintext
1.
2.
3.
Application.SheetsInNewWorkbook =  1 
Set wbNew = Application.Workbooks.Add
Set wsNew = wbNew.Worksheets( 1 )
wsNew.Name = "Свод"

Код: plaintext
Set wsNew = ActiveSheet
- это я ставил чтобы копировать на этот "активный" лист
как вижу потом уже сам же активировал другую книгу и др данные

Код: plaintext
1.
ThisWorkbook.Activate
...
Рейтинг: 0 / 0
21.10.2010, 12:17
    #36911713
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Тогда рецепт у меня к тебе такой:

УБЕРИ из кода ВСЕ Active, Activate и т.п. - это неправильный подход. Работай с конкретными объектными переменными книг и листов.

Синтаксис копирования диапазона без использования буфера обмена:
Код: plaintext
call range("A1:B1").Copy(range("A2:B2"))
...
Рейтинг: 0 / 0
21.10.2010, 12:29
    #36911771
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
т.е. для того чтобы мне из одной книги скопировать в другую - достаточно

Код: plaintext
call ThisWorkbook.Worksheets("Н-1").range("A1:B1").Copy(wbNew.wsNew.range("A2:B2"))

выглядит жутко)
...
Рейтинг: 0 / 0
21.10.2010, 12:30
    #36911775
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
молодец
...
Рейтинг: 0 / 0
21.10.2010, 12:51
    #36911869
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
Nomad87,

Код: plaintext
wbOld.Worksheets("Н-1").range("A1:B1").Copy(wbNew.wsNew.range("A2:B2"))

где wbOld-ссылка на книгу с фиксацией имени
...
Рейтинг: 0 / 0
21.10.2010, 13:13
    #36911955
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
а почему не правильна ссылка как ThisWorkbook?
...
Рейтинг: 0 / 0
22.10.2010, 06:22
    #36913631
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select диапазона ячеек
хм... почему то бэйсик не понимает меня)
вроде не ссорились с ним.. говорит - объект не поддерживает этот свойство или метод

Код: plaintext
1.
Call ThisWorkbook.Worksheets("Н-1").Range("B3", "D" & k +  3 ).Copy(wbNew.wsNew.Range("A1", "C" & k))
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Select диапазона ячеек / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]