I have a table of data (tblProducts) that has 27 columns of data. Periodically it will be necessary to update the value of a cell in one specific column (col 7).
Rather than having users search the table or bother with a userform, I would like them to be able to locate the cell that requires updating from a small area on the dashboard. I have created a data validation list for the products in the database (column 2 on the database sheet (sheet 2). I also created a VLookup to find the current respective value in column 7. (see image below). The macro I have for the submit button is included below but it results in error 13 Type mismatch. I can't find where the error is. Can anyone help?

Yield.png

Option Explicit

Sub UpdateYieldPercentage()

'declare the variables
Dim findvalue As Range
Dim DataSH As Worksheet
Dim WorkSH As Worksheet
Dim Item As String
Dim Percent As Long

'error handling
On Error GoTo ErrHandler:

'hold in memory and stop screen flicker
Application.ScreenUpdating = False

'set variables
Set DataSH = Sheet2
Set WorkSH = Sheet1
Item = WorkSH.Range("P11").Value
Percent = WorkSH.Range("Q13").Value

'check for values
If Item = "" Or Percent = "" Then
MsgBox "Select a product to update"
Exit Sub
End If

'find the row to edit - Column D holds the values of a data validation list in cell P11
Set findvalue = DataSH.Range("D:D"). _
Find(What:=Item, LookIn:=xlValues, LookAt:=xlWhole)
'update the value
findvalue = Item
findvalue.Offset(0, 6) = Percent ' column 6 is the value that needs to over updated with the value of cell Q13
MsgBox "Yield % for " & Item & " updated", vbOKOnly, "YIELD % UPDATE"

Item = ""         ' Here I was to clear the cells on the dashboard (Sheet1)
Percent = ""

Exit Sub
ErrHandler:
'show error information in a messagebox
MsgBox "An Error has Occurred " & vbCrLf & _
"The error number is: " & Err.Number & vbCrLf & _
Err.Description & vbCrLf & "Please notify Chef Jamie"

End Sub