Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 12

Удаление содержимого ячейки, если в другую добавляется такое же содержимое

08.10.2014, 15:35. Показов 1707. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как можно решить такую задачу. В столбце пять ячеек. В первой знак "+". Я добавляю знак "+" в третью ячейку, и в первой знак удаляется. И такое условие для всех пяти ячеек. Т.е. больше одного такого знака ни в одной из них быть не может.

В коде я для наглядности указал вместо удаления заполнение цифрой "1".

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Просто_кнопка_Щелчок()
 
Dim i
    
    
    For i = 4 To 8
    For k = 4 To 8
    
       
        If Cells(i, 3).Value = "+" Then
            Cells(i-1, 3).Value="1"
            Cells(i+1, 3).Value="1"
 
            
   End If
        
    Next k
    Next i
    
    
    
End Sub
К кнопке привязывать я не буду, просто тестировал с ее помощью разные варианты кода. В общем я не могу продолжить цикл. Я не знаю, как указать ему другие ячейки корректно. Подскажите, пожалуйста как заполнить все оставшиеся ячейки единицами "1" при добавлении в одну из них "+"?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2014, 15:35
Ответы с готовыми решениями:

Скопировать часть содержимого ячейки в другую
Здравствуйте. Подскажите можно ли как-то решить такую задачу. Есть столбец с данными вида: ('size' Merchant: '10.5 3E US' / Amazon:...

Осуществить деление содержимого регистра на содержимое ячейки памяти
Осуществить деление содержимого регистра DX=5643 на содержимое ячейки памяти. Занести значение 7А9F в ячейку памяти BX=C5AE, DI=A5F6,...

StringGrid: отнять от содержимого текущей ячейки содержимое предыдущей
Есть диплом с использованием StringGrid до сегодня я его норм писал но тут стала перед мной задача как в StringGrid отминусовать предыдущий...

6
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
08.10.2014, 15:58
Если нужна не кнопка, а "автоматизация" процесса, то расположите весь нижеопубликованный код в модуле нужного рабочего листа.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim iSource As Range, iCell As Range, iText As Variant
    Set iSource = Intersect(Target, [C3:C8])
    
    If Not iSource Is Nothing Then
       Application.EnableEvents = False
       For Each iCell In iSource
           If Application.CountIf([C3:C8], iCell) > 1 Then
              iText = iCell.Value '+"
              [C3:C8].Replace CStr(iText), "", xlWhole 'iText, "1", xlWhole
              iCell.Value = iText '"+"
           End If
       Next
       Application.EnableEvents = True
    End If
End Sub
P.S. Если "+" и "-" это реальная задача, то от проверки, конечно же, нужно отказаться
0
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 12
08.10.2014, 16:20  [ТС]
Спасибо за ответ. Но код ваш почему-то не работает. Плюсы не удаляются ни в одной из ячеек.

Добавлено через 3 минуты
"P.S. Если "+" и "-" это реальная задача, то от проверки, конечно же, нужно отказаться" - что это значит, от какой проверки нужно отказаться?
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
08.10.2014, 16:32
Лучший ответ Сообщение было отмечено Hardmemory как решение

Решение

От второй, конечно же но если что, пример прилагается
Вложения
Тип файла: zip Sample_for_Hardmemory.zip (6.5 Кб, 8 просмотров)
1
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 12
08.10.2014, 17:21  [ТС]
Вот это действительно здорово!!!! Просто суперрр! Спасибо огромное. И еще один дополнительный вопрос, может подскажете. Вместо плюса должен быть знак точки. Это не простая точка, а точка располагающаяся по середине ячейки, я ее вставлял через Вставка, Символы. Можно ли ее как-то вставить в код? Так то во вставке у нее есть свой адрес, но как это сделать. Это не так важно, просто последний штрих. И все равно еще раз от меня огромнейшая благодарность!!!

Добавлено через 10 минут
Тут надо более подробно написать, а то нелепица какая-то получилась. В общем как я вставляю эти точки (плюсы). Я создал выпадающий список из двух содержимых: знака точки и пустоты. И просто мышкой выбираю из этого списка то, что мне нужно. Выбрал точку в какой-то ячейке, точка в другой ячейке пропала.

Добавлено через 4 минуты
И еще один вопрос, если несколько столбцов? Все они независимы друг от друга. Т.е. в каждом по точке, только по одной, как и было указано в условии задачи. Мне просто этот код переписать, скажем пять раз - пять столбцов и изменить диапазон ячеек? Или это можно в одном коде как-то сделать упростить?

Добавлено через 24 минуты
Все, как вставить точку я разобрался, я в ваш код добавил "Chr(150)". Остался вопрос только с независимыми столбцами, можно ли их как-то в ваш код добавить, чтобы не писать его отдельно для каждого.
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
08.10.2014, 17:25
Если копирование и вставка символа не помогают, то можно посмотреть в сторону VB(A) функции ChrW(). А если код этой "точки" Вам неизвестен, то узнать его можно с помощью функции AscW()

А по поводу пяти столбцов, изреку следующее - если Вы принципиально не меняете данные сразу нескольких ячеек (ввод/копирование), то от перебора ячеек можно отказаться, т.е.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim iText As Variant
    
    If Not Intersect(Target, [C3:G8]) Is Nothing Then
       Application.EnableEvents = False
       iText = Target.Value '+"
       Intersect(Target.EntireColumn, [3:8]).Replace CStr(iText), "", xlWhole 'iText, "1", xlWhole
       Target.Value = iText '"+"
       Application.EnableEvents = True
    End If
End Sub
1
0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 12
08.10.2014, 17:49  [ТС]
Огромное спасибо, вы мне очень помогли.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2014, 17:49
Помогаю со студенческими работами здесь

Удаление содержимого ячейки в БД
Доброго времени суток! Подскажите возможно ли удаление содержимого ячейки из таблицы БД Access? Как удалить строку я знаю, а вот...

Если вводимый символ цифра, он добавляется в одну строку, иначе в другую
Уважаеммые товарищи есть вот такая задача: В цикле вводятся символы (ввод продолжается до набора точки - "."). Если вводимый...

Скопировать/переместить содержимое одной выделенной ячейки в другую
как скопировать/переместить содержимое выделенной ячейки в другую выделенную ячейку тоесть сначала выделил что нужно перетаскивать затем...

Есть ли такое событие DataGridView, которое возникает при изменении ВИДИМОГО содержимого ячейки?
Из названия ясно, что CellValueChanged не канает; событие должно происходить при каждом нажатии символа и не нужно торопиться отсылать меня...

Удаление содержимого части ячейки таблицы в Word 2003
Уважаемые знатоки, очень требуется помощь. Имеем документ MS Word 2003 (*.rtf, *.doc), в документе таблица. В ячейках таблицы требуется ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru