Excel постоянно меняет данные в отдельной форме листа - PullRequest
0 голосов
/ 13 марта 2012

Я нахожусь в процессе создания некоторых форм, которые я использую каждый день на работе, в Excel. В первой форме я выполняю поиск VBA из внешней базы данных и в зависимости от выбранного элемента, который пользователь выбирает из раскрывающегося списка, заполняет необходимую информацию в ячейке, содержащей формулу поиска VBA. Все это прекрасно работает, но одна вещь, которую мы должны сделать при оформлении заказа с помощью формы, это то, что мы должны отслеживать эти покупки в другой форме. Я также создал вторую форму, и она заполняет всю информацию из формы заказа в соответствующие ячейки формы отслеживания. Проблема, с которой я сталкиваюсь, заключается в том, что при изменении информации в ссылочных ячейках формы заказа информация изменяется в форме отслеживания, заменяя информацию о 1-м заказах информацией о следующих заказах. Я исследовал (но безрезультатно), как сохранить информацию о предыдущих заказах на контрольном листе, даже если форма заказа очищена для ввода другого заказа. При введении информации о вторых заказах вместо стирания информации о предыдущих заказах на листе отслеживания я хочу, чтобы информация вписывалась в форму заказа для второго заказа, начиная со следующего доступного столбца в соответствующих ссылках на ячейки.

Это одна проблема, другая - это. В формах отслеживания заказов есть определенное количество столбцов, которые можно вставить в эту информацию, прежде чем она попадет в конец формы. Как заставить его запустить другую форму отслеживания и продолжить отслеживание заказов в первом доступном столбце и еще раз при переходе к нижней части запустить другую форму?

Я знаю, что это было много информации, и я надеюсь, что объяснил это достаточно хорошо, чтобы вы поняли. Я был недавно привлечен к использованию макросов, но я все еще NOOB, когда дело доходит до них. Если использование макросов - это самый эффективный способ сделать то, что мне нужно, и мне нужно использовать один, два или три для выполнения этой задачи, не могли бы вы предоставить мне код для каждого из них? Еще раз спасибо заранее.

     V/R

Логист и любящий это

1 Ответ

0 голосов
/ 13 марта 2012

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

Например, допустим, у вас есть следующая таблица:

        A        B        C        D
    +--------+--------+--------+--------+
  1 |     42 |  =$a$1 |        |        |
    +--------+--------+--------+--------+

и следующий код:

Sub Macro1()
    Range("a1").Value = 42                 ' ensure source data as expected'

    Range("c1").Value = Range("b1").Value  ' copy value '

    Range("b1").Copy                       ' copy formula '
    Range("d1").PasteSpecial

    Range("a1").Value = 0                  ' change source data '
End Sub

Когда вы запускаете этот код, c1 получает текущее значение a1, равное 42. Однако d1 получает текущую формулу из b1, которая является не относительной ссылкой на a1, поэтому в итоге вы получите:

        A        B        C        D
    +--------+--------+--------+--------+
  1 |     0  |  =$a$1 |     42 |  =$a$1 |
    +--------+--------+--------+--------+

или c1 - единственная ячейка, в которой хранится хронологическая запись (поскольку и b1, и d1 являются ссылками на формулу, они будут отражать изменения, внесенные в исходный источник данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...