SjofaaSj
Gebruiker
- Lid geworden
- 24 feb 2014
- Berichten
- 44
Met onderstaande code zet ik een voorwaardelijke opmaak op een 'TABEL'
Waneer een opgegeven waarde voorkomt, wordt de volledige rij gekleurd:
De procedure werkt perfect, maar ik ben niet tevreden over de manier waarop de zoekterm wordt ingegeven.
Niet alleen zit deze momenteel vast in de code maar ik wil ook kunnen kiezen
Dat valt weliswaar te verhelpen dmv een inputbox en door te werken met * voor en/of achter de zoekterm,
maar dat vind ik weinig gebruiksvriendelijk en komt niet echt professioneel over.
Daarom wilde ik graag programmatorisch een userform aanmaken met
Op verschillende sites wordt het automatisch aanmaken van een userform beschreven
Zou iemand me hierbij kunnen assisteren aub?
Waneer een opgegeven waarde voorkomt, wordt de volledige rij gekleurd:
Code:
Sub Format_ConditionalFormatOnTableValue()
Dim myTbl As Excel.ListObject
Dim myRng As Range
Dim myRow1 As String
Dim myName As String
Dim myVal As String
Dim cnt As Integer
Dim rng As Range
'set parameters
myName = ""
cnt = ActiveSheet.ListObjects.Count
If cnt = 0 Then
MsgBox "ACTION CANCELLED" & chr(10) & chr(10) & "No Table on Active Sheet", vbCritical, "ERROR"
Exit Sub
ElseIf cnt > 1 Then 'multiple tables on sheet
On Error Resume Next
With Selection.Cells(1)
Set rng = Intersect(.EntireRow, ActiveCell.ListObject.DataBodyRange)
On Error GoTo 0
If rng Is Nothing Then 'cursor is NOT in a table
StopMultiple_:
MsgBox "ACTION CANCELLED" & chr(10) & chr(10) & "Multiple Tables on Sheet and none is selected." & chr(10) & _
"Please select a cell in the requested table and restart procedure.", vbCritical, "ERROR"
Exit Sub
Else
myName = ActiveCell.ListObject.Name
myMess = MsgBox("ACTION WARNING" & chr(10) & "Multiple Tables on Sheet" & chr(10) & _
"Is cursor in the requested table:" & chr(10) & " '" & myName & "'", vbExclamation + vbYesNo, "ERROR")
If myMess = vbNo Then
GoTo StopMultiple_
End If
End If
End With
End If
If myName = "" Then
Set myTbl = ActiveSheet.ListObjects(1)
Else
Set myTbl = ActiveSheet.ListObjects(myName)
End If
With myTbl
Set myRng = .DataBodyRange
myRow1 = .ListRows(1).Range.Address(rowAbsolute:=False, ColumnAbsolute:=True)
End With
myVal = """SALES"""
'define Cond Format
With myRng
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=AANTAL.ALS(" & myRow1 & ";" & myVal & ")<>0"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 8420607
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
End Sub
De procedure werkt perfect, maar ik ben niet tevreden over de manier waarop de zoekterm wordt ingegeven.
Niet alleen zit deze momenteel vast in de code maar ik wil ook kunnen kiezen
- alleen de cellen die exact de zoekwaarde bevatten
- alleen de cellen die beginnen met de zoekwaarde
- alleen de cellen die eindigen met de zoekwaarde
- alle cellen die de zoekwaarde bevatten
Dat valt weliswaar te verhelpen dmv een inputbox en door te werken met * voor en/of achter de zoekterm,
maar dat vind ik weinig gebruiksvriendelijk en komt niet echt professioneel over.
Daarom wilde ik graag programmatorisch een userform aanmaken met
- 1 Textbox voor de zoekwaarde
- 4 OptionButtons voor de hierboven beschreven opties
- 2 CommandButtons: 'uitvoeren' en 'annuleren'
Op verschillende sites wordt het automatisch aanmaken van een userform beschreven
http://j-walk.com/ss/excel/tips/tip76.htm
http://www.excelforum.com/excel-programming-vba-macros/466519-create-userform-programmatically.html
http://www.tek-tips.com/faqs.cfm?fid=5757
maar ik slaag er niet in om eruit te distilleren wat ik nodig heb.http://www.excelforum.com/excel-programming-vba-macros/466519-create-userform-programmatically.html
http://www.tek-tips.com/faqs.cfm?fid=5757
Zou iemand me hierbij kunnen assisteren aub?