• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

methode Numberformat van object range is mislukt

Status
Niet open voor verdere reacties.

brandernl

Gebruiker
Lid geworden
19 okt 2004
Berichten
445
Ik heb deze macro zeer naar tevredenheid lang gebruikt, maar in Excel 2010 werkt ie niet meer, Excel loopt vast met de foutboodschap 'methode Numberformat van object range is mislukt'. Bij zoeken hier en op het net geen echte hulp. Een van jullie een suggestie?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Waarde As String
Waarde = ActiveCell.Value
ActiveCell.NumberFormat = "General"

Select Case Waarde
        Case "A"
    ActiveCell.Interior.ColorIndex = 3
    ActiveCell.Offset(, 1).Value = "B"
    ActiveCell.Offset(, 1).Interior.ColorIndex = 3
        Case "B"
    ActiveCell.Interior.ColorIndex = 10
    ActiveCell.Offset(, 1).Value = "C"
    ActiveCell.Offset(, 1).Interior.ColorIndex = 10
        Case "C"
    ActiveCell.Interior.ColorIndex = 17
    ActiveCell.Offset(, 1).Value = "A"
    ActiveCell.Offset(, 1).Interior.ColorIndex = 17
        Case "extra"
    ActiveCell.Interior.ColorIndex = xlNone
    ActiveCell.Offset(, 1).Value = "extra"
    ActiveCell.Offset(, 1).Interior.ColorIndex = xlNone
        Case "vrij"
    ActiveCell.Interior.ColorIndex = xlNone
        Case "vak"
    ActiveCell.Interior.ColorIndex = xlNone
        Case ""
    ActiveCell.Interior.ColorIndex = xlNone
        Case Else
     ActiveCell.Interior.ColorIndex = xlNone
    End Select

End Sub
 
Dit lijkt me voldoende:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   with Target
     .Interior.ColorIndex =xlnone
     if instr("ABCE",ucase(left(.value,1))) then 
       .resize(,2).interior.colorindex(asc(left(.value,1)-64,3,10,17,xlnone)
       .offset(,1)=target.value
     end if
     .NumberFormat = "General"
  end with
End Sub

Kijk verder eens of het iets met de taalinstellingen te maken heeft: neem een macro op terwijl je het numberformat wijzigt.
 
Dank voor je snelle reactie:

1. zou je kunnen (willen) uitleggen hoe jouw code werkt? (ziet er prachtig uit)
2.
Code:
.resize(,2).interior.colorindex(asc(left(.value,1)-64,3,10,17,xlnone)
deze regel is rood, de haakjes staan wel goed denk ik
 
haakjes tellen:

.resize(,2).interior.colorindex=choose(asc(left(.value,1))-64,3,10,17,,xlnone)

Zoek de voor jou onbekende VBA termen op in de helpbestanden van de VBEditor.
 
Laatst bewerkt:
Nogal wiedes:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Rows(8).Resize(4), Columns(3).Resize(, 20)) Is Nothing Then Exit Sub
   
   With Target
     .Interior.ColorIndex = xlNone
     If InStr("ABCE", UCase(Left(.Value, 1))) Then
        .Resize(, 2).Interior.ColorIndex = Choose(Asc(Left(.Value, 1)) - 64, 3, 10, 17, , xlNone)
        Application.EnableEvents = False
        .Offset(, 1) = .Value
        .Application.EnableEvents = True
     End If
     .NumberFormat = "General"
  End With
End Sub
 
Ik kan van je leren, dus wat is nogal wiedus?

De code levert nu bij mij een simpel keuzelijstje, zonder kleur en zonder dat de naastliggende cel wordt ingevuld.

Wat is nu het verschil tussen 2003 en 2010 dat de beproefde macro niet meer werkt?
 
Als je in een gebeurteniscode, die geactiveerd wordt wanneer je iets in enige cel wijzigt, een wijziging in een cel aanbrengt krijg je een eindeloze lus.

Je moet nog wel even het gebied aanpassen waarop deze code van toepassing moet zijn:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Rows(8).Resize([COLOR="#FF0000"][B]8[/B][/COLOR]), Columns(3).Resize(, 20)) Is Nothing Then Exit Sub
   
   With Target
     .Interior.ColorIndex = xlNone
     If InStr("ABCE", UCase(Left(.Value, 1))) Then
        .Resize(, 2).Interior.ColorIndex = Choose(Asc(Left(.Value, 1)) - 64, 3, 10, 17, , xlNone)
        Application.EnableEvents = False
        .Offset(, 1) = .Value
        .Application.EnableEvents = True
     End If
     .NumberFormat = "General"
  End With
End Sub
 
Laatst bewerkt:
Dank voor je hulp.
Ik snap dat van die event, maar volgens jouw code zou er ook iets met de kleur van de cel moeten gebeuren, maar dat doet ie niet.
 
Bij mij wel...., tenzij voorwaardelijke opmaak de overhand neemt.
 
point taken.
Dank voor je hulp.
Ik blijf de help van Excel niet echt behulpzaam vinden in het maken van 'mooie formules'
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan