1

我是 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 调用这个函数:

Sub ReadTxtFile()
   PrepareSpreadSheet
End Sub

当我运行它时,什么也没有发生。调试时,我看到文本输入到指定的单元格,但在函数退出时消失。

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

谢谢,李

4

1 回答 1

2

为什么是函数而不是子?函数用于Return某事。也请避免使用.Select.

有趣的阅​​读

这是你正在尝试的吗?

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
于 2013-10-21T10:31:05.490 回答