Witam,
[ Generalnie skrypt działa prawie poprawnie, ale: ]
Wartości w komórkach A1 i B1 się zmieniają - wpisujemy
np. w komórkę B1 dowolną wartość i ENTER i wtedy skrypt działa.
Ale w przypadku pobierania danych z Internetu (dane zewnętrzne)
skrypt nie działa mimo, że w komórce np. B1 pojawiają się wartości
większe niż 18 (wartość progowa).
Czy można skrypt zmodyfikować, aby monitorował dane w komórkach
(ale bez uderzenia w ENTER)?
-------------------------------------------------------------
-------------------------------------------------------------
Mam prośbę, aby skorygować skrypt - poniżej opisuję jak to działa
(skrypt jest w "Visual Basic" - w załączniku plik przykładowy):
[SYNTAX]Private Sub Worksheet_Change(ByVal Target As Range)
Dim wiersz As Long, kolumna As Long
If Not Intersect(Target, Range("A1:B4")) Is Nothing Then
wiersz = Target.Row
kolumna = Target.Column
If Range("F" & wiersz) = "-" Then
If kolumna = 2 And Range("B" & wiersz) >= Range("K1") Then
Range("F" & wiersz) = Range("B" & wiersz)
End If
ElseIf Range("E" & wiersz) = "-" Then
If kolumna = 1 And Range("A" & wiersz) <= Range("J1") Then
Range("E" & wiersz) = Range("A" & wiersz)
End If
End If
End If
End Sub[/SYNTAX]
[ Objaśnienia ]
W komórkach A1:A4 oraz B1:B4 zmieniają się wartości liczbowe.
Założenie jest takie, że monitorujemy komórki B1:B4 do momentu
gdy wartość liczbowa będzie równa lub większa od liczby wpisanej
w komórkę "K1" (wartość progowa).
(Wartość progową sami wpisujemy - jest to zmienna.)
Wtedy liczba "18" (jak w przykładzie) ląduje w komórce
w kolumnie "F" (przerywamy monitorowanie danej komórki)
- od tej chwili monitorujemy odpowiednią komórkę w kolumnie "A"
Jeśli wartość będzie równa lub mniejsza od liczby wpisanej
w komórce "J1", wtedy liczba "3" (jak w przykładzie) ląduje
w komórce w kolumnie "E" (przerywamy monitorowanie komórki
z kolumny "A")
[ Dodatkowe objaśnienia ]
1) wartość progowa J1=3, K1=18
2) w komórce A1 jest wartość 1, a w komórce B1 jest wartość 5
(w obu komórkach cały czas zmieniają się liczby)
3) my skupiamy się na komórce B1 - jeśli wpadnie tam wartość
równa lub większa od 18, to w komórce F1 pojawia się ta wartość.
Dopiero wtedy ma być śledzona komórka A1.
(Dodam tylko, że w komórce A1 może już być wartość 3,
ale nie ma ona dla nas znaczenia, ponieważ w komórce A1
musi pojawić się nowa wartość - oczywiście może
to być np. wartość 3).
4) Gdy wartość w komórce A1 będzie równa lub mniejsza od 3,
to wtedy w komórce E1 pojawi się ta wartość.
5) od momentu, gdy komórki F1 i E1 są wypełnione liczbami 18 i 3,
skrypt przestaje śledzić obie komórki (A1 i B1).
Proszę o korektę skryptu.
Z góry dziękuję. Jan
[ Generalnie skrypt działa prawie poprawnie, ale: ]
Wartości w komórkach A1 i B1 się zmieniają - wpisujemy
np. w komórkę B1 dowolną wartość i ENTER i wtedy skrypt działa.
Ale w przypadku pobierania danych z Internetu (dane zewnętrzne)
skrypt nie działa mimo, że w komórce np. B1 pojawiają się wartości
większe niż 18 (wartość progowa).
Czy można skrypt zmodyfikować, aby monitorował dane w komórkach
(ale bez uderzenia w ENTER)?
-------------------------------------------------------------
-------------------------------------------------------------
Mam prośbę, aby skorygować skrypt - poniżej opisuję jak to działa
(skrypt jest w "Visual Basic" - w załączniku plik przykładowy):
[SYNTAX]Private Sub Worksheet_Change(ByVal Target As Range)
Dim wiersz As Long, kolumna As Long
If Not Intersect(Target, Range("A1:B4")) Is Nothing Then
wiersz = Target.Row
kolumna = Target.Column
If Range("F" & wiersz) = "-" Then
If kolumna = 2 And Range("B" & wiersz) >= Range("K1") Then
Range("F" & wiersz) = Range("B" & wiersz)
End If
ElseIf Range("E" & wiersz) = "-" Then
If kolumna = 1 And Range("A" & wiersz) <= Range("J1") Then
Range("E" & wiersz) = Range("A" & wiersz)
End If
End If
End If
End Sub[/SYNTAX]
[ Objaśnienia ]
W komórkach A1:A4 oraz B1:B4 zmieniają się wartości liczbowe.
Założenie jest takie, że monitorujemy komórki B1:B4 do momentu
gdy wartość liczbowa będzie równa lub większa od liczby wpisanej
w komórkę "K1" (wartość progowa).
(Wartość progową sami wpisujemy - jest to zmienna.)
Wtedy liczba "18" (jak w przykładzie) ląduje w komórce
w kolumnie "F" (przerywamy monitorowanie danej komórki)
- od tej chwili monitorujemy odpowiednią komórkę w kolumnie "A"
Jeśli wartość będzie równa lub mniejsza od liczby wpisanej
w komórce "J1", wtedy liczba "3" (jak w przykładzie) ląduje
w komórce w kolumnie "E" (przerywamy monitorowanie komórki
z kolumny "A")
[ Dodatkowe objaśnienia ]
1) wartość progowa J1=3, K1=18
2) w komórce A1 jest wartość 1, a w komórce B1 jest wartość 5
(w obu komórkach cały czas zmieniają się liczby)
3) my skupiamy się na komórce B1 - jeśli wpadnie tam wartość
równa lub większa od 18, to w komórce F1 pojawia się ta wartość.
Dopiero wtedy ma być śledzona komórka A1.
(Dodam tylko, że w komórce A1 może już być wartość 3,
ale nie ma ona dla nas znaczenia, ponieważ w komórce A1
musi pojawić się nowa wartość - oczywiście może
to być np. wartość 3).
4) Gdy wartość w komórce A1 będzie równa lub mniejsza od 3,
to wtedy w komórce E1 pojawi się ta wartość.
5) od momentu, gdy komórki F1 i E1 są wypełnione liczbami 18 i 3,
skrypt przestaje śledzić obie komórki (A1 i B1).
Proszę o korektę skryptu.
Z góry dziękuję. Jan