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

Вход

Регистрация

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

 

= Мир MS Excel/Выделение несмежных диапазонов с Aplication.InPut - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выделение несмежных диапазонов с Aplication.InPut
Roman777 Дата: Понедельник, 23.03.2015, 14:24 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Подскажите пожалуйста, возможно ли данной функцией выделить несмежные диапазоны, если да. Мне кажется, что она выделяет несмежные диапазоны, но вот не пойму, почему мой макрос, сделанный для удаления выделенных столбцов в таблице, в случае выделения нескольких не смежных диапазонов, удаляет только столбцы, относящиеся к первому диапазону.
[vba]
Код
Sub Удаление_ненужных_столбцов()

     Dim range1 As Range
     Dim iCell As Range
     Dim i, j, k As Long
     Dim perechen As String
     Dim NameStolbec() As String
     shapka = InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы", "Позиция шапки", "1")
     Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
     perechen = InputBox("Нужен ли перечень удалённых столбцов?", "Составление перечня", "Да")
Application.ScreenUpdating = False
     j_n = Cells(shapka, Columns.Count).End(xlToLeft).Column
     i_n = range1.Cells.Count
     MsgBox (i_n)
     For i = 1 To i_n
     ReDim Preserve NameStolbec(i_n)
        NameStolbec(i) = range1(i)
     Next i
     For i = 1 To i_n
        For j = 1 To j_n Step 1
           If Cells(shapka, j).Value = NameStolbec(i) Then
              Columns(j).Select
              Columns(j).Delete
              k = k + 1
              If perechen = "Да" Then
               If perech = "" Then
                  perech = NameStolbec(i) & Chr(13)
               Else
                  perech = perech & NameStolbec(i) & Chr(13)
               End If
              End If
           End If
        Next j
     Next i
Application.ScreenUpdating = True
     MsgBox ("Удалено " & k & " столбцов")
        If perechen = "Да" Then
          If perech <> "" Then
             MsgBox ("Перечень удалённых столбцов: " & Chr(13) & perech)
          End If
        End If
End Sub
[/vba]

Кроме того, количество ячеек в выделенном диапазоне считает правильно " i_n = range1.Cells.Count", а вот когда пытаюсь посмотреть элементы диапазона "range1(i)", то их показывает только для первого из нескольких несмежных диапазонов ячеек. Для столбцов из несмежных диапазонов "range1(i)" = ""


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 23.03.2015, 14:40
 
Ответить
СообщениеДобрый день!
Подскажите пожалуйста, возможно ли данной функцией выделить несмежные диапазоны, если да. Мне кажется, что она выделяет несмежные диапазоны, но вот не пойму, почему мой макрос, сделанный для удаления выделенных столбцов в таблице, в случае выделения нескольких не смежных диапазонов, удаляет только столбцы, относящиеся к первому диапазону.
[vba]
Код
Sub Удаление_ненужных_столбцов()

     Dim range1 As Range
     Dim iCell As Range
     Dim i, j, k As Long
     Dim perechen As String
     Dim NameStolbec() As String
     shapka = InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы", "Позиция шапки", "1")
     Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
     perechen = InputBox("Нужен ли перечень удалённых столбцов?", "Составление перечня", "Да")
Application.ScreenUpdating = False
     j_n = Cells(shapka, Columns.Count).End(xlToLeft).Column
     i_n = range1.Cells.Count
     MsgBox (i_n)
     For i = 1 To i_n
     ReDim Preserve NameStolbec(i_n)
        NameStolbec(i) = range1(i)
     Next i
     For i = 1 To i_n
        For j = 1 To j_n Step 1
           If Cells(shapka, j).Value = NameStolbec(i) Then
              Columns(j).Select
              Columns(j).Delete
              k = k + 1
              If perechen = "Да" Then
               If perech = "" Then
                  perech = NameStolbec(i) & Chr(13)
               Else
                  perech = perech & NameStolbec(i) & Chr(13)
               End If
              End If
           End If
        Next j
     Next i
Application.ScreenUpdating = True
     MsgBox ("Удалено " & k & " столбцов")
        If perechen = "Да" Then
          If perech <> "" Then
             MsgBox ("Перечень удалённых столбцов: " & Chr(13) & perech)
          End If
        End If
End Sub
[/vba]

Кроме того, количество ячеек в выделенном диапазоне считает правильно " i_n = range1.Cells.Count", а вот когда пытаюсь посмотреть элементы диапазона "range1(i)", то их показывает только для первого из нескольких несмежных диапазонов ячеек. Для столбцов из несмежных диапазонов "range1(i)" = ""

Автор - Roman777
Дата добавления - 23.03.2015 в 14:24
KSV Дата: Понедельник, 23.03.2015, 14:56 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
попробуй
[vba]
Код
Sub Удаление_ненужных_столбцов()

Dim range1 As Range
Dim iCell As Range
Dim shapka As Long
Dim i As Long, j As Long, k As Long, i_n As Long, j_n As Long
Dim perechen As Boolean
Dim perech As String
Dim NameStolbec() As String

shapka = Application.InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы")
Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
perechen = MsgBox("Нужен ли перечень удалённых столбцов?", vbQuestion Or vbYesNo)
Application.ScreenUpdating = False
j_n = Cells(shapka, Columns.Count).End(xlToLeft).Column
i_n = range1.Cells.Count
MsgBox (i_n)
ReDim Preserve NameStolbec(i_n)
For i = 1 To i_n
        NameStolbec(i) = range1(, i)
Next i
For i = 1 To i_n
        For j = 1 To j_n Step 1
            If Cells(shapka, j).Value = NameStolbec(i) Then
                'Columns(j).Select
                Columns(j).Delete
                j_n = j_n - 1
                k = k + 1
                If perechen Then
                    perech = perech & Chr(13) & NameStolbec(i)
                End If
                Exit For
            End If
        Next j
Next i
Application.ScreenUpdating = True
MsgBox ("Удалено " & k & " столбцов")
        If perechen Then
            If perech <> "" Then
                MsgBox ("Перечень удалённых столбцов: " & perech)
            End If
        End If
End Sub
[/vba]

пытаюсь посмотреть элементы диапазона "range1(i)"

тебе нужно перебирать не ячейки диапазона ("range1(i)"), а столбцы диапазона ("range1(, i)"), т.к. в шапке могут быть объединенные ячейки.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 23.03.2015, 15:10
 
Ответить
Сообщениепопробуй
[vba]
Код
Sub Удаление_ненужных_столбцов()

Dim range1 As Range
Dim iCell As Range
Dim shapka As Long
Dim i As Long, j As Long, k As Long, i_n As Long, j_n As Long
Dim perechen As Boolean
Dim perech As String
Dim NameStolbec() As String

shapka = Application.InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы")
Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
perechen = MsgBox("Нужен ли перечень удалённых столбцов?", vbQuestion Or vbYesNo)
Application.ScreenUpdating = False
j_n = Cells(shapka, Columns.Count).End(xlToLeft).Column
i_n = range1.Cells.Count
MsgBox (i_n)
ReDim Preserve NameStolbec(i_n)
For i = 1 To i_n
        NameStolbec(i) = range1(, i)
Next i
For i = 1 To i_n
        For j = 1 To j_n Step 1
            If Cells(shapka, j).Value = NameStolbec(i) Then
                'Columns(j).Select
                Columns(j).Delete
                j_n = j_n - 1
                k = k + 1
                If perechen Then
                    perech = perech & Chr(13) & NameStolbec(i)
                End If
                Exit For
            End If
        Next j
Next i
Application.ScreenUpdating = True
MsgBox ("Удалено " & k & " столбцов")
        If perechen Then
            If perech <> "" Then
                MsgBox ("Перечень удалённых столбцов: " & perech)
            End If
        End If
End Sub
[/vba]

пытаюсь посмотреть элементы диапазона "range1(i)"

тебе нужно перебирать не ячейки диапазона ("range1(i)"), а столбцы диапазона ("range1(, i)"), т.к. в шапке могут быть объединенные ячейки.

Автор - KSV
Дата добавления - 23.03.2015 в 14:56
Roman777 Дата: Понедельник, 23.03.2015, 15:09 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Программка работает аналогично. Если выделить несколько несмежных диапазонов, удалены будут только те столбцы, которые относятся к первому диапазону. Как пример скинул файлик. В нём "мнимая" табличка.
Пометим на удаление всё что выделено жёлтым. Удаляется только 1-5 столбиков, остальные 11-19 и 23-26 останутся.
К сообщению приложен файл: 8598897.xlsx (7.9 Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Программка работает аналогично. Если выделить несколько несмежных диапазонов, удалены будут только те столбцы, которые относятся к первому диапазону. Как пример скинул файлик. В нём "мнимая" табличка.
Пометим на удаление всё что выделено жёлтым. Удаляется только 1-5 столбиков, остальные 11-19 и 23-26 останутся.

Автор - Roman777
Дата добавления - 23.03.2015 в 15:09
Roman777 Дата: Понедельник, 23.03.2015, 15:16 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Кстати, KSV, я никогда msgbox не пользовался для выполнения условий, подскажите пожалуйста, почему и в случае ответа Да и в случае Нет, переменная perechen по Вашему коду принимает значение "True", то есть и расчёт и табличка с перечнем выскочат в любом случае, независимо от ответа? Подскажите пожалуйста, как это можно подправить?


Много чего не знаю!!!!
 
Ответить
СообщениеКстати, KSV, я никогда msgbox не пользовался для выполнения условий, подскажите пожалуйста, почему и в случае ответа Да и в случае Нет, переменная perechen по Вашему коду принимает значение "True", то есть и расчёт и табличка с перечнем выскочат в любом случае, независимо от ответа? Подскажите пожалуйста, как это можно подправить?

Автор - Roman777
Дата добавления - 23.03.2015 в 15:16
KSV Дата: Понедельник, 23.03.2015, 15:16 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
в случае выделения нескольких не смежных диапазонов, удаляет только столбцы, относящиеся к первому диапазону

в твоем случае, все, как раз, с точностью до наоборот (стало ясно по твоему файлу) :)
твою проблему понял - сейчас кину файл


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
в случае выделения нескольких не смежных диапазонов, удаляет только столбцы, относящиеся к первому диапазону

в твоем случае, все, как раз, с точностью до наоборот (стало ясно по твоему файлу) :)
твою проблему понял - сейчас кину файл

Автор - KSV
Дата добавления - 23.03.2015 в 15:16
KSV Дата: Понедельник, 23.03.2015, 15:18 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
принимает значение "True"

потому, что не дописал :)
сейчас сделаю


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
принимает значение "True"

потому, что не дописал :)
сейчас сделаю

Автор - KSV
Дата добавления - 23.03.2015 в 15:18
Roman777 Дата: Понедельник, 23.03.2015, 15:20 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Ясно, спасибо, я просто подумал, что Msgbox сам должен задать на ДА "True" а на НЕТ "False".


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Ясно, спасибо, я просто подумал, что Msgbox сам должен задать на ДА "True" а на НЕТ "False".

Автор - Roman777
Дата добавления - 23.03.2015 в 15:20
KSV Дата: Понедельник, 23.03.2015, 15:28 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
пробуй


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениепробуй

Автор - KSV
Дата добавления - 23.03.2015 в 15:28
wild_pig Дата: Понедельник, 23.03.2015, 15:35 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 518
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
[vba]
Код
With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
         .EntireColumn.Delete
End With
[/vba]
 
Ответить
Сообщение[vba]
Код
With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
         .EntireColumn.Delete
End With
[/vba]

Автор - wild_pig
Дата добавления - 23.03.2015 в 15:35
Roman777 Дата: Понедельник, 23.03.2015, 15:43 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Так, я пока только попробовал пару раз, но по тому примеру, что я прикреплял, работает неверно. Удаляет даже те столбцы, которые не выделял и кроме этого, не удаляет все, что выделил я. (По файлу удалил 1-18, оставил 19-26). Счас попробую понять что не так.)))
Сразу хочу спросить, а что такое "Option Explicit"?


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Так, я пока только попробовал пару раз, но по тому примеру, что я прикреплял, работает неверно. Удаляет даже те столбцы, которые не выделял и кроме этого, не удаляет все, что выделил я. (По файлу удалил 1-18, оставил 19-26). Счас попробую понять что не так.)))
Сразу хочу спросить, а что такое "Option Explicit"?

Автор - Roman777
Дата добавления - 23.03.2015 в 15:43
Roman777 Дата: Понедельник, 23.03.2015, 15:48 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
wild_pig, Ваще, Атас! Но возможно ли используя данную функцию, произвести подсчёт удалённых столбиков и вывести наименования?


Много чего не знаю!!!!
 
Ответить
Сообщениеwild_pig, Ваще, Атас! Но возможно ли используя данную функцию, произвести подсчёт удалённых столбиков и вывести наименования?

Автор - Roman777
Дата добавления - 23.03.2015 в 15:48
Roman777 Дата: Понедельник, 23.03.2015, 16:05 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
[vba]
Код
With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
   Set range1 = .EntireColumn
MsgBox (range1.Columns.Count)
End With
[/vba]
Если чё эт просто эксперимент...
Почему-то данный код выдаёт количество только для первого диапазона, если выделено несколько смежных. (выделил 1-5, 16-20 столбцы). А данное выражение даёт значение 5.


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 23.03.2015, 16:05
 
Ответить
Сообщение[vba]
Код
With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
   Set range1 = .EntireColumn
MsgBox (range1.Columns.Count)
End With
[/vba]
Если чё эт просто эксперимент...
Почему-то данный код выдаёт количество только для первого диапазона, если выделено несколько смежных. (выделил 1-5, 16-20 столбцы). А данное выражение даёт значение 5.

Автор - Roman777
Дата добавления - 23.03.2015 в 16:05
KSV Дата: Понедельник, 23.03.2015, 16:59 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
wild_pig, спасибо за подсказку, это значительно упрощает весь этот "огород" :)
[vba]
Код
Option Explicit
Option Base 1

Sub Удаление_ненужных_столбцов()
     Dim range1  As Range
     Dim i As Long, j As Long, k As Long, shapka As Long
     Dim perechen As Boolean
     Dim perech As String
     Dim NameStolbec() As String
      
     'shapka = Application.InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы")
     Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
     perechen = MsgBox("Нужен ли перечень удалённых столбцов?", vbQuestion Or vbYesNo) = vbYes
      
     k = range1.Cells.Count
     MsgBox (k)
      
     ReDim NameStolbec(k)
     For j = 1 To range1.Areas.Count
         For i = 1 To range1.Areas(j).Columns.Count
             NameStolbec(i) = range1.Areas(j).Columns(i).Value
             If perechen Then _
                 perech = perech & vbCr & NameStolbec(i)
         Next
     Next
      
     Application.ScreenUpdating = False
     range1.EntireColumn.Delete
     Application.ScreenUpdating = True
      
     MsgBox ("Удалено " & k & " столбцов")
     If perech <> "" Then
         MsgBox ("Перечень удалённых столбцов: " & perech)
     End If
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениеwild_pig, спасибо за подсказку, это значительно упрощает весь этот "огород" :)
[vba]
Код
Option Explicit
Option Base 1

Sub Удаление_ненужных_столбцов()
     Dim range1  As Range
     Dim i As Long, j As Long, k As Long, shapka As Long
     Dim perechen As Boolean
     Dim perech As String
     Dim NameStolbec() As String
      
     'shapka = Application.InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы")
     Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
     perechen = MsgBox("Нужен ли перечень удалённых столбцов?", vbQuestion Or vbYesNo) = vbYes
      
     k = range1.Cells.Count
     MsgBox (k)
      
     ReDim NameStolbec(k)
     For j = 1 To range1.Areas.Count
         For i = 1 To range1.Areas(j).Columns.Count
             NameStolbec(i) = range1.Areas(j).Columns(i).Value
             If perechen Then _
                 perech = perech & vbCr & NameStolbec(i)
         Next
     Next
      
     Application.ScreenUpdating = False
     range1.EntireColumn.Delete
     Application.ScreenUpdating = True
      
     MsgBox ("Удалено " & k & " столбцов")
     If perech <> "" Then
         MsgBox ("Перечень удалённых столбцов: " & perech)
     End If
End Sub
[/vba]

Автор - KSV
Дата добавления - 23.03.2015 в 16:59
Roman777 Дата: Понедельник, 23.03.2015, 17:13 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, а я ваш код подредактировал и вроде всё отлично пашет).

[vba]
Код
'Option Explicit

Sub Удаление_ненужных_столбцов2()

Dim range1 As Range
Dim iCell As Range
Dim i As Long, j As Long, k As Long, i_n As Long, j_n As Long, shapka As Long
Dim perechen As Boolean
Dim perech As String
Dim NameStolbec() As String

shapka = Application.InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы")
Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
perechen = MsgBox("Нужен ли перечень удалённых столбцов?", vbQuestion Or vbYesNo) = vbYes
Application.ScreenUpdating = False
j_n = Cells(shapka, Columns.Count).End(xlToLeft).Column
i_n = range1.Cells.Count
i = 0
perech = ""
ReDim Preserve NameStolbec(i_n)
For Each iCell In range1
  '   MsgBox (iCell.Cells.Count)
      i = i + 1
      NameStolbec(i) = iCell
          MsgBox (i & " / " & NameStolbec(i))
Next iCell
i = i_n
For i = 1 To i_n
     For j = j_n To 1 Step -1
         If Cells(shapka, j).Value = NameStolbec(i) Then
             'Columns(j).Select
             Columns(j).Delete
             k = k + 1
             If perechen Then
               If perech = "" Then
                  perech = NameStolbec(i) & Chr(13)
               Else
                  perech = perech & NameStolbec(i) & Chr(13)
               End If
             End If
         End If
     Next j
Next i
Application.ScreenUpdating = True
MsgBox ("Удалено " & k & " столбцов")
     If perechen Then
         If perech <> "" Then
             MsgBox ("Перечень удалённых столбцов: " & Chr(13) & perech)
         End If
     End If
End Sub
[/vba]

Спасибо большое за помощь). Блин, такая простая задача, а времени отняла оч много.


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, а я ваш код подредактировал и вроде всё отлично пашет).

[vba]
Код
'Option Explicit

Sub Удаление_ненужных_столбцов2()

Dim range1 As Range
Dim iCell As Range
Dim i As Long, j As Long, k As Long, i_n As Long, j_n As Long, shapka As Long
Dim perechen As Boolean
Dim perech As String
Dim NameStolbec() As String

shapka = Application.InputBox("Укажите номер строки, в которой представлена шапка вашей таблицы")
Set range1 = Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
perechen = MsgBox("Нужен ли перечень удалённых столбцов?", vbQuestion Or vbYesNo) = vbYes
Application.ScreenUpdating = False
j_n = Cells(shapka, Columns.Count).End(xlToLeft).Column
i_n = range1.Cells.Count
i = 0
perech = ""
ReDim Preserve NameStolbec(i_n)
For Each iCell In range1
  '   MsgBox (iCell.Cells.Count)
      i = i + 1
      NameStolbec(i) = iCell
          MsgBox (i & " / " & NameStolbec(i))
Next iCell
i = i_n
For i = 1 To i_n
     For j = j_n To 1 Step -1
         If Cells(shapka, j).Value = NameStolbec(i) Then
             'Columns(j).Select
             Columns(j).Delete
             k = k + 1
             If perechen Then
               If perech = "" Then
                  perech = NameStolbec(i) & Chr(13)
               Else
                  perech = perech & NameStolbec(i) & Chr(13)
               End If
             End If
         End If
     Next j
Next i
Application.ScreenUpdating = True
MsgBox ("Удалено " & k & " столбцов")
     If perechen Then
         If perech <> "" Then
             MsgBox ("Перечень удалённых столбцов: " & Chr(13) & perech)
         End If
     End If
End Sub
[/vba]

Спасибо большое за помощь). Блин, такая простая задача, а времени отняла оч много.

Автор - Roman777
Дата добавления - 23.03.2015 в 17:13
Roman777 Дата: Понедельник, 23.03.2015, 17:17 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, И последний Ваш макрос тоже робит что надо)))).


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, И последний Ваш макрос тоже робит что надо)))).

Автор - Roman777
Дата добавления - 23.03.2015 в 17:17
Hugo Дата: Понедельник, 23.03.2015, 17:38 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
[vba]
Код
    With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
         Set range1 = .EntireColumn
         For Each ar In .Areas
             sm = sm + ar.Columns.Count
         Next
         MsgBox sm
     End With
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение[vba]
Код
    With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
         Set range1 = .EntireColumn
         For Each ar In .Areas
             sm = sm + ar.Columns.Count
         Next
         MsgBox sm
     End With
[/vba]

Автор - Hugo
Дата добавления - 23.03.2015 в 17:38
wild_pig Дата: Понедельник, 23.03.2015, 17:39 | Сообщение № 17
Группа: Проверенные
Ранг: Обитатель
Сообщений: 518
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
[vba]
Код
With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
     MsgBox .Count
     .EntireColumn.Delete
End With
[/vba]
Только не удалить колонки перед сообщением
 
Ответить
Сообщение[vba]
Код
With Application.InputBox("Выделите ячейку (наименование в шапке) удаляемого (удаляемых) столбцов", Type:=8)
     MsgBox .Count
     .EntireColumn.Delete
End With
[/vba]
Только не удалить колонки перед сообщением

Автор - wild_pig
Дата добавления - 23.03.2015 в 17:39
KSV Дата: Понедельник, 23.03.2015, 18:26 | Сообщение № 18
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
последний Ваш макрос тоже робит что надо

Roman777, тебе же, как я понял, нужно информировать пользователя не только о кол-ве удаляемых столбцов, и выводить наименования (из шапки таблицы) удаленных столцов? (если пользователь утвердительно ответит на вопрос: "Нужен ли перечень удалённых столбцов?")

Но возможно ли используя данную функцию, произвести подсчёт удалённых столбиков и вывести наименования?


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 23.03.2015, 18:27
 
Ответить
Сообщение
последний Ваш макрос тоже робит что надо

Roman777, тебе же, как я понял, нужно информировать пользователя не только о кол-ве удаляемых столбцов, и выводить наименования (из шапки таблицы) удаленных столцов? (если пользователь утвердительно ответит на вопрос: "Нужен ли перечень удалённых столбцов?")

Но возможно ли используя данную функцию, произвести подсчёт удалённых столбиков и вывести наименования?

Автор - KSV
Дата добавления - 23.03.2015 в 18:26
Roman777 Дата: Вторник, 24.03.2015, 09:06 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Да, именно так и планировалось. Что, в итоге, Вы и выполнили...) Благодарствую за помощь.


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Да, именно так и планировалось. Что, в итоге, Вы и выполнили...) Благодарствую за помощь.

Автор - Roman777
Дата добавления - 24.03.2015 в 09:06
  • Страница 1 из 1
  • 1
Поиск:

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