2017-07-04 7 views
0

出力シートを生成して、このタイプのシートを処理する目的で作成された(C#)アプリケーションにドロップするマクロがあります。VBA/Excel - 選択してEnterキーを押すまでセルが空白として認識されない

基本的に、コードはマスターシートからシートの1つをコピーし、ユーザー生成の参照を使用して保存します。次に、シート内のすべてのセルをコピーして値として貼り付けます。

出力シートの2つの列には、数字のセルが空白でないセルと混在していて、文字もスペースも含まれていない(一般的な形式の)セルが散在しています。私が "IsBlank"式を使用すると、これらは "FALSE"を返します。しかし、問題のセルを手動でクリックして「Enter」を押すと、突然「真」の値が返されます。

私はこれらの列のすべてのセルを1つずつ選択してこれを解決することを検討していますが、これは犯罪的に非効率的です。

この問題の解決策がありますか?

答えて

0

ISBLANK式は「FALSE」を返すされていますが、入力+ F2を押すと、数式=>ワークブックの計算は、「手動」に設定されているかどうかを確認、その後、「TRUE」と同じを返し場合。

また、外部ソースからコピーされたデータには、Excelが頻繁に苦労する非改行スペースが含まれることがあります。あなたが経験しているかもしれない何

Sub refresh() 
    Dim r1 As Range, r2 As Range 
    Set r2 = Selection 
    For Each r1 In r2 
     r1.Select 
     Application.SendKeys "{f2}{enter}" 
     DoEvents 
    Next 
End Sub 
0

がゼロの長さ:

セルをクリックすると、作品唯一のものであるならば、あなたはこのようなコードブロックの小片を追加することができ、選択した範囲をリフレッシュwhich'll文字列。
""(例:= "")と評価され、値としてコピーされ貼り付けられた式の結果であった可能性があります。

私が理解しているように、マクロを使用しています。この場合、AutoFilterメソッド範囲オブジェクトを使用して、空白でないセルをすべて取得します。次のようなものがあります。

Dim r as Range 
Set r = Sheet1.Range("Your Range") '/* from your master sheet */ 

'/* Filter all non-blanks */ 
'/* First argument 1 depends on the column you want filtered */ 
'/* For this example it is column 1 of your range */ 
r.AutoFilter 1, "<>" 
r.SpecialCells(xlCellTypeVisible).Copy 
Sheet2.Range("Your Destination").PasteSpecial xlPasteValues 

希望します。

関連する問題