Tehtävänä on siis tarkastaa (estää) negatiivisten lukujen työttäminen Excelin tietylle välilehdelle sekä ilmoittaa käyttäjälle, jos näin käy. Ohessa koodi, jota käytän asiaan:
Private Sub Worksheet_Change(ByVal Target As Range) For i = 1 To Rows.Count If Worksheets("Vh").Cells(i, Target.Column).Value < 0 Then MsgBox ("Negatiivinen arvo rivillä" & Target.Row) Worksheets("Vh").Cells(Target.Row, Target.Column) = "..." Exit For End If Next i End Sub
Homma toimii hyvin niin kauan, kun käyttäjä ei syötä yhtään negatiivista lukua. Jos syöttää, koodi toimii kyllä senkin jälkeen oikein, mutta samalla koko Excel muuttuu lähes käyttökelvottoman hitaaksi käyttää. Miten tuon saisi tehtyä niin, ettei ko. työkirjan käyttö hidastuisi liikaa?
Lisäys:
Keskin jo itse ratkaisun. Ratkaisu on seuraava koodi:
Private Sub Worksheet_Change(ByVal Target As Range) 'For i = 1 To Rows.Count If Worksheets("Vh").Cells(Target.Row, Target.Column).Value < 0 Then MsgBox ("Negatiivinen arvo rivillä" & Target.Row) Worksheets("Vh").Cells(Target.Row, Target.Column) = "..." 'Exit Sub End If 'Next i End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.