当填充文本的函数退出时,VBA文本消失

时间:2013-10-21 10:27:23

标签: vba excel-vba excel

我是VBA的新手。我正在尝试编写一个用常量文本填充一些常量单元格的函数。这是我的代码:

Public Function PrepareSpreadSheet()
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "Sun"
    Range("C5").Select
    ActiveCell.FormulaR1C1 = "Mon"
    Range("D5").Select
    ActiveCell.FormulaR1C1 = "Tue"
    Range("J5").Select
    ActiveCell.FormulaR1C1 = "Total"
    Range("B5:J5").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Function

我从我的子语言中调用此函数:

Sub ReadTxtFile()
   PrepareSpreadSheet
End Sub

当我跑步时,没有任何事情发生。调试时,我看到文本输入到指定的单元格,但在函数退出时消失。

你能解释一下如何解决这个问题吗?

谢谢, 李

1 个答案:

答案 0 :(得分:2)

为什么功能而不是Sub?函数用于Return某事。另请避免使用.Select

INTERESTING READ

这是你在尝试的?

Sub ReadTxtFile()
   PrepareSpreadSheet
End Sub

Public Sub PrepareSpreadSheet()
    Dim ws As Worksheet

    '~~> Change this to the relevant worksheet 
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        .Range("B5").Value = "Sun"
        .Range("C5").Value = "Mon"
        .Range("D5").Value = "Tue"
        .Range("J5").Value = "Total"

        With .Range("B5:J5")
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .ReadingOrder = xlContext
        End With
    End With
End Sub

如果以上仍然不起作用,那么

  1. 检查worksheet_Change事件中是否有可能正在清除单元格的代码?
  2. 检查该单元格的字体颜色是否为白色?
  3. 检查您是否正在检查正确的工作表。也许数据在其他工作表中?
  4. courtesy @Mehow:设置Application.ScreenUpdating = false也无法显示数据。如果您要将活动设置为False,请记得将其设置回True