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

Вход

Регистрация

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

 

= Мир MS Excel/Как удалить чекбокс вместе с привязанной ячейкой? - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Как удалить чекбокс вместе с привязанной ячейкой?
Stork4ever Дата: Суббота, 17.01.2015, 19:21 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Запускаю макрос удаления строк с пустыми значениями.

[vba]
Код
      
      Dim MyRange As Range, x As Range
      Set MyRange = Range("S10:S1500")
      For Each Var In MyRange
          If Var = 0 Then If x Is Nothing Then Set x = Rows(Var.Row) Else Set x = Union(x, Rows(Var.Row))
      Next
      If Not x Is Nothing Then x.Delete

[/vba]

Проблема - строки удаляются, а чекбоксы остаются.

Чекбокс (не из элементов ActivеX) привязанный к ячейке нужно удалить вместе со строкой и прявязанной ячейкой.

Как это органировать?
К сообщению приложен файл: 0732876.rar (22.1 Kb)


Сообщение отредактировал Stork4ever - Воскресенье, 18.01.2015, 17:13
 
Ответить
СообщениеЗапускаю макрос удаления строк с пустыми значениями.

[vba]
Код
      
      Dim MyRange As Range, x As Range
      Set MyRange = Range("S10:S1500")
      For Each Var In MyRange
          If Var = 0 Then If x Is Nothing Then Set x = Rows(Var.Row) Else Set x = Union(x, Rows(Var.Row))
      Next
      If Not x Is Nothing Then x.Delete

[/vba]

Проблема - строки удаляются, а чекбоксы остаются.

Чекбокс (не из элементов ActivеX) привязанный к ячейке нужно удалить вместе со строкой и прявязанной ячейкой.

Как это органировать?

Автор - Stork4ever
Дата добавления - 17.01.2015 в 19:21
Karataev Дата: Суббота, 17.01.2015, 20:29 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
как чекбокс привязан к ячейке ? как вы привязали его ?
 
Ответить
Сообщениекак чекбокс привязан к ячейке ? как вы привязали его ?

Автор - Karataev
Дата добавления - 17.01.2015 в 20:29
Stork4ever Дата: Суббота, 17.01.2015, 20:51 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Никак не привязывал. Они перемещаются вместе с ячейками. Если я удаляю строки между чекбоксами, то они остаются/перемещаются с теми ячейками на которых они установлены. Но если удаляется строка на которой чекбокс, то тогда он перемещается на соседнюю строчку. Можно ли сделать так, что бы при удалении строки удалялся и чекбокс?
 
Ответить
СообщениеНикак не привязывал. Они перемещаются вместе с ячейками. Если я удаляю строки между чекбоксами, то они остаются/перемещаются с теми ячейками на которых они установлены. Но если удаляется строка на которой чекбокс, то тогда он перемещается на соседнюю строчку. Можно ли сделать так, что бы при удалении строки удалялся и чекбокс?

Автор - Stork4ever
Дата добавления - 17.01.2015 в 20:51
Karataev Дата: Суббота, 17.01.2015, 20:53 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
при установке/снятии флажка чекбокса,в какой-нибудь ячейке что-нибудь происходит ? есть ли такая привязка ?
 
Ответить
Сообщениепри установке/снятии флажка чекбокса,в какой-нибудь ячейке что-нибудь происходит ? есть ли такая привязка ?

Автор - Karataev
Дата добавления - 17.01.2015 в 20:53
alex77755 Дата: Воскресенье, 18.01.2015, 00:44 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Поэксперементировал. Без всякой привязки чукбоксы хоть из форм, хоть из ActiveX при удалении строк не удаляются.
Видимо надо как-то по другому их удалять.
Интересный вопрос. Завтра надо поискать решение


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеПоэксперементировал. Без всякой привязки чукбоксы хоть из форм, хоть из ActiveX при удалении строк не удаляются.
Видимо надо как-то по другому их удалять.
Интересный вопрос. Завтра надо поискать решение

Автор - alex77755
Дата добавления - 18.01.2015 в 00:44
Wasilich Дата: Воскресенье, 18.01.2015, 09:30 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Set MyRange = Range("S10:S1500")
Офигеть, это что, установлено почти полторы тысячи чекбоксов. %)
А иначе нельзя было поставить метку в строке тем же кликом мышки?
 
Ответить
Сообщение
Set MyRange = Range("S10:S1500")
Офигеть, это что, установлено почти полторы тысячи чекбоксов. %)
А иначе нельзя было поставить метку в строке тем же кликом мышки?

Автор - Wasilich
Дата добавления - 18.01.2015 в 09:30
gling Дата: Воскресенье, 18.01.2015, 09:47 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2690
Репутация: 765 ±
Замечаний: 0% ±

2010
Цитата
Офигеть,
И Это если только по строкам считать, а в примере на 29 строк уже установлено 143 чекбокса (лист КРОМКА) Если так продолжать книга будет не подъемной, с учетом того сколько листов еще нужно заполнить. И мое мнение, формулами этого не решить, или решить, но не так красиво как макросами.Извиняюсь не в ту тему встрял. Это из другой оперы, тоже про чекбоксы.


ЯД-41001506838083

Сообщение отредактировал gling - Воскресенье, 18.01.2015, 14:09
 
Ответить
Сообщение
Цитата
Офигеть,
И Это если только по строкам считать, а в примере на 29 строк уже установлено 143 чекбокса (лист КРОМКА) Если так продолжать книга будет не подъемной, с учетом того сколько листов еще нужно заполнить. И мое мнение, формулами этого не решить, или решить, но не так красиво как макросами.Извиняюсь не в ту тему встрял. Это из другой оперы, тоже про чекбоксы.

Автор - gling
Дата добавления - 18.01.2015 в 09:47
Stork4ever Дата: Воскресенье, 18.01.2015, 10:26 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Офигеть, это что, установлено почти полторы тысячи чекбоксов.


Нет, никто и не говорил, что в каждой ячейке установлен чекбокс.
Есть строка заголовок. Под ней на несколько строк другие данные... Чекбокс стоит в одной ячейке с заголовком например А1, и связан с ячейкой J1 в которую выводит значение (ИСТИНА/ЛОЖЬ). При удалении могут удаляться как нулевые строки с данными, так и итоговая строка с заголовком (если раздел весь нулевой).
 
Ответить
Сообщение
Офигеть, это что, установлено почти полторы тысячи чекбоксов.


Нет, никто и не говорил, что в каждой ячейке установлен чекбокс.
Есть строка заголовок. Под ней на несколько строк другие данные... Чекбокс стоит в одной ячейке с заголовком например А1, и связан с ячейкой J1 в которую выводит значение (ИСТИНА/ЛОЖЬ). При удалении могут удаляться как нулевые строки с данными, так и итоговая строка с заголовком (если раздел весь нулевой).

Автор - Stork4ever
Дата добавления - 18.01.2015 в 10:26
Wasilich Дата: Воскресенье, 18.01.2015, 11:28 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
в примере на 29 строк уже установлено 143 чекбокса (лист КРОМКА)
А где он, пример, я не вижу?
 
Ответить
Сообщение
в примере на 29 строк уже установлено 143 чекбокса (лист КРОМКА)
А где он, пример, я не вижу?

Автор - Wasilich
Дата добавления - 18.01.2015 в 11:28
Karataev Дата: Воскресенье, 18.01.2015, 13:08 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
Stork4ever, могу предложить такие идеи
1) можно применить myShape.ControlFormat.LinkedCell,если чекбокс связан с удаляемой строкой. например, если удаляется строка 1 и чекбокс связан с ячейкой A1(выводит в эту ячейку истина/ложь)
2 )можно применить myShape.TopLeftCell.Row,если чекбоксы строго занимают какое-то положение. например,если левый верхний угол чекбокса находится в пределах строки 1 и строку 1 надо удалить,то можно использовать такой вариант. аналог этого варианта myShape.BottomRightCell
3)можно при создании чекбокса делать в нем какую-нибудь метку:например,можно задать имя какое-нибудь,альтернативный текст и затем удалять на основе этих имен. например,можно в имени указыаать номер строки,куда вставляется чекбокс.
 
Ответить
СообщениеStork4ever, могу предложить такие идеи
1) можно применить myShape.ControlFormat.LinkedCell,если чекбокс связан с удаляемой строкой. например, если удаляется строка 1 и чекбокс связан с ячейкой A1(выводит в эту ячейку истина/ложь)
2 )можно применить myShape.TopLeftCell.Row,если чекбоксы строго занимают какое-то положение. например,если левый верхний угол чекбокса находится в пределах строки 1 и строку 1 надо удалить,то можно использовать такой вариант. аналог этого варианта myShape.BottomRightCell
3)можно при создании чекбокса делать в нем какую-нибудь метку:например,можно задать имя какое-нибудь,альтернативный текст и затем удалять на основе этих имен. например,можно в имени указыаать номер строки,куда вставляется чекбокс.

Автор - Karataev
Дата добавления - 18.01.2015 в 13:08
Stork4ever Дата: Воскресенье, 18.01.2015, 14:08 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Прилагаю образец. Смотрите вложенный файл...

Если нажать кнопку создания отчета, то в созданном отчете видно, что съезжает чекбокс раздела ОТЧЕТ 1 и накладываются в разделе ОТЧЕТ 2 первый чекбокс.

А заодно очень буду благодарен за ответ на вопрос: "Почему меняется цвет заголовков таблицы при переносе?"
К сообщению приложен файл: test.rar (22.1 Kb)


Сообщение отредактировал Stork4ever - Воскресенье, 18.01.2015, 14:58
 
Ответить
СообщениеПрилагаю образец. Смотрите вложенный файл...

Если нажать кнопку создания отчета, то в созданном отчете видно, что съезжает чекбокс раздела ОТЧЕТ 1 и накладываются в разделе ОТЧЕТ 2 первый чекбокс.

А заодно очень буду благодарен за ответ на вопрос: "Почему меняется цвет заголовков таблицы при переносе?"

Автор - Stork4ever
Дата добавления - 18.01.2015 в 14:08
Wasilich Дата: Воскресенье, 18.01.2015, 19:17 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Предлагаю добавить в таблице столбец для галок и применить макрос из примера.
К сообщению приложен файл: 9377627.xls (19.0 Kb)
 
Ответить
СообщениеПредлагаю добавить в таблице столбец для галок и применить макрос из примера.

Автор - Wasilich
Дата добавления - 18.01.2015 в 19:17
Stork4ever Дата: Воскресенье, 18.01.2015, 19:24 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Предлагаю добавить в таблице столбец для галок и применить макрос из примера.


Довольно глючный пример. Есть вероятность случайного снятия/установки галочки. Да и логика интуитивно не совсем понятна.
Кроме того, задача в подготовленном листе оставить возможность использования чекбоксов, но уже без использования макросов, поскольку на удаленных компьютерах макросы могут быть отключены.
 
Ответить
Сообщение
Предлагаю добавить в таблице столбец для галок и применить макрос из примера.


Довольно глючный пример. Есть вероятность случайного снятия/установки галочки. Да и логика интуитивно не совсем понятна.
Кроме того, задача в подготовленном листе оставить возможность использования чекбоксов, но уже без использования макросов, поскольку на удаленных компьютерах макросы могут быть отключены.

Автор - Stork4ever
Дата добавления - 18.01.2015 в 19:24
Wasilich Дата: Воскресенье, 18.01.2015, 19:34 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Довольно глючный пример. Есть вероятность случайного снятия/установки галочки.
:) А с чекбоксом случайности исключены?
Да я и не настаиваю. :)
 
Ответить
Сообщение
Довольно глючный пример. Есть вероятность случайного снятия/установки галочки.
:) А с чекбоксом случайности исключены?
Да я и не настаиваю. :)

Автор - Wasilich
Дата добавления - 18.01.2015 в 19:34
Stork4ever Дата: Воскресенье, 18.01.2015, 21:30 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Неужели нет решения?
 
Ответить
СообщениеНеужели нет решения?

Автор - Stork4ever
Дата добавления - 18.01.2015 в 21:30
Karataev Дата: Воскресенье, 18.01.2015, 22:33 | Сообщение № 16
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
Неужели нет решения?

в посте 10 я написал,как можно сделать.но вы задали вопрос один(первый пост),а выложили файл,который сложнее,чем ваш вопрос из поста #1. я не буду делать задание в файле.


Сообщение отредактировал Karataev - Воскресенье, 18.01.2015, 22:34
 
Ответить
Сообщение
Неужели нет решения?

в посте 10 я написал,как можно сделать.но вы задали вопрос один(первый пост),а выложили файл,который сложнее,чем ваш вопрос из поста #1. я не буду делать задание в файле.

Автор - Karataev
Дата добавления - 18.01.2015 в 22:33
Stork4ever Дата: Воскресенье, 18.01.2015, 22:47 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я и не прошу делать это в файле. Файл мне пришлось сделать, что бы показать на примере, где установлены чекбоксы и как это работает.
В 10 посте я не совсем понял идею. Уж простите меня... я все-таки не программист. Интуитивно мне кажется, что больше подходит второй вариант. Но это только интуитивно.
Как использовать приведенные Вами примеры я не знаю :( Буду очень признателен за простой пример.
 
Ответить
СообщениеЯ и не прошу делать это в файле. Файл мне пришлось сделать, что бы показать на примере, где установлены чекбоксы и как это работает.
В 10 посте я не совсем понял идею. Уж простите меня... я все-таки не программист. Интуитивно мне кажется, что больше подходит второй вариант. Но это только интуитивно.
Как использовать приведенные Вами примеры я не знаю :( Буду очень признателен за простой пример.

Автор - Stork4ever
Дата добавления - 18.01.2015 в 22:47
Karataev Дата: Понедельник, 19.01.2015, 00:41 | Сообщение № 18
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
утилита ,которая относится к вашему посту #1
[vba]
Код
Sub Вариант2()
     Dim myShape As Shape
     Dim r As Long, i As Long
     Application.ScreenUpdating = False
     For r = 1500 To 10 Step -1
         If Cells(r, "S").Value = 0 Then
             For i = ActiveSheet.Shapes.Count To 1 Step -1
                 Set myShape = ActiveSheet.Shapes(i)
                 If myShape.FormControlType = xlCheckBox Then
                     If myShape.TopLeftCell.Row = i Then
                         myShape.Delete
                     End If
                 End If
             Next
             Rows(r).Delete
         End If
     Next
     Application.ScreenUpdating = True
End Sub
[/vba]
 
Ответить
Сообщениеутилита ,которая относится к вашему посту #1
[vba]
Код
Sub Вариант2()
     Dim myShape As Shape
     Dim r As Long, i As Long
     Application.ScreenUpdating = False
     For r = 1500 To 10 Step -1
         If Cells(r, "S").Value = 0 Then
             For i = ActiveSheet.Shapes.Count To 1 Step -1
                 Set myShape = ActiveSheet.Shapes(i)
                 If myShape.FormControlType = xlCheckBox Then
                     If myShape.TopLeftCell.Row = i Then
                         myShape.Delete
                     End If
                 End If
             Next
             Rows(r).Delete
         End If
     Next
     Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Karataev
Дата добавления - 19.01.2015 в 00:41
Stork4ever Дата: Понедельник, 19.01.2015, 09:08 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Ругается на эту строчку:

[vba]
Код
    If myShape.FormControlType = xlCheckBox Then
[/vba]

Run-time error '1004':
Application-defined or object-defined error

В чем может быть проблема?
Это происходит при обратотке третей строчки на которой находится первый чекбокс.
 
Ответить
СообщениеРугается на эту строчку:

[vba]
Код
    If myShape.FormControlType = xlCheckBox Then
[/vba]

Run-time error '1004':
Application-defined or object-defined error

В чем может быть проблема?
Это происходит при обратотке третей строчки на которой находится первый чекбокс.

Автор - Stork4ever
Дата добавления - 19.01.2015 в 09:08
Karataev Дата: Понедельник, 19.01.2015, 16:40 | Сообщение № 20
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
исправил ошибку
[vba]
Код
Sub Вариант2()
      Dim myShape As Shape
      Dim r As Long, i As Long
      Application.ScreenUpdating = False
      For r = 1500 To 10 Step -1
          If Cells(r, "S").Value = 0 Then
              For i = ActiveSheet.Shapes.Count To 1 Step -1
                  Set myShape = ActiveSheet.Shapes(i)
                  If myShape.Type = msoFormControl Then
                      If myShape.FormControlType = xlCheckBox Then
                          If myShape.TopLeftCell.Row = r Then
                    myShape.Delete
                          End If
                      End If
                  End If
              Next
              Rows(r).Delete
          End If
      Next
      Application.ScreenUpdating = True
End Sub
[/vba]


Сообщение отредактировал Karataev - Понедельник, 19.01.2015, 17:02
 
Ответить
Сообщениеисправил ошибку
[vba]
Код
Sub Вариант2()
      Dim myShape As Shape
      Dim r As Long, i As Long
      Application.ScreenUpdating = False
      For r = 1500 To 10 Step -1
          If Cells(r, "S").Value = 0 Then
              For i = ActiveSheet.Shapes.Count To 1 Step -1
                  Set myShape = ActiveSheet.Shapes(i)
                  If myShape.Type = msoFormControl Then
                      If myShape.FormControlType = xlCheckBox Then
                          If myShape.TopLeftCell.Row = r Then
                    myShape.Delete
                          End If
                      End If
                  End If
              Next
              Rows(r).Delete
          End If
      Next
      Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Karataev
Дата добавления - 19.01.2015 в 16:40
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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