Dzięki wielkie mireczki, sprawdzę to jak już będę z powrotem przy kompie. Tylko, że trochę nie sprecyzowalem, bo nie chce sprawdzać tego przy uruchomieniu makra, tylko, żeby to działało w tle i msgbox wyskakiwał od razu, jeśli wprowadzona wartość zaczyna się od tego ciągu znaków.
@sartek spoko. Nie jestem ekspertem, ale chyba nie musisz, bo rng to będzie edytowana komórka. Czyli coś w stylu: if left (rng,4) = "1111" then Ale tak na 90 % :P
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target If Left(cell.Value, 4) = "1111" Then cell.Interior.Color = vbRed End If Next cell End Sub Tak bym to widział. For each jest potrzebny na wypadek zmiany więcej niż jednej komórki na raz - inaczej użycie funkcji left() kończy się błędem. No i z tego samego powodu wstawiłem kolorowanie zamiast msgboxa, nie chciałbym się przez to wszystko przeklikiwać
@Mr_NiceGuy @croppz Dzięki ziomeczki raz jeszcze ( ͡°͜ʖ͡°) Więcej niż jedna komórka jednocześnie nie będzie zmieniana, bo to idzie przez walidację danych, i ten szeroki zakres to też trochę na wyrost, więc to akurat nie problem.
@croppz: @Mr_NiceGuy: Kurde, sorry za takię męczenie, ale mam już w tym arkuszy eventy przez worksheetchange, i już wcześniej żebym mógł mieć więcej niż jeden to dodałem Case, i te dwa wcześniejsze działały poprawnie, ale ten już mi nie działa niestety.
Mój kod to:
Private Sub WorksheetChange(ByVal Target As Range)
@Mr_NiceGuy: @Mr_NiceGuy: Mogę w sumie dać Case Else, ale jest ryzyko, że inne komórki też mogą się zaczynać od tych znaków, więc wolałbym ograniczyć zakres.
@sartek możesz to zrobić zwykłą funkcją tablicową i zliczyć ile takich wystąpień jest i np. wyświetlić w danej komórce ;) nie jest do tego potrzebne żadne makro ;)
Próbuję takiego prostego kodu, ale nie działa:
Sub startswith()
If Left(Range("B12:B202").Value, 4) = "1111" Then
MsgBox "Text text", vbInformation,"Title"
End If
#excel #vba
Ze zrobieniem pętli w pythonie to nie miałbym problemu, ale vba to inna sprawa xDDDD
W sensie, że coś takiego?
For Each i In Range("B12:B202")
If Left(i.Value, 4) = "1111" Then
MsgBox "Text text", vbInformation, Title
Next i
for x = 12 to 202
If Left(Range("B"&x),4)="1111" Then
MsgBox "Lubie Budyń"
exit for
end if
next x
Sprawdzenie i podanie w których komórkach jest taka wartość:
For x = 12 To 202
If Left(Range("B" & x), 4) = "1111" Then
mojstring = mojstring & "B" & x & ", "
End If
Next x
mojstring = Left(mojstring, Len(moj
Komentarz usunięty przez autora
Dim i As Range
For Each i In Range("B12:B202")
If Left(i, 4) = "1111" Then
MsgBox "Text text", vbInformation, Title
End If
Next i
@Mr_NiceGuy
@JanKremovski
Dzięki wielkie mireczki, sprawdzę to jak już będę z powrotem przy kompie.
Tylko, że trochę nie sprecyzowalem, bo nie chce sprawdzać tego przy uruchomieniu makra, tylko, żeby to działało w tle i msgbox wyskakiwał od razu, jeśli wprowadzona wartość zaczyna się od tego ciągu znaków.
To już chyba jednak nie przez Sub?
Sub Worksheet.Change(ByVal rng as Range)
if left (rng,4) = "1111" then
Ale tak na 90 % :P
Komentarz usunięty przez autora
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Left(cell.Value, 4) = "1111" Then
cell.Interior.Color = vbRed
End If
Next cell
End Sub
Tak bym to widział. For each jest potrzebny na wypadek zmiany więcej niż jednej komórki na raz - inaczej użycie funkcji left() kończy się błędem. No i z tego samego powodu wstawiłem kolorowanie zamiast msgboxa, nie chciałbym się przez to wszystko przeklikiwać
@croppz
Dzięki ziomeczki raz jeszcze ( ͡° ͜ʖ ͡°)
Więcej niż jedna komórka jednocześnie nie będzie zmieniana, bo to idzie przez walidację danych, i ten szeroki zakres to też trochę na wyrost, więc to akurat nie problem.
Mój kod to:
Private Sub WorksheetChange(ByVal Target As Range)
Select Case Target.Address
Case "$E$7"
Kod
Case "$C$6"
Kod
Case "$B$12:$B$202"
For Each cell In Target
If Left(cell.Value,
if not intersect(target, me.columns(2)) is nothing
If Not Intersect(Target, Range("$X$19:$X$42")) Is Nothing Then
użyte już po End Select, to już jakoś to powinienem ogarnąć teraz.
if cells(n, 1).value like "1111*" then
End if
Next