【问题标题】:Conditional Formatting through code通过代码进行条件格式化
【发布时间】:2020-07-13 23:37:12
【问题描述】:

您好,我正在使用此请求解析来自其他网站的一些数据:

   Public Function giveMeValue(ByVal link As Variant) As Variant

Set htm = CreateObject("htmlFile")

With CreateObject("msxml2.xmlhttp")
   .Open "GET", link, False
   .send
   htm.body.innerhtml = .responsetext
End With

If Not htm.getelementbyId("JS_topStoreCount") Is Nothing Then

   giveMeValue = htm.getelementbyId("JS_topStoreCount").innerText

Else
    giveMeValue = "0"

End If

htm.Close
Set htm = Nothing

End Function

使用单元格 =giveMeValue(A1) 上的函数现在我需要对复制的值应用一些格式条件,但我无法使用 excel 条件格式来做到这一点

活动单元格“B”列

  1. 小于 10 红色
  2. 10 到 15 黄色之间
  3. 超过 15 个绿色

所有不返回任何数字的单元格都应该是空白的,请考虑将=giveMeValue(A1)返回为字符串

【问题讨论】:

  • 我认识这个代码 sn-p :) 如果您知道返回值始终可以转换为 Integer,您是否尝试过声明函数 As Integer 而不是 As String?我猜问题是条件格式无法识别数字,因为它是作为字符串返回的,正如您所说的那样。
  • ...您也可以在条件格式规则中使用=VALUE(...)
  • Matteo 当然你认得它 :-) 是你的,所有的功劳当然归你所有,我自己做不到,回报总是整数

标签: excel ms-access vba


【解决方案1】:

整数(和 Long 整数)本质上不能包含数字的小数部分(又名 decimal)。我强烈怀疑这是一个重要因素,但您的问题中缺少任何可以澄清这一点的细节。

删除函数声明中的As String。这有效地将其更改为默认值As Variant。唯一的其他操作是将一个代码行更改为,

giveMeValue = CDbl(.innerText)

这应该返回一个数值,无论是否涉及小数。如果从抓取中检索到无法转换为数字的文本,该函数将返回错误。

【讨论】:

  • 谢谢 Jeeped ,有时页面上不存在“JS_topStoreCount”元素,因此公式返回为 #VALUE!我怎样才能返回为“0”呢?
  • @user2482756 - 该评论似乎与您之前的声明相矛盾,即“返回总是整数”。继续试图补偿您不愿透露的条件似乎是愚蠢的差事。
  • @user2482756 - =IFERROR(giveMeValue(A1), 0) 怎么样?
  • no 似乎不起作用,我找到了解决“0”问题的方法,但现在颜色格式仍然存在以前的问题,我用新代码更新了帖子跨度>
  • 我用宏解决它如下:'Dim color As Integer For Each cell In Sheets(1).Range("B1:F65536") If IsEmpty(cell) Then GoTo nextcell: If Not IsNumeric(cell.Value) Then GoTo nextcell: If cell.Value > 14 Then color = 4 ElseIf cell.Value < 8 Then color = 3 Else: color = 6 End If cell.Interior.ColorIndex = color nextcell: Next cell End Sub'
猜你喜欢
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2014-01-28
相关资源
最近更新 更多