Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 30
1

Перенос части кода Excel на другую строку

20.10.2018, 07:47. Показов 5977. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос достаточно простой, да и в выполнении скорее всего легкий, но я никак не могу додумать. Прошу у вас помощи.
Есть нужда переноса части кода на другую строку, чтобы получилось:

ActiveSheet.Range( _
"F23:H34, J23:L34, N23:P34, R23:T34, V23:X34, Z23:AB34, AD23:AF34, AL23:AN34, AP23:AR34, AT23:AV34, AX23:AZ34,
F41:H48, J41:L48, N41:P48, R41:T48, V41:X48, Z41:AB48, AD41:AF48, AL41:AN48, AP41:AR48, AT41:AV48, AX41:AZ48,
F51:H61" _
).Select

При переносе с помощью " _", возникает ошибка. Подскажите, как я могу это реализовать?

Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
Sub Clear25Days()
Sheets(Array("1-й день", "2-й день")).Select
 
Sheets("1-й день").Activate
ActiveSheet.Range( _
    "F23:H34, J23:L34, N23:P34, R23:T34, V23:X34, Z23:AB34, AD23:AF34, AL23:AN34, AP23:AR34, AT23:AV34, AX23:AZ34, F41:H48, J41:L48, N41:P48, R41:T48, V41:X48, Z41:AB48, AD41:AF48, AL41:AN48, AP41:AR48, AT41:AV48, AX41:AZ48, F51:H61" _
        ).Select
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2018, 07:47
Ответы с готовыми решениями:

Перенос части символов на другую строку
Добрый день. Есть запрос select Name from Names Name...

Перенос части данных из одной строки в другую строку из одного файла в другой файл
Мне нужно из файла с таблицей (Пример картотека) , файл содержит около 60 тыс строк, найти...

Перенос части слов в другую ячейку
Здравствуйте форумчане! Очень нужна ваша помощь! Задача следующая: Имеется список слов в...

Перенос части текста в другую ячейку
Всем привет! Есть бланк, в который вбиваются данные вручную, пробую сделать так чтоб они...

14
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.10.2018, 08:55 2
Цитата Сообщение от tishakov Посмотреть сообщение
Sheets(Array("1-й день", "2-й день")).Select
Это зачем ?
Может просто
Visual Basic
1
2
3
4
5
6
7
8
Sub Clear25Days()
    Sheets("1-й день").Range( _
                "F23:H34, J23:L34, N23:P34, R23:T34, V23:X34, Z23:AB34, AD23:AF34, AL23:AN34, AP23:AR34, AT23:AV34, AX23:AZ34, F41:H48, J41:L48, N41:P48, R41:T48, V41:X48, Z41:AB48, AD41:AF48, AL41:AN48, AP41:AR48, AT41:AV48, AX41:AZ48, F51:H61" _
                      ).Select
 
' и т.д.
 
End Sub
Добавлено через 4 минуты
Да и выбирать ни к чему, Вы же хотите очистить эти диапазоны? Тогда так

Visual Basic
1
2
3
4
5
Sub Clear25Days()
    Sheets("1-й день").Range( _
                "F23:H34, J23:L34, N23:P34, R23:T34, V23:X34, Z23:AB34, AD23:AF34, AL23:AN34, AP23:AR34, AT23:AV34, AX23:AZ34, F41:H48, J41:L48, N41:P48, R41:T48, V41:X48, Z41:AB48, AD41:AF48, AL41:AN48, AP41:AR48, AT41:AV48, AX41:AZ48, F51:H61" _
                      ).ClearContents
End Sub
1
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 30
20.10.2018, 09:10  [ТС] 3
Выделить хочу, чтобы потом вручную очистить их, ибо имеется 25 листов, а в каждом листе по очень большому кол-ву ячеек.
Просто я уже пробовал очищать с помощью макроса и все висло. Теперь же иду другим путем.
Вопрос еще актуален. Как мне в Range между обозначением ячеек сделать перенос строки кода, повторюсь, ячеек много, длина строки будет "километровая"?
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.10.2018, 09:28 4
Лучший ответ Сообщение было отмечено tishakov как решение

Решение

Цитата Сообщение от tishakov Посмотреть сообщение
вручную очистить их
Ну, дело хозяйское...

Цитата Сообщение от tishakov Посмотреть сообщение
Вопрос еще актуален.
Вариант
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Clear25Days()
    Sheets("1-й день").Range( _
                "F23:H34, J23:L34, N23:P34, R23:T34," + _
                "V23:X34, Z23:AB34, AD23:AF34, AL23:AN34," + _
                "AP23:AR34, AT23:AV34, AX23:AZ34, F41:H48," + _
                "J41:L48, N41:P48, R41:T48, V41:X48, Z41:AB48," + _
                "AD41:AF48, AL41:AN48, AP41:AR48, AT41:AV48, AX41:AZ48," + _
                "F51:H61" _
                      ).ClearContents
End Sub
Добавлено через 3 минуты
Цитата Сообщение от tishakov Посмотреть сообщение
с помощью макроса и все висло
Вот возможно из-за селектов и висло.

Добавлено через 9 минут
Если диапазоны одинаковые на всех листах, то можно попробовать так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Clear25Days()
    Dim arr, st, s As String
    arr = Array("1-й день", "2-й день")
    s = "F23:H34, J23:L34, N23:P34, R23:T34," + _
                "V23:X34, Z23:AB34, AD23:AF34, AL23:AN34," + _
                "AP23:AR34, AT23:AV34, AX23:AZ34, F41:H48," + _
                "J41:L48, N41:P48, R41:T48, V41:X48, Z41:AB48," + _
                "AD41:AF48, AL41:AN48, AP41:AR48, AT41:AV48, AX41:AZ48," + _
                "F51:H61"
    For Each st In arr
       Sheets(st).Range(s).ClearContents
    Next st
End Sub
1
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.10.2018, 09:48 5
Цитата Сообщение от tishakov Посмотреть сообщение
длина строки будет "километровая"?
Кстати, количество переносов тоже ограничено. Вот смотрите, на скрине удалось сделать 25, дальше ругается.

Но у Вас в расположении диапазонов есть какая-то закономерность. Наверняка можно не городить "километровые" строки, а организовать это через циклы.
Миниатюры
Перенос части кода Excel на другую строку  
1
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 30
20.10.2018, 13:00  [ТС] 6
Цитата Сообщение от SoftIce Посмотреть сообщение
есть какая-то закономерность
Да, закономерность какая-то есть.

Спасибо Вам большое, помогли.
В процессе сбора кода было все отлично, тестировалось и работало, но появился один нюанс.
Не могли бы подсказать, в чем причина?
Кликните здесь для просмотра всего текста
Visual Basic
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
Sub Clear25Days()
    YesNo = MsgBox("Этот документ уже сохранен как?", vbYesNo + vbExclamation + vbDefaultButton2)
Select Case YesNo
        Case vbYes
    Dim arr, st, s As String
    arr = Array("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-й день")
    s = "F23:H34, J23:L34, N23:P34, R23:T34, V23:X34, Z23:AB34, AD23:AF34, AL23:AN34, AP23:AR34, AT23:AV34, AX23:AZ34," + _
        "F41:H48, J41:L48, N41:P48, R41:T48, V41:X48, Z41:AB48, AD41:AF48, AL41:AN48, AP41:AR48, AT41:AV48, AX41:AZ48," + _
        "F51:H61, J51:L61, N51:P61, R51:T61, V51:X61, Z51:AB61, AD51:AF61, AL51:AN61, AP51:AR61, AT51:AV61, AX51:AZ61," + _
        "F67:H83, J67:L83, N67:P83, R67:T83, V67:X83, Z67:AB83, AD67:AF83, AL67:AN83, AP67:AR83, AT67:AV83, AX67:AZ83," + _
        "F86:H95, J86:L95, N86:P95, R86:T95, V86:X95, Z86:AB95, AD86:AF95, AL86:AN95, AP86:AR95, AT86:AV95, AX86:AZ95," + _
        "F108:H115, J108:L115, N108:P115, R108:T115, V108:X115, Z108:AB115, AD108:AF115, AL108:AN115, AP108:AR115, AT108:AV115, AX108:AZ115," + _
        "F121:H123, J121:L123, N121:P123, F125:H127, J125:L127, N125:P127, R125:T127, V125:X127, Z125:AB127, AD125:AF127, AL125:AN127, AP125:AR127, AT125:AV127, AX125:AZ127," + _
        "F133:H165, J133:L165, N133:P165, R133:T165, V133:X165, Z133:AB165, AD133:AF165, AL133:AN165, AP133:AR165, AT133:AV165, AX133:AZ165," + _
        "F175:H212, J175:L212, N175:P212, R175:T212, V175:X212, Z175:AB212, AD175:AF212, AL175:AN212, AP175:AR212, AT175:AV212, AX175:AZ212," + _
        "F239:H254, J239:L254, N239:P254, R239:T254, V239:X254, Z239:AB254, AD239:AF254, AL239:AN254, AP239:AR254, AT239:AV254, AX239:AZ254," + _
        "F262:H265, J262:L265, N262:P265, R262:T265, V262:X265, Z262:AB265, AD262:AF265, AL262:AN265, AP262:AR265, AT262:AV265, AX262:AZ265," + _
        "F275:H283, J275:L283, N275:P283, R275:T283, V275:X283, Z275:AB283, AD275:AF283, AL275:AN283, AP275:AR283, AT275:AV283, AX275:AZ283," + _
        "F287:H300, J287:L300, N287:P300, R287:T300, V287:X300, Z287:AB300, AD287:AF300, AL287:AN300, AP287:AR300, AT287:AV300, AX287:AZ300," + _
        "F306:H313, J306:L313, N306:P313, R306:T313, V306:X313, Z306:AB313, AD306:AF313, AL306:AN313, AP306:AR313, AT306:AV313, AX306:AZ313," + _
        "F317:H325, J317:L325, N317:P325, R317:T325, V317:X325, Z317:AB325, AD317:AF325, AL317:AN325, AP317:AR325, AT317:AV325, AX317:AZ325"
    For Each st In arr
      Sheets(st).Range(s).ClearContents
    Next st
    Case vbNo
End Select
End Sub
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.10.2018, 13:03 7
Цитата Сообщение от tishakov Посмотреть сообщение
но появился один нюанс.
Извините, а что не так ?
0
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 30
20.10.2018, 13:06  [ТС] 8
Цитата Сообщение от SoftIce Посмотреть сообщение
Извините, а что не так ?
Ругается на строку
Миниатюры
Перенос части кода Excel на другую строку   Перенос части кода Excel на другую строку  
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.10.2018, 13:16 9
Проверьте, все ли листы есть в наличии. Что в момент ошибки в переменной st ?

Добавлено через 7 минут
Хотя нет, при отсутствии листа будет другая ошибка. Что-то не так с "километровой" строкой.
Сейчас недосуг. Могу попозже посмотреть. Заодно можно будет укоротить это безобразие
0
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 30
20.10.2018, 13:23  [ТС] 10
Цитата Сообщение от SoftIce Посмотреть сообщение
Могу попозже посмотреть. Заодно можно будет укоротить это безобразие
Хорошо
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.10.2018, 19:19 11
В общем вот
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Clear25Days()
    If MsgBox("Очистить?", vbYesNo + vbExclamation + vbDefaultButton2) = vbNo Then Exit Sub
    Dim r, c, r1 As String, r2 As String, c1 As String, c2 As String, s As String, i As Integer, j As Integer, d As Integer
    r = Array("23-34", "41-48", "51-61", "67-83", "86-95", "108-115", "121-123", "125-127", _
              "133-165", "175-212", "239-254", "262-265", "275-283", "287-300", "306-313", "317-325")
    c = Array("F-H", "J-L", "N-P", "R-T", "V-X", "Z-AB", "AD-AF", "AL-AN", "AP-AR", "AT-AV", "AX-AZ")
    For d = 1 To 25 '25 дней
        For i = 0 To UBound(r)
            r1 = Split(r(i), "-")(0): r2 = Split(r(i), "-")(1)
            For j = 0 To UBound(c)
                c1 = Split(c(j), "-")(0): c2 = Split(c(j), "-")(1)
                s = c1 & r1 & ":" & c2 & r2
                Sheets(d & "-й день").Range(s).ClearContents
                If i = 6 And j = 2 Then Exit For
    Next: Next: Next
End Sub
1
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 30
20.10.2018, 23:51  [ТС] 12
Цитата Сообщение от SoftIce Посмотреть сообщение
В общем вот
Вау, вот это реализация!
А если у меня в некоторых моментах написано "-й день", а иногда "-день".
Это можно как то обыграть, не изменяя названия листов?

Добавлено через 1 час 13 минут
Цитата Сообщение от SoftIce Посмотреть сообщение
В общем вот
Про закономерность.
Она в большей части есть, но и есть ячейки, диапазон которых меньше остальных:
"F121:H123, J121:L123, N121:P123"
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
21.10.2018, 04:28 13
Лучший ответ Сообщение было отмечено tishakov как решение

Решение

Цитата Сообщение от tishakov Посмотреть сообщение
А если у меня в некоторых моментах написано "-й день", а иногда "-день".
Это можно как то обыграть, не изменяя названия листов?
Тогда придёться вернуться к массиву названий листов
Visual Basic
1
 arr = Array("1-й день", "2-й день", "3-й день", "4-й день"..............
Цитата Сообщение от tishakov Посмотреть сообщение
Она в большей части есть, но и есть ячейки, диапазон которых меньше остальных:
"F121:H123, J121:L123, N121:P123"
Это учтено здесь
Visual Basic
1
 If i = 6 And j = 2 Then Exit For'  Это и есть  строка где N121:P123
Добавлено через 6 минут
Вот так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Clear25Days()
    If MsgBox("Очистить?", vbYesNo + vbExclamation + vbDefaultButton2) = vbNo Then Exit Sub
    Dim arr, r, c, r1 As String, r2 As String, c1 As String, c2 As String, s As String, i As Integer, j As Integer, d As Integer
    arr = Array("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-й день")
    r = Array("23-34", "41-48", "51-61", "67-83", "86-95", "108-115", "121-123", "125-127", _
              "133-165", "175-212", "239-254", "262-265", "275-283", "287-300", "306-313", "317-325")
    c = Array("F-H", "J-L", "N-P", "R-T", "V-X", "Z-AB", "AD-AF", "AL-AN", "AP-AR", "AT-AV", "AX-AZ")
    For d = 0 To UBound(arr)
        For i = 0 To UBound(r)
            r1 = Split(r(i), "-")(0): r2 = Split(r(i), "-")(1)
            For j = 0 To UBound(c)
                c1 = Split(c(j), "-")(0): c2 = Split(c(j), "-")(1)
                s = c1 & r1 & ":" & c2 & r2
                Sheets(arr(d)).Range(s).ClearContents
                If i = 6 And j = 2 Then Exit For
    Next: Next: Next
End Sub
1
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
21.10.2018, 04:38 14
Цитата Сообщение от SoftIce Посмотреть сообщение
Это учтено здесь
Перенос части кода Excel на другую строку
1
1 / 1 / 0
Регистрация: 18.03.2015
Сообщений: 30
22.10.2018, 17:00  [ТС] 15
Цитата Сообщение от SoftIce Посмотреть сообщение
Вот так
Все работает. СПАСИБО БОЛЬШОЕ!
0
22.10.2018, 17:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2018, 17:00
Помогаю со студенческими работами здесь

Перенос данных из одной табличной части в другую
У меня есть документ "Документ1". У него есть кнопка "Заполнить". При нажатии на нее октрывается...

Перенос части символов из одной ячейки в другую
Доброго времени суток) Помогите, пожалуйста , Как в exl сделать такое:в исходном столбце...

Перенос части текста из одной ячейки в другую
Добрый вечер! Помогите, пожалуйста, разобраться в такой ситуации. Есть таблица 1000+строк. В одной...

Перенос части данных из одной ячейки в другую
0318.61.3 SST Светильник 0331.20 Au Часы 0331.20.0 Настенный светильник 0331.20.AG...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru