我是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
当我跑步时,没有任何事情发生。调试时,我看到文本输入到指定的单元格,但在函数退出时消失。
你能解释一下如何解决这个问题吗?
谢谢, 李
答案 0 :(得分:2)
为什么功能而不是Sub?函数用于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
如果以上仍然不起作用,那么
worksheet_Change
事件中是否有可能正在清除单元格的代码?courtesy @Mehow
:设置Application.ScreenUpdating = false
也无法显示数据。如果您要将活动设置为False
,请记得将其设置回True