0 / 0 / 0
Регистрация: 30.09.2014
Сообщений: 12
1

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

08.10.2014, 15:35. Показов 1492. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2014, 15:35
Ответы с готовыми решениями:

Скопировать часть содержимого ячейки в другую
Здравствуйте. Подскажите можно ли как-то решить такую задачу. Есть столбец с данными вида:...

Осуществить деление содержимого регистра на содержимое ячейки памяти
Осуществить деление содержимого регистра DX=5643 на содержимое ячейки памяти. Занести значение...

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

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

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

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
Спасибо за ответ. Но код ваш почему-то не работает. Плюсы не удаляются ни в одной из ячеек.

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

Решение

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

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

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

Добавлено через 24 минуты
Все, как вставить точку я разобрался, я в ваш код добавил "Chr(150)". Остался вопрос только с независимыми столбцами, можно ли их как-то в ваш код добавить, чтобы не писать его отдельно для каждого.
0
4131 / 2235 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
08.10.2014, 17:25 6
Если копирование и вставка символа не помогают, то можно посмотреть в сторону 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  [ТС] 7
Огромное спасибо, вы мне очень помогли.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2014, 17:49
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru