使用 VBA 根据值自动格式化单元格
Auto-format Cell Based on Value with VBA
我正在为我的团队开发一个数据库查询工具,但遇到了一个我无法解决的小问题。这个问题困扰了我一段时间!
问题:从数据库返回的感兴趣的文本 是富文本格式(带有格式化标签)。我想让它格式化(理想)或只是纯文本(不理想)。我知道 Excel 能够做到这一点,因为我所要做的就是点击单元格,它会自动格式化。我想通过 VBA.
在后端实现这种自动格式化
查询文本示例:
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\lang1033\f0\fs16 Some text will be right here.\par
}
单击单元格时录制宏: 这不提供通用解决方案。它显示了所有已完成的格式设置,但这是特定于单元格的。
ActiveCell.FormulaR1C1 = "Some text will be right here." & Chr(10) & " "
这对我没有帮助。
我已经尝试了一些我在互联网上看到的东西; none 其中有效。具体来说,选择我想要设置格式的单元格并进行击键(F2、Enter)、计算单元格,也许还有一两个解决方案。
大家怎么看?
我也发送密钥 keybd_event
比 Sendkeys
更可靠。这对我有用
Option Explicit
'
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
' http://www.vbforums.com/showthread.php?277384-VB-Key-COnsts
Public Const VK_F2 = &H71
Public Const VK_RETURN = &HD
Sub ParseAllRange()
Dim rngCell As Range
Application.ScreenUpdating = False
For Each rngCell In Range("B13:B19")
rngCell.Select
keybd_event VK_F2, 0, 0, 0
keybd_event VK_RETURN, 0, 0, 0
DoEvents
Next
Application.ScreenUpdating = True
End Sub
我正在为我的团队开发一个数据库查询工具,但遇到了一个我无法解决的小问题。这个问题困扰了我一段时间!
问题:从数据库返回的感兴趣的文本 是富文本格式(带有格式化标签)。我想让它格式化(理想)或只是纯文本(不理想)。我知道 Excel 能够做到这一点,因为我所要做的就是点击单元格,它会自动格式化。我想通过 VBA.
在后端实现这种自动格式化查询文本示例:
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\lang1033\f0\fs16 Some text will be right here.\par
}
单击单元格时录制宏: 这不提供通用解决方案。它显示了所有已完成的格式设置,但这是特定于单元格的。
ActiveCell.FormulaR1C1 = "Some text will be right here." & Chr(10) & " "
这对我没有帮助。
我已经尝试了一些我在互联网上看到的东西; none 其中有效。具体来说,选择我想要设置格式的单元格并进行击键(F2、Enter)、计算单元格,也许还有一两个解决方案。
大家怎么看?
我也发送密钥 keybd_event
比 Sendkeys
更可靠。这对我有用
Option Explicit
'
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
' http://www.vbforums.com/showthread.php?277384-VB-Key-COnsts
Public Const VK_F2 = &H71
Public Const VK_RETURN = &HD
Sub ParseAllRange()
Dim rngCell As Range
Application.ScreenUpdating = False
For Each rngCell In Range("B13:B19")
rngCell.Select
keybd_event VK_F2, 0, 0, 0
keybd_event VK_RETURN, 0, 0, 0
DoEvents
Next
Application.ScreenUpdating = True
End Sub