2012-10-30 119 views
1

這是一個冗長的查詢,因爲我包含失敗的代碼。宏不會刪除所有空白單元格

問題:當我完成將文本文件導入爲excel時,我的工作表包含一些「空白」單元。我已經在其他地方成功地使用了下面的代碼,但這次它不適合我。

Range("b1:AZ60").Select 
Selection.SpecialCells(xlCellTypeBlanks).Select 
Selection.Delete shift:=xlToLeft 

我搜索了網頁,發現了一些建議的解決方案(如下)。我試過在上面的代碼之前運行下面4個代碼段的每一個,以清除所謂的空白單元格的內容,但到目前爲止沒有任何工作。

Number 1 -------------------------------------------- -------------

Set rng = Intersect(Selection, Selection.Parent.UsedRange) 

For Each C In rng 
    If Trim(C) = "" Then 
    C.ClearContents 
    End If 
Next C 

我已經更換了微調以上c.value但沒有

If C.Value <> "" Then 

2號-------- ------------------------------------------

For Each aCell In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants) 
    If Not aCell.Value Like "*[! ]*" Then aCell.ClearContents 
Next 

Number 3 ------------------------------------------- ------

For Each C In rng 
    If IsEmpty(C) Then 
    C.Delete shift:=xlToLeft 
    Else 
    ActiveCell.Select 
    End If 
Next C 

4號----------------------------------- ---

最後我發現這個乾淨的功能,但這似乎並沒有伎倆。

Set rng = Intersect(Selection, Selection.Parent.UsedRange) 

For Each C In rng 
    If Not IsError(C) Then 
     C.Value = MEGACLEAN(C) 
    End If 
Next C 
       ' 
       ' 
       ' 
End Sub 
----------------------------------------- 
Function MEGACLEAN(varVal As Variant) 
Dim NewVal As Variant 
If IsMissing(varVal) Then Exit Function 
NewVal = Trim(varVal) 'remove spaces 
NewVal = Application.WorksheetFunction.Clean(NewVal) 'remove most unwanted characters 
NewVal = Application.WorksheetFunction.Substitute(NewVal, Chr(127), "") 'remove 
ASCII#127 
NewVal = Application.WorksheetFunction.Substitute(NewVal, Chr(160), "") 'remove 
ASCII#160 
MEGACLEAN = NewVal 
End Function 

也許這是值得做的,我從導入的文本文件,但這些都沒有滿意的工作,因爲我仍然有一些空白單元格。任何幫助將非常感激!!

+1

你可以發佈你的文本文件的樣本嗎? –

+0

或包含「空白」單元格的excel文件的示例 – nutsch

+1

或者您是否嘗試過進入任何空白單元格以查看導致它們顯示空白但不是的字符? –

回答

0

不知道如果我應該任何回答我的問題是這樣,但我的代碼,我上面有位搞砸周圍,並用mcaro我發現混合,並用下面的代碼上來這很慢,但它似乎爲我做了詭計。感謝所有的輸入!

Set rangetext = Cells.SpecialCells(_ 
xlCellTypeConstants, _ 
xlTextValues) 
For Each rangesheet In rangetext 
If Trim(rangesheet.Value) = "" Then 
rangesheet.ClearContents 
End If 
Next 
Set rangetext = Nothing 
Set rangesheet = Nothing 




Range("b1:AZ60").Select 
Set rng = Intersect(Selection, Selection.Parent.UsedRange) 
For Each C In rng 
    If IsEmpty(C) Then 
    C.FormulaR1C1 = "=0" 
    If C.Value = 0 Then 
    C.ClearContents 
    C.Select 
    Selection.SpecialCells(xlCellTypeBlanks).Select 
    Selection.Delete shift:=xlToLeft 
    End If 

    End If 
Next C 
0

找出你在這些「空白」單元中有哪些字符。

選擇一個單元格,並運行下面的GetSelectionContents宏:

Sub GetSelectionContents() 
MsgBox sAnalyseString(selection) 
End Sub 

Function sAnalyseString(sSTR As String) As String 
Dim lLoop As Long, sTemp As String 

For lLoop = 1 To Len(sSTR) 
    sTemp = sTemp & ", " & Asc(Mid(sSTR, lLoop, 1)) 
Next 

sAnalyseString = Mid(sTemp, 2) 

End Function 

然後,一旦你有你的神祕人物,運行您刪除宏之前更換。

Activesheet.usedrange.Replace What:=chr(32), Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False

+0

Chip Pearson在他的網站上有一個名爲[CellView](http://www.cpearson.com/excel/cellview.aspx)的有用插件,它將標記字符 – brettdj

+0

Hi @nutsch。我試過你的代碼。 Msgbox沒有報告任何細胞和一系列的32個爲其他人。 32我發現是一個空間的ASCII符號。我認爲trim函數可以處理空格嗎? – Brackers