Exel реакция на введенное значение

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Gooroong Zaghurngh
Сообщения: 1
Зарегистрирован: 25 ноя 2004, 17:21

есть столбец, назовем его "А" и некие значения M, N и K. Переменные M, N и K числового типа, а массив А - строкового.

Задача:

При вводе в массив "А" слова "Один" и, если переменная "М" > 0, то значение "М" преобразуется по формуле "М=М-(число)" , при вводе слова "Два" метоморфозы происходят с другой переменной и т.д.

Условия:

Число переменных непостоянно и, если требуется сформировать список значений массива "А", вбивать список в "третьем" окне - некатит, хотя терпимо.

"Реакция" должна происходить сразу после ввода значения. В дальнейшем эта строка из рассмотрения изымается.

Значение M, N и K исправляемое, т.е. например "М=100", я понимаю, что мне надо увеличить "М" на 50 и переписываю значение "М" на 150.. или

можно предложить как вариант использовать "соседний столбец" для добавления. Т.е. добавляю в соседнем столбце "50", значение "М" увеличивается до 150 а введенное число 50 исчезает.


----------

мне кажется он много хочет от банального экселя :-)

----------

заранее спасибо за помощь
---
wbr GZ
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Если я Вас правильно понял, то это событие листа сможет Вам помочь. Расположить необходимо в модуле того листа, где Вы предполагаете заменять при вводе данные.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

On Error Resume Next

iRow = Target.Row
iClm = Target.Column
iData = Target.Value

If IsArray(Target.Value) = True Then Exit Sub

If iClm = 1 And iRow < 11 Then

Select Case iData
Case "Один"
iData = Range("B1:B10").Item(1)
Case "Два"
iData = Range("B1:B10").Item(2)
Case "Три"
iData = Range("B1:B10").Item(3)
Case "Четыре"
iData = Range("B1:B10").Item(4)
Case "Пять"
iData = Range("B1:B10").Item(5)
'
Rem И так далее
'
End Select

If IsNumeric(iData) = True Then
If iData > 0 Then
iData = iData - 13 ' число ?
Else
Exit Sub
End If
End If

Application.EnableEvents = False

Application.Undo

Target.Value = iData

Application.EnableEvents = True

End If

End Sub

Примечание :
- вводить текст нужно только в диапазоне "A1:A10"
- в диапазоне "B1:B10" должны находиться значения переменных M N ...
- Один соответствует ячейке "B1"
- Два соответствует "B2" и т.д.
- При желании код можно увеличить (это только "набросок")
Ответить