2017-05-18 1 views
-1

Ich habe eine userform erstellt und ich habe ein kleines Rätsel. Wie setze ich den Text auf einen bestimmten color, wenn ein Wert in userform ausgewählt wurde? Was ich tun möchte, ist, wenn der SP.Wert in der Combo-Box "Ja" ist, dann möchte ich den gesamten iRow Text rot, wenn der ST.Wert Ja ist, will ich die ganze iRow blau sein. Ich hoffe das macht Sinn? Die SP.Value und ST.Value sind beide Kombinationsfelder in der Userform mit nur Optionen von „Ja/Nein“Formatieren einer Zeile mit VBA-Benutzerform

ich den Fehler mit Objekt bin immer muss benutzerdefinierten Typ, Objekt oder Variant

Private Sub NL_Click() 

Dim iRow As Long 
Dim ws As Worksheet 

Set ws = Worksheets("Sp Br") 

iRow = ws.Cells.Find(what:="*", SearchOrder:=xlRows, _ 
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 

If SP.Value = "Yes" Then 
    With iRow 
    .colour = -16776961 
    .TintAndShade = 0 
    Sheets("Spec Break").Range("B2").Value = Customer.Value 
    Sheets("Spec Break").Range("B3").Value = Project.Value 
    Sheets("Spec Break").Range("B4").Value = Format(Now, ["DD/MM/YYYY"]) 
    Sheets("Spec Break").Range("B5").Value = RSM.Value 
    ws.Cells(iRow, 1).Value = Cf.Value 
    ws.Cells(iRow, 2).Value = RT.Value 
    ws.Cells(iRow, 3).Value = MEqu.Value 
    ws.Cells(iRow, 4).Value = hmm.Value 
    ws.Cells(iRow, 5).Value = wmm.Value 
    ws.Cells(iRow, 6).Value = Opt.Value 
    ws.Cells(iRow, 7).Value = Tap.Value 
    ws.Cells(iRow, 8).Value = Fing.Value 
    ws.Cells(iRow, 9).Value = col.Value 
    ws.Cells(iRow, 10).Value = Pr.Value 
    ws.Cells(iRow, 11).Value = Qt.Value 
    End With 
End If 

'Insert a row beneath the data to push down footer image 
     ActiveCell.Offset(1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrAbove 
     ActiveCell.EntireRow.Copy 
     ActiveCell.Offset(1).EntireRow.PasteSpecial xlPasteFormats 
     Application.CutCopyMode = False 

'clear form values 
    CustRef.Value = "" 
    RadType.Value = "" 
    MysonEquiv.Value = "" 
    heightmm.Value = "" 
    widthmm.Value = "" 
    Output.Value = "" 
    Tapping.Value = "" 
    Fixing.Value = "" 
    colour.Value = "" 
    Price.Value = "" 
    Qty.Value = "" 

End Sub 
sein
+1

Ungewöhnlich vielleicht die Fehlermeldung fasst das Problem gut zusammen. Sie folgen einem 'With' Statement mit' iRow' welches ein Long ist. Vielleicht meinst du 'Rows (iRow)'? – SJR

Antwort

1

Da SJR darauf hinwies, dass dein iRow einen langen numerischen Wert hat, 12345578 usw., so kannst du nicht wirklich etwas damit anfangen (naja, du könntest das, aber das ist nebensächlich). Sie sind bereits mit Ihrem ws.cells-Code dort; iRow enthält die Zeilennummer und Sie geben eine Spalte an. So entfernen Sie die mit Block und Verwendung Zellen und Reihen Referenzen für die ersten paar Zeilen:

If SP.Value = "Yes" Then 
    Rows(iRow).colour = -16776961 
    Rows(iRow).TintAndShade = 0 
    Sheets("Spec Break").Range("B2").Value = Customer.Value 
    Sheets("Spec Break").Range("B3").Value = Project.Value 
    Sheets("Spec Break").Range("B4").Value = Format(Now, ["DD/MM/YYYY"]) 
    Sheets("Spec Break").Range("B5").Value = RSM.Value 
    ws.Cells(iRow, 1).Value = Cf.Value 

' etc 
0

sorry ich wollte nicht auf das klicken auf ... Ich habe die Antwort upped. Danke, dass Sie mich in die richtige Richtung geschickt haben, leider hat die gelieferte Lösung immer noch einen Fehler ergeben oder 2. Nachdem ich die Farbpalette und MSDN konsultiert habe, habe ich festgestellt, dass das Ändern meines Codes nach unten funktioniert hat.

Private Sub NL_Click() 

Dim iRow As Long 
Dim ws As Worksheet 

Set ws = Worksheets("Spec Break") 


iRow = ws.Cells.Find(what:="*", SearchOrder:=xlRows, _ 
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 


If Specials.Value = "Yes" Then 
    With Rows(iRow) 
     .Font.Color = RGB(255, 0, 0) 
      Sheets("Spec Break").Range("B2").Value = Customer.Value 
      Sheets("Spec Break").Range("B3").Value = Project.Value 
      Sheets("Spec Break").Range("B4").Value = Format(Now, ["DD/MM/YYYY"]) 
      Sheets("Spec Break").Range("B5").Value = RSM.Value 
       ws.Cells(iRow, 1).Value = Cf.Value 
       ws.Cells(iRow, 2).Value = RT.Value 
       ws.Cells(iRow, 3).Value = MEqu.Value 
       ws.Cells(iRow, 4).Value = hmm.Value 
       ws.Cells(iRow, 5).Value = wmm.Value 
       ws.Cells(iRow, 6).Value = Opt.Value 
       ws.Cells(iRow, 7).Value = Tap.Value 
       ws.Cells(iRow, 8).Value = Fix.Value 
       ws.Cells(iRow, 9).Value = col.Value 
       ws.Cells(iRow, 10).Value = Pr.Value 
       ws.Cells(iRow, 11).Value = Qt.Value 
    End With 
End If 

End Sub 
Verwandte Themen