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

Вход

Регистрация

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

 

= Мир MS Excel/Множественное поле - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Множественное поле
Мур Дата: Воскресенье, 29.07.2012, 15:42 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Приветствую участников форума!
Вопрос состоит в следующем:
Возможно ли организовать ввод в ячейку (F2) значения из выпадающего списка так,
чтобы предыдущее значение не удалялось? Если возможно, то как?
К сообщению приложен файл: 1626976.xls (24.0 Kb)
 
Ответить
СообщениеПриветствую участников форума!
Вопрос состоит в следующем:
Возможно ли организовать ввод в ячейку (F2) значения из выпадающего списка так,
чтобы предыдущее значение не удалялось? Если возможно, то как?

Автор - Мур
Дата добавления - 29.07.2012 в 15:42
Serge_007 Дата: Воскресенье, 29.07.2012, 15:54 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Напрямую - нет
Может макрописатели предложат вариант с запоминанием предыдущего значения ячейки и добавления его к выбираемому?..


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеНапрямую - нет
Может макрописатели предложат вариант с запоминанием предыдущего значения ячейки и добавления его к выбираемому?..

Автор - Serge_007
Дата добавления - 29.07.2012 в 15:54
Мур Дата: Воскресенье, 29.07.2012, 15:59 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Может есть способ?
Свойство какое-нибудь задать или другим путем?
Выпадыющий список из возможных комбинаций не подходит.
 
Ответить
СообщениеМожет есть способ?
Свойство какое-нибудь задать или другим путем?
Выпадыющий список из возможных комбинаций не подходит.

Автор - Мур
Дата добавления - 29.07.2012 в 15:59
Саня Дата: Воскресенье, 29.07.2012, 16:51 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
правой кнопкой по ярлыку листа "Лист1" - Исходный текст.
Туда это:
[vba]
Code
Option Explicit
Private vCurr As Variant

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$F$2" Then
         Application.EnableEvents = False
         Target.Value = vCurr & " " & Target.Value
         Application.EnableEvents = True
         vCurr = Target.Value
     End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Target.Address = "$F$2" Then
         vCurr = Target.Value
     End If
End Sub
[/vba]

ps
если не сработает, включи макросы smile
 
Ответить
Сообщениеправой кнопкой по ярлыку листа "Лист1" - Исходный текст.
Туда это:
[vba]
Code
Option Explicit
Private vCurr As Variant

Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$F$2" Then
         Application.EnableEvents = False
         Target.Value = vCurr & " " & Target.Value
         Application.EnableEvents = True
         vCurr = Target.Value
     End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Target.Address = "$F$2" Then
         vCurr = Target.Value
     End If
End Sub
[/vba]

ps
если не сработает, включи макросы smile

Автор - Саня
Дата добавления - 29.07.2012 в 16:51
kim Дата: Воскресенье, 29.07.2012, 16:51 | Сообщение № 5
Группа: Друзья
Ранг: Обитатель
Сообщений: 371
Репутация: 160 ±
Замечаний: 0% ±

Excel 2010
Вопрос:
Для чего это нужно?
Человек иногда склонен к созданию для самого себя трудностей, чтобы в последствии их героически преодолевать.
Здесь не тот же случай?


Сцяна - гэта тая ж прыступка. Проста трэба дарасьці да яе.
 
Ответить
СообщениеВопрос:
Для чего это нужно?
Человек иногда склонен к созданию для самого себя трудностей, чтобы в последствии их героически преодолевать.
Здесь не тот же случай?

Автор - kim
Дата добавления - 29.07.2012 в 16:51
Serge_007 Дата: Воскресенье, 29.07.2012, 16:57 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Саня)
As Variant

Саш, это можно не объявлять?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Саня)
As Variant

Саш, это можно не объявлять?

Автор - Serge_007
Дата добавления - 29.07.2012 в 16:57
Саня Дата: Воскресенье, 29.07.2012, 17:04 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
можно
 
Ответить
Сообщениеможно

Автор - Саня
Дата добавления - 29.07.2012 в 17:04
Мур Дата: Воскресенье, 29.07.2012, 23:00 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Уважаемый kim,
Не тот же случай!
Попытаюсь объяснить. Есть система взаимосявзанных таблиц, часть которых составляет несколько баз данных.
Переделывать их очень затратно по времени.
При их проектировании не были учтены все необходимые для занесения типы и виды данных. Если обычными средствами добавлять в таблицу столбцы под данные (причем добавлять необходимо в определенном месте), все остальное слетает.
Я вижу выход в организации множественного поля, как в некоторых СУБД.
Если подскажете другое решение, буду благодарен.
Вариант Сани, еще на разбирал.
 
Ответить
СообщениеУважаемый kim,
Не тот же случай!
Попытаюсь объяснить. Есть система взаимосявзанных таблиц, часть которых составляет несколько баз данных.
Переделывать их очень затратно по времени.
При их проектировании не были учтены все необходимые для занесения типы и виды данных. Если обычными средствами добавлять в таблицу столбцы под данные (причем добавлять необходимо в определенном месте), все остальное слетает.
Я вижу выход в организации множественного поля, как в некоторых СУБД.
Если подскажете другое решение, буду благодарен.
Вариант Сани, еще на разбирал.

Автор - Мур
Дата добавления - 29.07.2012 в 23:00
Мур Дата: Воскресенье, 29.07.2012, 23:11 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Уважаемый Саня,
Ваш вариант решения работает как часы. Большое спасибо.
Прошу Вас добавить пару комментов (для чайника), как ,например, задать эти свойства всему столбцу F?
Уважаемый Serge_007, Вам тот же вопрос, плюс, почему можно не объявлять As Variant?
Заранее благодарен за ответы.
 
Ответить
СообщениеУважаемый Саня,
Ваш вариант решения работает как часы. Большое спасибо.
Прошу Вас добавить пару комментов (для чайника), как ,например, задать эти свойства всему столбцу F?
Уважаемый Serge_007, Вам тот же вопрос, плюс, почему можно не объявлять As Variant?
Заранее благодарен за ответы.

Автор - Мур
Дата добавления - 29.07.2012 в 23:11
Саня Дата: Воскресенье, 29.07.2012, 23:46 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
в обеих процедурах замени строчку
[vba]
Code
If Target.Address = "$F$2" Then
[/vba]

на

[vba]
Code
If Target.column= 6 Then
[/vba]

ты заметил побочные явления?
отдельную ячейку нельзя очистить cool
 
Ответить
Сообщениев обеих процедурах замени строчку
[vba]
Code
If Target.Address = "$F$2" Then
[/vba]

на

[vba]
Code
If Target.column= 6 Then
[/vba]

ты заметил побочные явления?
отдельную ячейку нельзя очистить cool

Автор - Саня
Дата добавления - 29.07.2012 в 23:46
Мур Дата: Понедельник, 30.07.2012, 00:01 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Спасибо!
А я-то по не разумности пытался менять на If Target.column= F Then

Побочный эффект только сейчас заметил.
 
Ответить
СообщениеСпасибо!
А я-то по не разумности пытался менять на If Target.column= F Then

Побочный эффект только сейчас заметил.

Автор - Мур
Дата добавления - 30.07.2012 в 00:01
Мур Дата: Понедельник, 30.07.2012, 00:12 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Действительно неприятность. Как же быть если надо будет подредактировать?
Нет,.... можно, конечно, удалить исходный код, внести изменения в ячейку, а потом опять вставить исходный код, но это как-то неправльно что ли.
 
Ответить
СообщениеДействительно неприятность. Как же быть если надо будет подредактировать?
Нет,.... можно, конечно, удалить исходный код, внести изменения в ячейку, а потом опять вставить исходный код, но это как-то неправльно что ли.

Автор - Мур
Дата добавления - 30.07.2012 в 00:12
Саня Дата: Понедельник, 30.07.2012, 00:34 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
в начало процедуры Worksheet_Change вставь:
[vba]
Code
if len(target.value)=0 then
    vcurr=0
    exit sub
end if
[/vba]
 
Ответить
Сообщениев начало процедуры Worksheet_Change вставь:
[vba]
Code
if len(target.value)=0 then
    vcurr=0
    exit sub
end if
[/vba]

Автор - Саня
Дата добавления - 30.07.2012 в 00:34
Мур Дата: Понедельник, 30.07.2012, 00:39 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Заработало!
Благодарю еще раз!
Может на досуге объясните как?
А то чувствую себя пнем.
 
Ответить
СообщениеЗаработало!
Благодарю еще раз!
Может на досуге объясните как?
А то чувствую себя пнем.

Автор - Мур
Дата добавления - 30.07.2012 в 00:39
vikttur Дата: Понедельник, 30.07.2012, 02:57 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Excel тоже похожее умеет. Без помощи VBA smile
К сообщению приложен файл: 255.xls (33.5 Kb)


Сообщение отредактировал vikttur - Понедельник, 30.07.2012, 03:00
 
Ответить
СообщениеExcel тоже похожее умеет. Без помощи VBA smile

Автор - vikttur
Дата добавления - 30.07.2012 в 02:57
vikttur Дата: Понедельник, 30.07.2012, 09:04 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Множественное_поле.V120730.2
Утро вечера мудренее.
К сообщению приложен файл: 256.xls (28.5 Kb)
 
Ответить
СообщениеМножественное_поле.V120730.2
Утро вечера мудренее.

Автор - vikttur
Дата добавления - 30.07.2012 в 09:04
Саня Дата: Понедельник, 30.07.2012, 11:09 | Сообщение № 17
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Quote (Мур)
Может на досуге объясните как?

не понял, особенно вопросительное слово smile

объясню свой код
[vba]
Code
Option Explicit
' т.к. идет речь о конкатенации, то это строковая переменная
Private sCurr As String   ' переменная нужна для хранения значения ячейки ПЕРЕД изменением (запись осуществляется обеими процедурами)

Private Sub Worksheet_Change(ByVal Target As Range)   ' это событие происходит при изменениях в ячейках (непосредственно ПОСЛЕ), таргет - тот самый потерпевший
      If Target.Count > 1 Then Exit Sub   ' изменяется за раз ОДНА ячейка
        
      If Len(Target.Value) = 0 Then   ' эта строка означает, что после изменения ячейки длина ее содержимого стала равна 0, т.е. ее того... Delete
          sCurr = ""                  ' соответственно очищаем переменную
          Exit Sub
      End If

      If Target.Column = 6 Then
          sCurr = sCurr & " " & Target.Value  ' прицепляем НОВОЕ значение в ячейке к ТЕКУЩЕМУ
          Stop                    ' посмотри на ячейку, потом удали эту строку
          Application.EnableEvents = False    ' вырубаем события, ибо след. строка вызовет этот же обработчик (бесконечн. цикл)
          Target.Value = sCurr
          Application.EnableEvents = True
      End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)  ' отслеживается хождение по ячейкам, попробуй закомментировать этот обработчик, посмотри, что выйдет
      If Target.Column = 6 Then
          sCurr = CStr(Target.Value)
      End If
End Sub
[/vba]
 
Ответить
Сообщение
Quote (Мур)
Может на досуге объясните как?

не понял, особенно вопросительное слово smile

объясню свой код
[vba]
Code
Option Explicit
' т.к. идет речь о конкатенации, то это строковая переменная
Private sCurr As String   ' переменная нужна для хранения значения ячейки ПЕРЕД изменением (запись осуществляется обеими процедурами)

Private Sub Worksheet_Change(ByVal Target As Range)   ' это событие происходит при изменениях в ячейках (непосредственно ПОСЛЕ), таргет - тот самый потерпевший
      If Target.Count > 1 Then Exit Sub   ' изменяется за раз ОДНА ячейка
        
      If Len(Target.Value) = 0 Then   ' эта строка означает, что после изменения ячейки длина ее содержимого стала равна 0, т.е. ее того... Delete
          sCurr = ""                  ' соответственно очищаем переменную
          Exit Sub
      End If

      If Target.Column = 6 Then
          sCurr = sCurr & " " & Target.Value  ' прицепляем НОВОЕ значение в ячейке к ТЕКУЩЕМУ
          Stop                    ' посмотри на ячейку, потом удали эту строку
          Application.EnableEvents = False    ' вырубаем события, ибо след. строка вызовет этот же обработчик (бесконечн. цикл)
          Target.Value = sCurr
          Application.EnableEvents = True
      End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)  ' отслеживается хождение по ячейкам, попробуй закомментировать этот обработчик, посмотри, что выйдет
      If Target.Column = 6 Then
          sCurr = CStr(Target.Value)
      End If
End Sub
[/vba]

Автор - Саня
Дата добавления - 30.07.2012 в 11:09
Мур Дата: Понедельник, 30.07.2012, 12:39 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

Спасибо за разъяснения!
Не все ясно, конечно(не хватает знаний), но в общих чертах принцип понятен.
Насчет

Вы мои познания явно переоцениваете.
 
Ответить
СообщениеСпасибо за разъяснения!
Не все ясно, конечно(не хватает знаний), но в общих чертах принцип понятен.
Насчет

Вы мои познания явно переоцениваете.

Автор - Мур
Дата добавления - 30.07.2012 в 12:39
Мур Дата: Понедельник, 30.07.2012, 12:42 | Сообщение № 19
Группа: Проверенные
Ранг: Обитатель
Сообщений: 436
Репутация: 19 ±
Замечаний: 0% ±

vikttur,
Спасибо, Ваш вариант не смотрел, разберу позже.
Хотя Саня уже решил мою проблему.
 
Ответить
Сообщениеvikttur,
Спасибо, Ваш вариант не смотрел, разберу позже.
Хотя Саня уже решил мою проблему.

Автор - Мур
Дата добавления - 30.07.2012 в 12:42
Serge_007 Дата: Понедельник, 30.07.2012, 13:17 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Мур)
закомментировать обработчик

Поставить ' перед ним.

Всё что в коде выделено зелёным - это комментарии

Quote (Мур)
почему можно не объявлять As Variant?

Потому что если тип переменной не объявлен, то ей и так присваивается тип Variant


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Мур)
закомментировать обработчик

Поставить ' перед ним.

Всё что в коде выделено зелёным - это комментарии

Quote (Мур)
почему можно не объявлять As Variant?

Потому что если тип переменной не объявлен, то ей и так присваивается тип Variant

Автор - Serge_007
Дата добавления - 30.07.2012 в 13:17
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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