Sarakkeen D solut ovat lukittuja ja niiden perusväri on sininen ja niissä on numeroita. Miten saan solun värin klikkaamalla esim punaiseksi ja uudestaan klikkaamalla taas siniseksi?
Punaiseksi klikattujen solujen määrä pitäisi pystyä laskemaan.
Punaiseksi klikattujen solujen määrä pitäisi pystyä laskemaan.
Vastaukset 4
Vanhimmat
Klikkaamalla niitä ei taida saada väriä vaihtamaan, mutta kikkailemalla saa.
Aktivoi solu D1 muotoile -> ehdollinen muotoilu -> valitse kaavan arvo ja kaavaksi =E1=" " -> Muotoile -> kuviot ja valitse solun sävytys punainen.Ok ja OK.
Kopioit muotoilut muihin D-sarakkeen soluihin.
Kun teet välilyönnin E-sarakkeen solussa muuttuu viereinen D-sarakkeen solu punaiseksi.
Punaisten solujen määrä voidaan laskea kun lasketaan välilyönnin sisältävät solut E-sarakkeesta
=LASKE.JOS(E:E;" ")
taulukon moduuliin
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim vika As Integer
Dim X As Integer
vika = Range("D65536").End(xlUp).Row
If Target.Count > 1 Then Exit Sub
If Target.Column = 4 Then
If Target.Interior.ColorIndex = 5 Then 'sininen
Target.Interior.ColorIndex = 3 'punainen
Else
Target.Interior.ColorIndex = 5
End If
End If
For Each c In Range("D1:D" & vika)
If c.Interior.ColorIndex = 3 Then
X = X 1
End If
Next
Range("E1") = X
End Sub
jos lukitsen D sarakkeen, niin eipä toimikkaan. Sarake on lukittuna, koska sarakkeessa on lukuja joita käyttäjien ei pitäisi päästä muuttamaan... onko jotain vaihtoehtoja?
Ja vielä kun saisi niin, että solua klikkailemalla saisin värin vaihdettua sinisen ja punaisen välillä... nyt joudun värin vaihdon jälkeen käyttämään naapuri solua aktiivisena ennen kuin voin taas vaihtaa saman solun väriä.
Taulukon moduuliin seuraava koodi.Hiiren oikealla klikkaamalla saat vaihdettua sarakkeessa D solun väriä poistumatta solusta...
vasemmalla painikkeella herjaa, ettet voi muuttaa solun arvoa
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim vika As Integer
Dim X As Integer
Application.DisplayAlerts = False
ActiveSheet.Unprotect Password:="kunde"
vika = Range("D65536").End(xlUp).Row
If Target.Column = 4 Then
If Target.Count > 1 Then Exit Sub
If Target.Interior.ColorIndex = 5 Then 'sininen
Target.Interior.ColorIndex = 3 'punainen
Else
Target.Interior.ColorIndex = 5
End If
Cancel = True
End If
For Each c In Range("D1:D" & vika)
If c.Interior.ColorIndex = 3 Then
X = X 1
End If
Next
Range("E1") = X
ActiveSheet.Protect Password:="kunde" ', AllowFormattingCells:=True
Application.DisplayAlerts = True
End Sub