2014-09-16 4 views
-1

VBA에서 범위를 반복하고 모든 셀의 텍스트의 마지막 문자를 삭제하려고합니다. 다음과 같이루프 마지막 문자 삭제

나는 셀에 텍스트의 마지막 문자를 삭제하는 코드를 이해 : 을 MyString = 왼쪽 (mystring에, 렌 (mystring에) - 1) 나는 이것이에서 작동하도록 노력하고 있어요 그러나

for 루프와 난 그냥 오류 메시지 개체가 필요합니다. 그것의 아마도 뭔가 분명 나는 실종입니다.

Dim rngh As Range, cellh As Range 
Dim myString As String 
Set rngh = Range("H1:H500") 
For Each cellh In rngh 
    myString = cellh.Text 
    myString = Left(myString, Len(myString) - 1) 
Next cellh 

감사 :

여기 For 루프 내 코드입니다.

+0

'rngh' 란 무엇입니까? 'Rng'입니까? –

+0

rngh는 내가 가고 싶은 할당 된 범위의 변수 이름입니다. – Lancealott92

+0

그래서 내 생각은 범위에서 셀을 선택합니다. 해당 셀의 텍스트를 선택하십시오. 그런 다음 마지막 문자를 제거하십시오. – Lancealott92

답변

2

가 느려집니다 나는 한 번에는 .text 또는 루프 하나 개의 셀을 사용하지 것이다 - 배열을 사용하십시오 :

Dim vData 
Dim n      As Long 
vData = Range("H1:H500").Value 
For n = 1 To UBound(vData, 1) 
    If Len(vData(n, 1)) <> 0 Then vData(n, 1) = Left$(vData(n, 1), Len(vData(n, 1)) - 1) 
Next n 
Range("H1:H500").Value = vData 

예를 들면.

+0

완벽하게 작동합니다! 앞으로 더 자주 배열을 사용할 것입니다! – Lancealott92

0

설정 라인에 오류가 있습니다. 나는

Set rngh = Range("H1:H500")

해야한다고 생각하지만 빈 문자열을 단축하려고 할 때 예외가있을 것입니다. 그것은이 작업을 수행 할 수 있다면 당신은 시도

myString = cellh.Text 
If Len(myString) > 0 Then 
    myString = Left(myString, Len(myString) - 1) 
End If 
+0

글쎄, 아직 작동하지 않지만 그냥 오타되었습니다 : ( – Lancealott92

+0

죄송합니다, 빈 문자열에 대한 체크를 잊어 버렸습니다 .. :) –

0

처럼 .. 다음 코드

Private Sub Workbook_Open() 
    Dim rngh As Range, cellh As Range 
    Dim myString As String 
    Set rngh = Range("H1:H500") 
    For Each cellh In rngh 
     If Not IsEmpty(cellh) Then 
      myString = cellh.Text 
      myString = Left(myString, Len(myString) - 1) 
      cellh.Value = myString 
     End If 
    Next cellh 
뭔가를 확인해야합니다