Как увеличить число в столбце на единицу с помощью переменной? - PullRequest
0 голосов
/ 07 мая 2019

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

В данный момент код переходит в конец страницы и работает до тех пор, пока не найдет последнюю написанную строку.Он читает эту ссылку и добавляет к ней 1.

Я думал, что это решит проблему, но на самом деле он создал другую.

Теперь это означает, что если последняя строка будет удалена или размещена на другом листе, код создаст дубликат этой ссылки.

Например, если у меня был лист с 45 строками, с ссылками от 10001 до 10045, а затем я переместил ряд 10045 на другой лист.В следующий раз, когда я выполню код, у меня будет второе 10045.

Можно ли как-нибудь преобразовать этот код в переменную, которая останется на том же уровне, независимо от того, какие числа были удалены?

Смотрите код, который я использовал ниже.

BlankRow = Range("B1000").End(xlUp).Row + 1
Cells(BlankRow, 2).Select
ActiveCell.Value = Selection.Offset(-1, 0) + 1

РЕДАКТИРОВАТЬ: Чтобы сделать его более понятным.Перемещение данных происходит в другую электронную таблицу в той же книге.Я не перевожу в другую рабочую книгу полностью

Информация взята из другой электронной таблицы, которая является базовым макетом формы.Нажмите кнопку, и она отформатирована здесь.

Это то, где ссылки приходят в (B).В настоящее время он добавляет один каждый раз.Однако, если одно задание завершено, весь ряд данных перемещается по делу на другой лист - представьте его как прославленный список дел.enter image description here

Однако, если задание нижнего ряда (10058) перемещается на другой лист, возникает проблема.Когда новый набор данных будет добавлен в приведенный выше код, вы увидите, какая последняя строка пронумерована и добавите одну.(Это будет 10057 и добавить один, таким образом снова получая 10058).Как мне избежать этого?

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

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

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

Например, добавьте лист с именем "Config", скройте его и используйте следующий код:

'increase value in config
ThisWorkbook.Worksheets("Config").Range("A1").Value = ThisWorkbook.Worksheets("Config").Range("A1").Value + 1
'use the config value in your sheet
With ThisWorkbook.Worksheets("YourActualSheet")
    .Cells(.Rows.Count, 2).End(xlUp).Offset(1) = ThisWorkbook.Worksheets("Config").Range("A1").Value
End With

Таким образом, последнее использованное значение всегда находится в Worksheets("Config").Range("A1"), независимо от того, удалили ли вы или переместили значение из фактического листа, оно увеличит значение, сохраненное в Worksheets("Config").Range("A1") при следующем запуске кода.

0 голосов
/ 07 мая 2019

Ваш код можно возобновить на этом:

With ThisWorkbook.Sheets("NameOfTheSheet")
    .Cells(.Rows.Count, 2).End(xlUp).Offset(1) = .Cells(.Rows.Count, 2).End(xlUp) + 1
End With

Также вам следует поискать ссылки на рабочие книги / рабочие таблицы и использовать эти ссылки, чтобы избежать проблем и использования .Select .Activate

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