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

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

где к я вычислял выше... но нет, ругается на двоеточие.
...
Рейтинг: 0 / 0
Select диапазона ячеек
    #36908779
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Select диапазона ячеек
    #36908782
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо ) а чтобы теперь создать новую книгу и эти ячейки в нее вставить:

Код: 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
Select диапазона ячеек
    #36908785
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почему то при выполнении макроса - удаляет диапазон выделенный и говорит что не может вставить его в новую книгу
...
Рейтинг: 0 / 0
Select диапазона ячеек
    #36908798
rtttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Select диапазона ячеек
    #36908826
rtttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
покороче...

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
Select диапазона ячеек
    #36909055
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Select диапазона ячеек
    #36911032
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
коллеги, чувствую себя "блондинкой"....
код в режиме дебага работает отлично, все свои функции выполняет ... когда же запускаю в автомате ... копирует мне непонятно что ..непонятно с каких листов текущей рабочей книги...
как так может быть?

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

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

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

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

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

вот этого смысл объясни.
...
Рейтинг: 0 / 0
Select диапазона ячеек
    #36911457
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще забудь слово Active
от него все беды (в твоем случае)
...
Рейтинг: 0 / 0
Select диапазона ячеек
    #36911536
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну там я создаю новую книгу с одним листом, который называю "Свод" - делаю активной книгу и этот лист..
был опыт создания книги из 03 офиса... он всегда создавал книгу с 3 листами, приходилось 2 удалять)
...
Рейтинг: 0 / 0
Select диапазона ячеек
    #36911540
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Select диапазона ячеек
    #36911554
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nomad87ну там я создаю новую книгу с одним листом, который называю "Свод" - делаю активной книгу и этот лист..
а зачем?
...
Рейтинг: 0 / 0
Select диапазона ячеек
    #36911562
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProNomad87ну там я создаю новую книгу с одним листом, который называю "Свод" - делаю активной книгу и этот лист..
а зачем?
меня по большей части интересует вот это:
Код: plaintext
Set wsNew = ActiveSheet
...
Рейтинг: 0 / 0
Select диапазона ячеек
    #36911583
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
даже если я оставляю так - ничего не меняется...

Код: 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
Select диапазона ячеек
    #36911713
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда рецепт у меня к тебе такой:

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

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

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

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

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

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

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


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