在excel 2013中自动填充范围内的特定文本

Posted

技术标签:

【中文标题】在excel 2013中自动填充范围内的特定文本【英文标题】:Autofill a specific text in a range in excel 2013 【发布时间】:2017-06-25 17:58:48 【问题描述】:

我正在尝试通过 vba 在 excel 2013 中自动填充范围(N6:N125)中的文本。当范围引用单个单元格而不是范围时,我的代码工作正常。你能帮我找出我的错误吗?我的代码是

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("N6:N125") = "" Then
Range("N6:N125").value = "My Text"
End If
End Sub

【问题讨论】:

【参考方案1】:

如果您只想填充 N6N125 中的空单元格,并且某些单元格可能已经有值,但没有一个有公式,那么循环不是实际需要:

Sub marine()
    Dim r As Range, s As String
    Set r = Range("N6:N125")
    s = "=IF(N6:N125="""",""MyText"",N6:N125)"
    r.Value = Evaluate(s)
End Sub

【讨论】:

【参考方案2】:
If Range("N6:N125") = "" Then

这不起作用。您将需要逐个单元地进行此测试。一个更简单的选择是:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  On Error Resume Next
  Range("N6:N125").SpecialCells(xlCellTypeBlanks).value = "My Text"
End Sub

这将填充范围内的空白单元格。但是,如果您的测试目的是检查整个范围是否为空,则:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Application.CountA(Range("N6:N125")) = 0 Then Range("N6:N125").value = "My Text"
End Sub

【讨论】:

【参考方案3】:

你可以使用:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


With Selection

For Each cell In Selection

If cell = "" Then
cell.Value = "My Text"
End If
Next cell
End With
End Sub 

此代码将测试您选择的每个单元格是否为空并在其中写入“我的文本”,但如果它不为空,它将跳过它。

在您的代码中,您没有测试每个单元格,也没有使用循环从一个单元格移动到另一个单元格

【讨论】:

以上是关于在excel 2013中自动填充范围内的特定文本的主要内容,如果未能解决你的问题,请参考以下文章

当我在Excel中输入特定值时如何自动填充数据?

Excel如何用文本填充所有选定的空白单元格

Excel VBA:自动填充公式的代码,无论左侧列的长度是多少(因此不需要指定范围)

Excel:查找特定时间范围内的值

EXCEL 里面怎么设置自动填充自己想要的随机数。

Excel,自定义自动填充功能