Таблица Excel - копировать значение ячейки в Calculate [duplicate]

Ниже приведен пример индекса строки

 +---+---+---+---+---+
 | H | e | l | p | A |
 +---+---+---+---+---+
 0   1   2   3   4   5
-5  -4  -3  -2  -1

str="Name string"

примера среза: [начало: конец: шаг]

str[start:end] # items start through end-1
str[start:]    # items start through the rest of the array
str[:end]      # items from the beginning through end-1
str[:]         # a copy of the whole array

Ниже приведен пример использования

print str[0]=N
print str[0:2]=Na
print str[0:7]=Name st
print str[0:7:2]=Nm t
print str[0:-1:2]=Nm ti
5
задан Kenan Fallon 10 July 2012 в 05:30
поделиться

2 ответа

Чтобы зафиксировать изменения по формуле, вы должны использовать событие Worksheet_Calculate().

  1. Создайте новую рабочую книгу.
  2. В ячейке Sheet1 A1, поместите эту формулу =Sheet2!A1+1

Теперь в модуле вставьте этот код

Public PrevVal As Variant

Вставьте это в область кода листа

Private Sub Worksheet_Calculate()
    If Range("A1").Value <> PrevVal Then
        MsgBox "Value Changed"
        PrevVal = Range("A1").Value
    End If
End Sub

И, наконец, в области кода ThisWorkbook вставьте это код

Private Sub Workbook_Open()
    PrevVal = Sheet1.Range("A1").Value
End Sub

Закрыть и сохранить книгу и снова открыть ее. Теперь сделайте любое изменение в ячейке A1 Sheet2. Вы заметите, что вы получите окно сообщения MsgBox "Value Changed"

SNAPSHOTS

enter image description here [/g0]

15
ответ дан Siddharth Rout 26 August 2018 в 01:02
поделиться

Событие workheet_change будет срабатывать только вручную. Я думаю, что лучше всего было бы реализовать это как событие изменения рабочего листа на вашем рабочем листе B, где я предполагаю, что изменения пользовательского ввода происходят.

Есть несколько альтернатив, которые я предлагаю, если это действительно вам не подходит, но я думаю, что это, вероятно, самый лучший вариант.

Изменить: другое предложение для следующих комментариев

Объект ThisWorkbook имеет событие SheetChange, которое будет если все листы в книге изменены. Если вы можете определить диапазоны, где данные будут введены на каждом из листов B, вы можете использовать эти диапазоны, как в вашем исходном коде.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Sh Is Sheets("Worksheet A") Then
        If Intersect(Sh.Range("B1:B5"), Target) Then
            'Call MailAlert as required here
        ElseIf Intersect(Sh.Range("B10:B20"), Target) Then
            'Call MailAlert as required here
        Else ' Etc...
            'Call MailAlert as required here
        End If
    End If
End Sub

Сообщите мне, как это происходит.

0
ответ дан mkingston 26 August 2018 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: