2017-07-19 23 views
0

我正在嘗試做一些重命名操作,如果最後3個字符= pdf,我不想讓代碼運行。應該很簡單,但是當我運行宏時,重命名工作正常,但它會刪除以pdf結尾的每個單元格。在不以「PDF」結尾的單元上運行代碼

SearchChar = "pdf" 

For Each bCell In rng.Cells 
Select Case Len(bCell) 
Case 2 
    If Right(bCell, 3) <> SearchChar Then 'This must be wrong 
     val = SearchSite & Left(bCell, 1) & "00" & Mid(bCell, 2, 1) & "1.pdf" 
    End If 
End Select 
bCell.Value = val 
Next 
+3

'Case 2'看起來很可疑,因爲一個單元格包含'「pdf」'它的len必須大於或等於3. –

+0

因此,我要求excel確定LEN,因此它可以運行公式來更改它從簡單的名稱到實際的文件名。例如'A1應該變成173A0011.pdf' –

+1

如果單元格長度<> 2,你的'Case 2'塊的主體將永遠不會執行。因此,你需要確定塊應該在什麼條件下執行,並修改你的'Case'或者添加一個不同的'Case'語句來說明這個條件。 –

回答

1

您可以嘗試這樣的重命名選擇的項目不是「PDF」結尾

Set rng = Selection 
SearchChar = "pdf" 
Select Case n 
    Case 2 
     For Each r In rng 
      If Right(r, 3) <> SearchChar Then 'This must be wrong 
       r = SearchSite & Left(r, 1) & "00" & Mid(r, 2, 1) & "1.pdf" 
      End If 
     Next 
End Select 
1

您是否嘗試過改變你的if語句,以檢查是否正確的3個字符是PDF,然後在「一無所有」否則你的代碼?將類似於:

If Right(bCell,3)=SearchChar Then 
'Nothing 
Else 
val = SearchSite & Left(r, 1) & "00" & Mid(r, 2, 1) & "1.pdf" 
bCell.Value=val 
End If 

我的猜測是,在最後3個字符是PDF,VAL =什麼都沒有,所以什麼是打印出來是bCell.Value =什麼都沒有,所以它刪除。我把它移入了else部分。

+0

這讓我走上了正軌 'If LCase(Right(bCell,3))= SearchChar Then val = bCell Else' Inserted this in在每個案例陳述下。 –

+0

@MattTaylor很高興爲您效力! – Cyril