У меня есть Excel
Лист 1
Лист 2
![Sheet2](https://i.paste.pics/80f4230bf6819a80ed36e1b6415ece08.png)
Значение листа 1 => F5 => '50' => указано на листе 2 => E4 => '50'
Когда я ввожу значение в лист 1 вместо F5 => Значение получает Изменение в Листе 2 => E4 => Автоматически
с использованием приведенного ниже кода. ДАННЫЕ ПЕЧАТАНЫ много раз. Мой код
модуль: mac
Dim ws As Worksheet
Dim rDest As Range
Dim lCount As Long
Dim sValue As String
Set ws = ThisWorkbook.Sheets("Sheet2")
Set rDest = ws.Range("I2")
With ws.Range(rDest, ws.Cells(ws.Rows.Count, rDest.Column).End(xlUp))
If .Row >= rDest.Row Then .ClearContents
End With
lCount = Val(ws.Range("E4").Value)
sValue = ws.Range("E8").Value
If lCount > 0 Then rDest.Resize(lCount) = sValue
End Sub
Лист 1 Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Sheets("Sheet1").Range("F5"), Target) Is Nothing Then
Call mac
End If
End Sub
Это выход
Как показано ниже:
https://paste.pics/494c856d2908a83ca031ee20bb706a09
Мой код выше работает отлично в соответствии с вышеупомянутым выводом, но как некоторые недостатки в нем
Предположим,
Условие 1:
если введенное значение равно «50» =>, то данные в столбцах «I» и «J» будут напечатаны 50 раз => вправо [Perfect]
Условие 2:
, если введено значение '60' =>, то данные в Coulmn "I" и "J" получатдобавляет к предыдущим данным, которые как "50" => 50 + 10 => 60 => это правильно [отлично]
Условие 3:
Предположим,Столбец «I: J» уже как DATA => до диапазона «60», если введенное значение меньше, чем «60», как «30», тогда обновление должно произойти только 30 раз в столбце «I: J». Данные должны быть напечатаныНо ничего не происходит, добавление не происходит, но очистка данных не происходит, если диапазон меньше, чем старое значение
Там может быть какой-то механизм, такой как
, если Count равен 50 =>print => I, J
, если Count больше 50 => добавить I, J
, если Count меньше 50 => очистить столбец I, J и затем => заполнить столбецЯ, J
Как мне добиться этого механизма?