14. december 2017 - 10:21Der er
5 kommentarer og 1 løsning
VBA læser værdi som celle reference
Hej
Jeg er løbet ind i et dumt problem, som sikkert har en simpel løsning, jeg kan bare ikke huske/finde den.
Det er en simpel macro som skal farve 3 celler på baggrund af værdien i en tredje celle. F.eks. hvis D2 = 2 så skal celler cellerne D3-D5 blive gule. Mit problem er at en af de værdier der kan optræde i celle D2 er A1 og det kan macro'en ikke finde ud af. Jeg tror den læser A1 som en celle reference i stedet for en værdi.
Private Sub worksheet_change(ByVal target As Range) Dim i As Long, r1 As Range, r2 As Range For i = 3 To 5 Set r1 = Range("D2") Set r2 = Range("D" & i & ":D" & i) If r1.Value = "A1" Then r2.Interior.ColorIndex = 45 End If If r1.Value = 2 Then r2.Interior.ColorIndex = 27 End If Next i End Sub
Utestet: Private Sub worksheet_change(ByVal target As Range) Dim r1 As Range, r2 As Range 'old: For i = 3 To 5 Set r1 = Range("D2") Set r2 = Range("D3:D5") 'old: Range("D" & i ":D" & i) If r1.Value = range("A1").value Then r2.Interior.ColorIndex = 45 End If If r1.Value = 2 Then r2.Interior.ColorIndex = 27 End If 'old: Next i End Sub
Private Sub worksheet_change(ByVal target As Range) Dim r1 As Range, r2 As Range Set r1 = Range("D2") Set r2 = Range("D3:D5") Select Case r1.Value 'evt r1.Text Case 2 r2.Interior.ColorIndex = 27 Case "A1" r2.Interior.ColorIndex = 45 Case Else
Private Sub worksheet_change(ByVal target As Range) If Intersect(target, Range("D2")) Is Nothing Then Exit Sub If target = 2 Then Range("D3:D5").Interior.ColorIndex = 27 If target = "A1" Then Range("D3:D5").Interior.ColorIndex = 45 End Sub
Excelents forslag virker. Med den løsning kan jeg uden problemer opnå det jeg ønsker, tak for det.
Også tak for de øvrige forslag.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.