2017-06-25 12 views
-1

Excel 2007でvba経由で範囲(N6:N125)のテキストを自動入力しようとしています。範囲が単一のセルを参照していて範囲を参照していない場合、私のコードはうまく動作します。私の間違いを見つけるのを助けることができますか?私のコードは、これは仕事をしていませんExcel 2013の範囲内の特定のテキストを自動入力

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

答えて

1
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 
1

:空の場合

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 

このコードは、あなたの選択の各セルをテストしますと、それに "My Text"を書きますが、空でなければそれをスキップします。あなたのコードで

あなたは、各セルをテストされていないとあなたがN125といくつかをにのみN6を空のセルを塗りつぶしたい場合は、一つのセルから別の

2

に移動するためにループを使用していませんセルの値がすでに値を持っていても式がない場合は、実際にはループは必要ありません。

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 
関連する問題