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 ReadTxtFile()
   PrepareSpreadSheet
End Sub

これを実行しても何も起こりません。デバッグすると、指定したセルにテキストが入力されていることがわかりますが、関数が終了すると消えます。

これを修正する方法を説明していただけますか?

ありがとう、リー

4

1 に答える 1

2

なぜ Sub ではなく Function なのですか? 関数は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 に答える