excel - 显示任何值的复选标记
问题描述
使用单元格格式 Excel 允许将任何值显示为任何预定字符。多年来我一直使用这个功能来显示一个复选标记,但现在下面的代码让我很头疼。
With Rng
.HorizontalAlignment = xlHAlignCenter
.NumberFormat = """" & ChrW(252) & """"
With .Font
.Name = "Wingdings"
.Bold = True
End With
End With
一切都在同一个工作簿中:有一个帐户,某种日记。我的代码过滤掉一个主题的条目并将结果写入专用表。该帐户有一列带有这种类型的复选标记,它们被正确复制到带有过滤数据的选项卡中。从过滤后的提取中,我的代码将项目复制到第三个选项卡中,其中信息显示在上下文中。数据(仅值)通过数组传输。作为此方法的结果,目标选项卡接收并显示单元格值。上面的代码旨在格式化受影响的单元格以显示复选标记。
一切正常,只是字体似乎没有被应用。格式化的单元格确实将Wingdings显示为应用的字体。该值存在并被抑制,但它没有显示任何内容,而不是复选标记。
单元格格式设置正确。由于它之前存在于工作簿中,因此值得注意的是没有添加新格式。(ChrW() 的使用是过去几年被遗忘的问题的遗留问题。Chr() 在这种情况下产生相同的结果。)我尝试在 NumberFormat 之前或之后设置字体。
我发现我当前版本的 Excel (365) 在其 Wingdings 中似乎没有复选标记。惊讶,因为它在同一个工作簿中,但我没有在Symbols
. 相反,我在 Wingsdings2 中找到了 Chr(80)。应用相同的代码,单元格显示“P”,Wingsdings2显示为应用字体。
当然,我仔细检查了帐户中类似单元格的格式和过滤后的副本,并没有发现任何区别。我还尝试使用相同的设置再次格式化最终的单元格,但他们固执地盯着我看,眼神空洞。
作为致命一击,我将上面相同的代码应用于同一个工作簿中一张空白纸上的 ActiveCell,它运行得非常漂亮,大胆。那么,在它不起作用的工作表上可能有什么不同?实际上,这是我的问题。
行被逐一插入,逐个单元格填充,并且在写入值之前对每个行应用不同的格式。但是使用 F8 单步执行代码并没有产生任何启示。我还尝试启用 ScreenUpdating (通常在代码运行时关闭)但没有不同的结果。那么,为什么没有正确应用指定的字体?
细胞确实有两个特点。一个是它们是该行中的最后一个。另一个是该行中的所有其他单元格被合并。这导致将Merge
命令应用于单个单元格。为了显示我绝望的程度,我添加了If Rng.Cells.Count > 1 Then Rng.Merge
。当然,这并没有什么不同。
解决方案
推荐阅读
- javascript - Javascript toISOString() 不同格式
- reactjs - 如何使用 next-connect 处理 Next.js 中 getServerSideProps 中的错误
- azure-ad-b2c - Azure AD/B2C Resource Owner Password Flow does not honor the "User Assignment Required" flag
- php - 通过匹配两个数组的值来创建新数组的有效方法
- spring-boot - 非实体requestbody对象的spring boot验证
- reactjs - 如何使用 Mobx 状态树库解决 React 应用程序中 linter 和类型冲突的问题?
- c# - GroupBy, Filtering in knockout.js
- javascript - 为什么我在反应钩子中得到这个无限循环
- stm32 - 如果我禁用 DMAContinuousRequests,ADC 是否会在每次完成转换时自动触发 DMA 请求?
- ruby - 循环遍历数组并比较Ruby中的连续元素