2015-04-22 66 views
0

如何獲取以空格開頭並以*結尾的字符長度這裏是圖片。列B顯示了短跑運動員前的總LEN( - )和我的代碼計算兩個空格之間的字符以破折號()vba

enter image description here

Sub xn() 
    Dim x As Integer 
    x = 1 
    If Worksheet("Sheet1").Range("A"& x).len(Right," ") Or _ 
    Worksheet("Sheet1").Range("A"&x)len(Left,"-") Then 
     len(totallen) 
    End If 
    x = x + 1 
End Sub 
+0

你的屏幕截圖不是很豐富。至於你的代碼,它有很多問題。請發佈一個更好的屏幕截圖和您需要的實際結果。 – L42

回答

1

發佈的代碼有多個問題:

  1. Worksheet是不是有效的對象 - 你需要使用Worksheets
  2. .len不是Range對象的屬性。
  3. 即使在.len是一個範圍的屬性,你需要一個 解引用操作符(又名「」)在這裏:Range("A"&x)len(Left,"-")
  4. 如果您打算使用功能Len(),只需要一個參數。
  5. 您顯然正在嘗試循環,但您需要使用For For 或For Each循環 - 當您在子的底部增加x 時,它不會自動循環。
  6. Right是一個函數,但是你沒有參數地調用它,它們不是可選的。
  7. 同樣,Left是一個函數,但你也調用它沒有 所需的參數。
  8. totallen不被任何聲明,所以Len(totallen)將承擔 是totallen是一個變量(默認爲未聲明的變量),然後 其轉換爲字符串,然後總是返回0,因爲它從來沒有 被賦予了價值。
  9. 其他我可能錯過了。

解決方法是使用InStr function。它返回給定子字符串的字符串中的位置。

Sub xn() 

    Dim x As Long 
    Dim sheet As Worksheet 

    Set sheet = ActiveWorkbook.Worksheets("Sheet1") 
    For x = 1 To sheet.Range("A" & sheet.Rows.Count).End(xlUp).Row 
     sheet.Cells(x, 2) = InStr(1, sheet.Cells(x, 1), "-") - 1 
    Next x 

End Sub 

我也建議考慮看看MSDN文章上Looping Through a Range of Cells(2003年份,但仍然有效),並Error Finding Last Used cell In VBA

+0

@Comintem謝謝你的工作正常,但你能解釋我的第二行請什麼-1,你是從0或1開始我看到破折號,但起點在哪裏 – user3713336

+0

@ user3713336 - InStr是1基於,所以第一個參數是從單元格中的第一個字符開始。它返回你正在搜索的位置,所以爲了得到一個字符數,你必須減去1.例如,'xxxx-xxxx'會返回5,因爲' - '是第5個字符。 – Comintern

相關問題