присвойте или скопируйте значения вставки некоторых ячеек sheet1 точным столбцам в sheet2, используя l oop, счетчик которого является значением, введенным в столбец, например: ячейка A1 - PullRequest
0 голосов
/ 27 марта 2020

надеюсь, что кто-то может помочь мне, чтобы этот код, приведенный ниже, работал нормально, потому что я определил диапазон и точно указал значение A1 c как l oop счетчик и начальную точку.

Private Sub Worksheet_Change(ByVal Target As Range)

    If (Range("A1") <> "") And (IsNumeric(Range("A1"))) And (Range("A1") > 0) Then
         Dim X As Integer
         If Not Intersect(Target, Range("A1")) Is Nothing Then
             For X = 1 To Range("A1").Value
                 Sheet4.Range("b" & X).Value = Range("A1").Value
             Next X
             MsgBox "done"
         Else
         End If
     Else
         MsgBox "no numeric"
     End If
End Sub

сейчас

Я хочу расширить этот код выше, чтобы, когда пользователь заполняет лист1 A1 на 5, вставьте значения в 5 ячеек в sheet2, начиная с первой пустой ячейки в sheet2, например: b1: b5 или b10: b15 соответственно. в следующий раз, когда я не знаю, в какую ячейку в листе А1 будет заполнен столбец А, это может быть ячейка А2 'А3'А10'А80 или любая ячейка А, поэтому при его заполнении в следующий раз сделайте то же самое l oop для введенного времени и вставьте или присвойте значения sheet2 b первой пустой ячейке и рядом с l oop count count.

1 Ответ

0 голосов
/ 14 апреля 2020

решение -

Опция Явная частная вложенная рабочая таблица_Change (целевое значение ByVal в качестве диапазона)

Приглушить ключевые ячейки в качестве заданного диапазона KeyCells = Range ("H: H") If (Target.Value < > "") И (IsNumeri c (Target.Value)) И (Target.Value> 0) И ((Target.HasFormula) = False) Тогда

Если не Application.Intersect (KeyCells, Range (Target.Address)) Ничего, тогда затемните X как целочисленные листы ("sheet2"). Активируйте для X = Sheets ("sheet2"). Range ("G100"). End (xlUp) .Row To Sheets ("sheet2") ) .Range ("G100"). End (xlUp) .Row + Target.Value - 1 Sheets ("sheet2"). Range ("B" & X + 1) .Value = Sheets ("sheet1"). Range ( Листы "B" & Target.Row) ("sheet2"). Диапазон ("C" & X + 1). Значение = Sheets ("sheet1"). Диапазон ("C" & Target.Row) листов ("sheet2"). Range ("D" & X + 1) .Value = Sheets ("sheet1"). Range ("D" & Target.Row) Sheets ("sheet2"). Range ("E" & X + 1) .Value = Sheets ("sheet1"). Range ("E" & Target.Row)

Sheets ("sheet2"). Range ("G" & X + 1) .Value = " Введите серийный номер "Next X 'MsgBox Target.Address MsgBox" do ne "& X Else End If Else MsgBox" Неверное значение! Вы должны ввести число больше 0 "End If End Sub

, но теперь как я могу обновить строки в sheet2, если пользователь изменит значение в Range1 Range (" H: H "), мне нужен способ вставить новые строки, если пользователь ввел большее значение, чем первое, которое он ввел, или мне нужен способ удалить дополнительные строки, если пользователь ввел меньшее значение, чем первое, которое он ввел.

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