vba - VBA 字。如何在Word表格中找到第一个空单元格?
问题描述
我一直在尝试使用 VBA 在 Word 表中找到第一个空单元格。
我放在下面的代码找到了所有空单元格,而不是我想在填充一个之后找到第一个。如何解决这个问题呢?
For Each oRow In Selection.Tables(1).Rows
For Each oCell In oRow.Cells
If Selection.Text = Chr(13) & Chr(7) Then
oCell.Select
'Selection.PasteSpecial DataType:=wdPasteText
MsgBox oCell.RowIndex & " " & oCell.ColumnIndex & " is empty."
End If
Next oCell
Next oRow
解决方案
您可能已经发现,在 Word 中确定一个空单元格并不像看起来那么简单。下面的代码在删除任何空格、制表符和 vbCr 后查找单元格中文本长度为 1 的第一个单元格。您可以扩展它以查找 vbLF、手动换行符和其他可能在单元格中但在关闭查看文本标记时不可见的字符。
表格范围的 .Cells 方法是最适合在此处使用的工具,因为即使表格已合并单元格,它也可以工作。如果表格中有合并的单元格,则使用单元格坐标搜索表格将失败。使用 .Cells 方法从左上角到右下角(逐列)搜索表格。
Option Explicit
Sub Test()
Dim myCell As Word.Range
Set myCell = FirstEmptyCell(ActiveDocument.Tables(1).Range)
myCell.Select
End Sub
' Returns the first cell that has a text length of 1
' after removing spaces and tab characters from the cell text
Public Function FirstEmptyCell(ByVal TableRange As Word.Range) As Word.Range
Dim myCell As Word.Cell
For Each myCell In TableRange.Tables(1).Range.Cells
Dim CellText As String
CellText = myCell.Range.Text
CellText = Replace(CellText, vbTab, vbNullString)
CellText = Replace(CellText, " ", vbNullString)
CellText = Replace(CellText, vbCr, vbNullString)
If Len(CellText) = 1 Then
Set FirstEmptyCell = myCell.Range
Exit Function
End If
Next
End Function
推荐阅读
- mysql - MYSQL按组获取计数百分比
- python - Tkinter 标签小部件显示与其他标签小部件不对齐?
- python - 使用多个连接的箱线图更改 Matplotlib 中的轴刻度
- javascript - Sapper/Svelte - 如何定期获取
- cmake - cmake命令中--j 8是什么意思
- docker - 如何将 Dockerized 多图像 JS 应用程序部署到 Heroku?
- python - 使用 convertapi 在 python 中合并 PDF
- python - 在有条件的熊猫中查找重复项(Python)
- twilio - 有没有办法从 Twilio 传递“Call-Info”SIP INVITE 请求标头?
- jquery - 如何在 jquery 中使用 Promise?