Копирование данных из одной рабочей книги в другую вставляется в случайные ячейки - PullRequest
0 голосов
/ 09 октября 2018

Обновление

Я играл с моим кодом и выяснил, как сделать вставку данных в нужное место во второй раз, но тогда данные вообще не будут вставленыесли вы нажмете кнопку еще раз.Вот обновленный код:

Dim kRow As Long
kRow = ws2.Range("W" & Rows.count).End(xlUp).Row

If ws2.Range("W4").Value = "" Then
ws2.Range("W4").Value = ws1.Range("A4").Value
Else:
kRow = ws2.Range("W" & Rows.count).End(xlUp).Row - 31
ws2.Range("W" & kRow).Offset(1).Value = ws1.Range("A4").Value
End If

Dim lRow As Long
lRow = ws2.Range("V" & Rows.count).End(xlUp).Row

If ws2.Range("V10").Value = "" Then
ws2.Range("V10").Value = ws1.Range("P2").Value
Else:
lRow = ws2.Range("V" & Rows.count).End(xlUp).Row - 31
ws2.Range("V" & lRow).Offset(1).Value = ws1.Range("P2").Value
End If

Dim mRow As Long
mRow = ws2.Range("Y" & Rows.count).End(xlUp).Row

If ws2.Range("Y10").Value = "" Then
ws2.Range("Y10").Value = ws1.Range("K37").Value
Else:
mRow = ws2.Range("Y" & Rows.count).End(xlUp).Row - 28
ws2.Range("Y" & mRow).Offset(1).Value = ws1.Range("K37").Value
End If

Исходное сообщение


У меня возникла эта раздражающая проблема с копированием и вставкой данных из одной рабочей книги в другую.Я пытаюсь скопировать некоторые данные из пользовательской формы в основную рабочую книгу, в которой хранятся все данные.Я настроил его так, что когда пользователь завершит работу с формой, он нажмет кнопку макроса и откроется основная рабочая книга, данные из формы будут вставлены в основную рабочую книгу, а затем закрыты.При следующем заполнении пользовательской формы и нажатии кнопки макроса данные вставляются в следующую доступную строку в главной рабочей книге.Большая часть данных, которые я хочу получить, работает, за исключением 5 частей данных.

При первом нажатии кнопки все нормально.Однако, если я нажму кнопку еще раз, эти пять фрагментов данных не будут вставлены в следующий ряд, как предполагалось, а будут вставлены на 31–28 строк ниже, чем предполагалось.Я пытался все, чтобы исправить это, но я не могу найти проблему.

Я опубликую соответствующий код ниже.Любая помощь будет принята с благодарностью.Спасибо!

Dim kRow As Long
kRow = ws2.Range("W" & Rows.count).End(xlUp).Row

If ws2.Range("W10").Value = "" Then
ws2.Range("W10").Value = ws1.Range("A4").Value
Else: ws2.Range("W" & kRow).Offset(1).Value = ws1.Range("A4").Value
End If

Dim lRow As Long
lRow = ws2.Range("V" & Rows.count).End(xlUp).Row

If ws2.Range("V10").Value = "" Then
'ws2.Range("V10").Value = ws1.Range("P2").Value
Else: ws2.Range("V" & lRow).Offset(1).Value = ws1.Range("P2").Value
End If

Dim mRow As Long
mRow = ws2.Range("Y" & Rows.count).End(xlUp).Row

If ws2.Range("Y10").Value = "" Then
ws2.Range("Y10").Value = ws1.Range("K37").Value
Else: ws2.Range("Y" & mRow).Offset(1).Value = ws1.Range("K37").Value
End If

1 Ответ

0 голосов
/ 09 октября 2018

Вы устанавливаете смещение на 1, то есть оно берет оба измерения диапазона и смещает его на столько.

Если вы хотите, чтобы оно появилось в ряду после последнего ряда, попробуйте ws2.Range("Y" & mRow).Offset(1,0).Value

...