excel - 如果字符计数器大于 100,则更改字体大小的事件
问题描述
我有这个函数,只要特定范围内的单元格发生变化,就会调用一个函数。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:L60")) Is Nothing Then
Call fit_text
End If
End Sub
函数 fit_text 更改活动单元格值的字体大小。
Sub fit_text()
MsgBox ActiveCell.Characters.Count
If ActiveCell.Characters.Count > 100 Then
ActiveCell.Font.Size = 8
Else
ActiveCell.Font.Size = 10
End If
End Sub
问题:每当我更改字符数大于 100 的单元格的值时,字体大小保持为 10,并且告诉计数值的消息框显示 0,但是每当我在 vba 上运行它时,消息框都会显示如果计数大于 100,则正确的值并更改字体大小。我需要它是自动的。无法更改单元格的高度或宽度
解决方案
请注意,Excel 可以自动缩小字体大小以适应单元格。因此选择您的单元格,按 Ctrl+1转到Alignment
选项卡并选择Shrink To Fit
。
修复您的代码:
不要使用ActiveCell
. 改用Target
或Intersect
范围。ActiveCell
可能不是已更改的单元格。也Target
可以是多个单元格,因此您需要遍历所有更改的单元格并单独测试每个单元格。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim AffectedRange As Range
Set AffectedRange = Intersect(Target, Target.Parent.Range("A1:L60"))
If Not AffectedRange Is Nothing Then
Dim Cell As Range
For Each Cell In AffectedRange 'loop through all changed cells
MsgBox Len(Cell.Value)
If Len(Cell.Value) > 100 Then
Cell.Font.Size = 8
Else
Cell.Font.Size = 10
End If
Next Cell
End If
End Sub
推荐阅读
- node.js - 如何将 React 应用程序部署到 Prod 以及如何管理版本控制
- c++ - 在 C++ 中将结构写入文本文件
- django - Django DRF:使用 PrimaryKeyRelatedFields 列表发布到 CreateAPIView
- julia - 朱莉娅的最大似然
- angular - 需要一种从父组件的点击事件中调用子组件功能的方法
- java - 将 PST 转换为 CST 和 EST 没有给出正确的输出
- excel - Sumif 循环遍历数据组 vba
- javafx - 检查在 javafx 中选择了哪个文本框
- c# - 删除处理程序到按钮
- php - AJAX 返回“成功”函数而不是“错误”函数