Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Очистить ячейки, адреса которые прописаны в ячейке A1 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Очистить ячейки, адреса которые прописаны в ячейке A1 (Макросы/Sub)
Очистить ячейки, адреса которые прописаны в ячейке A1
stalber Дата: Четверг, 29.12.2022, 00:07 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 370
Репутация: 7 ±
Замечаний: 40% ±

Excel 2007
Здравствуйте, подскажите пожалуйста код.

В ячейке A1, прописаны адреса ячеек которые нужно стереть + стереть вдобавок ячейку тремя столбцами вправо.
К сообщению приложен файл: vopros2022.xlsx (9.0 Kb)
 
Ответить
СообщениеЗдравствуйте, подскажите пожалуйста код.

В ячейке A1, прописаны адреса ячеек которые нужно стереть + стереть вдобавок ячейку тремя столбцами вправо.

Автор - stalber
Дата добавления - 29.12.2022 в 00:07
Gustav Дата: Четверг, 29.12.2022, 00:28 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Вот если Вы перечислите адреса в A1 через запятую, т.е. не "C9C10D11", а "C9,C10,D11", то тогда вот такая совсем простенькая процедурка будет делать желаемое:
[vba]
Код
Sub clearAddrsFromA1plus3colsToRight()
    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Лист1")
    With wks.Range(wks.Range("A1"))
        .ClearContents
        .Offset(0, 3).ClearContents
    End With
End Sub
[/vba]Иначе предстоит мучительная работа по впихиванию какого-то разделителя в эту строку в A1. Игра не стоит таких свеч и лучше сразу разделиться запятой.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеВот если Вы перечислите адреса в A1 через запятую, т.е. не "C9C10D11", а "C9,C10,D11", то тогда вот такая совсем простенькая процедурка будет делать желаемое:
[vba]
Код
Sub clearAddrsFromA1plus3colsToRight()
    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Лист1")
    With wks.Range(wks.Range("A1"))
        .ClearContents
        .Offset(0, 3).ClearContents
    End With
End Sub
[/vba]Иначе предстоит мучительная работа по впихиванию какого-то разделителя в эту строку в A1. Игра не стоит таких свеч и лучше сразу разделиться запятой.

Автор - Gustav
Дата добавления - 29.12.2022 в 00:28
i691198 Дата: Четверг, 29.12.2022, 16:28 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 218
Репутация: 85 ±
Замечаний: 0% ±

Для этого примера можно применить такой код.
[vba]
Код
Option Explicit

Sub DelV()
    Dim Ar(), St$, L%, n%, i%
    St = Trim(Cells(1, 1))
    L = Len(St)
    n = 1
    ReDim Ar(1 To L / 2) 'немного избыточно
    Ar(1) = Left(St, 1)
    For i = 2 To L
        If Mid(St, i - 1, 1) Like "[0-9]" And Mid(St, i, 1) Like "[A-Z]" Then n = n + 1
        Ar(n) = Ar(n) & Mid(St, i, 1)
    Next
    For i = 1 To n
        Range(Ar(i)).ClearContents
        Range(Ar(i)).Offset(, 3).ClearContents
    Next
End Sub
[/vba]
 
Ответить
СообщениеДля этого примера можно применить такой код.
[vba]
Код
Option Explicit

Sub DelV()
    Dim Ar(), St$, L%, n%, i%
    St = Trim(Cells(1, 1))
    L = Len(St)
    n = 1
    ReDim Ar(1 To L / 2) 'немного избыточно
    Ar(1) = Left(St, 1)
    For i = 2 To L
        If Mid(St, i - 1, 1) Like "[0-9]" And Mid(St, i, 1) Like "[A-Z]" Then n = n + 1
        Ar(n) = Ar(n) & Mid(St, i, 1)
    Next
    For i = 1 To n
        Range(Ar(i)).ClearContents
        Range(Ar(i)).Offset(, 3).ClearContents
    Next
End Sub
[/vba]

Автор - i691198
Дата добавления - 29.12.2022 в 16:28
Gustav Дата: Пятница, 30.12.2022, 11:31 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Тогда уж покороче будет "мучительная работа по впихиванию разделителя" :)
[vba]
Код
Sub clearAddrsFromA1plus3colsToRight_v2()
    Dim St$, i%, wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Лист1")
    St = Trim(wks.Cells(1, 1))
    For i = Len(St) - 1 To 1 Step -1
        If Mid(St, i, 1) Like "[0-9]" And Mid(St, i + 1, 1) Like "[A-Z]" Then St = Left(St, i) & "," & Mid(St, i + 1)
    Next i
    wks.Range(St).ClearContents
    wks.Range(St).Offset(0, 3).ClearContents
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеТогда уж покороче будет "мучительная работа по впихиванию разделителя" :)
[vba]
Код
Sub clearAddrsFromA1plus3colsToRight_v2()
    Dim St$, i%, wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Лист1")
    St = Trim(wks.Cells(1, 1))
    For i = Len(St) - 1 To 1 Step -1
        If Mid(St, i, 1) Like "[0-9]" And Mid(St, i + 1, 1) Like "[A-Z]" Then St = Left(St, i) & "," & Mid(St, i + 1)
    Next i
    wks.Range(St).ClearContents
    wks.Range(St).Offset(0, 3).ClearContents
End Sub
[/vba]

Автор - Gustav
Дата добавления - 30.12.2022 в 11:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Очистить ячейки, адреса которые прописаны в ячейке A1 (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!