英文:
Excel VBA: How to get a input from a user and highlight its positive and negative number from the range using VBA?
问题
如果我点击一个按钮,它会显示一个输入框,如果用户在输入框中写入5,那么所有+5和-5的单元格应该在该列中被突出显示。
如果有人可以帮助我编写这个VBA代码,我将不胜感激。提前谢谢。
英文:
If I click a button it will show a inputbox and If the user writes 5 in inputbox then all the +5 and -5 should be highlighted from the column.
If anyone can help me with the VBA code of this it will be grateful. Thank you in advance.
答案1
得分: 1
很高兴知道,如果你能证明自己尝试过一些方法,那么你增加了被帮助的机会!一段代码,即使它不能返回你需要的结果,一些类似的解决方案链接,但不能解决问题等。
我正在做一个例外,希望你已经学会了这个方面,下次会做好该做的事情。
请尝试下面的代码,并在测试后发送一些反馈:
Sub testHighlightInpNumbersInCol()
Dim sh As Worksheet, lastR As Long, rngCol As Range, mtchCell As Range, searchNo As String
Const colNo As Long = 1 '要搜索数字的列号
Set sh = ActiveSheet
lastR = sh.Cells(sh.Rows.Count, colNo).End(xlUp).Row '搜索列上的最后一行
Set rngCol = sh.Range(sh.Cells(1, colNo), sh.Cells(lastR, colNo)) '设置包含数据的范围
rngCol.Interior.Color = xlNone '删除以前的背景颜色
searchNo = InputBox("请输入要突出显示的数字值", "搜索数字") '返回要搜索的数字
If searchNo = "" Then MsgBox "您没有输入任何内容...": Exit Sub '如果没有输入任何内容...
If Not IsNumeric(searchNo) Then MsgBox "输入值必须为数字...": Exit Sub '如果输入了字母数字
Set mtchCell = rngCol.Find(CDbl(searchNo), rngCol.Cells(1), xlValues, xlWhole, xlByRows) '查找具有正数值的单元格
If mtchCell Is Nothing Then MsgBox searchNo & " 未找到...": Exit Sub '如果未找到,退出
mtchCell.Interior.Color = vbYellow '如果找到,将其内部颜色设置为黄色
Set mtchCell = rngCol.Find(-CDbl(searchNo), rngCol.Cells(1), xlValues, xlWhole, xlByRows) '查找负数值
If mtchCell Is Nothing Then MsgBox "未找到 " & searchNo & " 的负数值...": Exit Sub
mtchCell.Interior.Color = vbYellow
End Sub
上述代码假设在相应的列中只存在一个数字(正数和负数)。该代码可以适应搜索所有出现的情况,但是也很重要的是要明确解释你拥有的东西以及你试图实现什么...
英文:
It is good to know that you increase your chances to be helped if you prove that tried something by your own! A piece of code, even if it does not return what you need, some links to solution looking similar, but not solving the issue etc.
I am making an exception, hoping that you learned this aspect and next time will do what is to be done.
Please, try the next code and send some feedback after testing it:
Sub testHighlightInpNumbersInCol()
Dim sh As Worksheet, lastR As Long, rngCol As Range, mtchCell As Range, searchNo As String
Const colNo As Long = 1 'column number where the number to be searched
Set sh = ActiveSheet
lastR = sh.cells(sh.rows.count, colNo).End(xlUp).row 'last row on the searched column
Set rngCol = sh.Range(sh.cells(1, colNo), sh.cells(lastR, colNo)) 'set the range keeping data
rngCol.Interior.Color = xlNone 'remove any previous background colors
searchNo = InputBox("Please, enter the numeric value to be highlighted", "Search for numbers") 'return the number to be searched
If searchNo = "" Then MsgBox "You did not write anything...": Exit Sub 'in case of nothing input...
If Not IsNumeric(searchNo) Then MsgBox "The input value MUST be numeric...": Exit Sub 'in case of alpha numeric entrance
Set mtchCell = rngCol.Find(CDbl(searchNo), rngCol.cells(1), xlValues, xlWhole, xlByRows) 'find the cell with the positive value
If mtchCell Is Nothing Then MsgBox searchNo & " could not be found...": Exit Sub 'if not found, exit
mtchCell.Interior.Color = vbYellow 'if found, color its interior in yellow
Set mtchCell = rngCol.Find(-CDbl(searchNo), rngCol.cells(1), xlValues, xlWhole, xlByRows) 'find the negative value
If mtchCell Is Nothing Then MsgBox "No negative value for " & searchNo & " could not be found...": Exit Sub
mtchCell.Interior.Color = vbYellow
End Sub
The above code assumes that a single occurrence of the number (positive and negative) exists on the respective column. The code can be adapted to search for all occurrences, but it is also good to learn that we here are not mind reader and you need to clearly explain what you have and what you try accomplishing...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论