2016-11-06 6 views
0

1次元の配列をVariantとして定義してセルを塗りつぶします。この配列の3つの変数はすべてパブリック文字列変数です。時には変数がVbNullStringであり、そのように配列に入ります。VBA - Excelのセルに1dの配列が設定されていません。

残念ながら、VbNullString値に対応するExcelの空のセルを選択している間は、非空白としてカウントされ、IsBlank()関数はfalseを返します。 VBAのイミディエイトウィンドウからのチェックは、例えば、セルには何も検出されない:

?"check" & range("f4").Value & "character" 

結果は次のとおりです。「checkcharacter」

がどのように私は、これらの細胞が実際に空白にしてまで私のマクロでないで何かを変更するためにクリアすることができますそれらに人口を入れる?

Dim results As Variant 

results = Array(Company, Address, Phone) 

With WS 
    Range(.Cells(resultCounter, 1), .Cells(resultCounter, UBound(results) + 1)).Value2 = results 
End With 
+0

'?[f4]'または '?[f4] .Formula'をチェックします。 '= IsBlank()'関数は、セルが空でない場合にfalseを返します。質問はなんですか? – Slai

+0

どのようにこれらのセルを空白にして、最初にこれらのセルにマクロを挿入しない方法を見つけることができますか?これらのセルのIsBlankは、私が言及したようにfalseを返します。 –

+0

'ISBLANK()'は、VBAを使って 'vbNullString'にセットしたセルで' True'を返します。問題を再現するための一連の正確な手順で質問を更新すると役に立ちます。 –

答えて

0

は何をやっているのあなたの説明から、問題を再現することはできません:

Dim Company As String, Address As String, Phone As String 

Sub Tester() 

    Dim results As Variant 

    Company = "CpmpanyA" 
    Address = vbNullString 
    Phone = "555-1212" 

    results = Array(Company, Address, Phone) 

    With ActiveSheet 
     .Range(.Cells(20, 1), .Cells(20, UBound(results) + 1)).Value2 = results 
    End With 

    Debug.Print ActiveSheet.Evaluate("ISBLANK(B20)") '>> ###True### 

End Sub 
0

私は原因を発見しました。エラーは、マクロを実行する前にセルの書式がテキストに設定されている場合に発生します。私がGeneralに変更すると、空白にするセルは空白になります。マクロが実行された後にセルフォーマットを変更しても、この動作には影響しません。

また、私はVbNullStringのセル値の割り当てがText形式のセルでうまく動作することをテストしました。これはVariant型の配列でなければなりません。

カラムを選択するときに値の適切なカウンタを持ち、値が一般的なフォーマット設定ではいけないものに変換されないことを保証したいので、残念です。

関連する問題