返回列表 上一主題 發帖

[發問] 出現RUN-TIME ERROR '9': SUBSCRIPT OUT OF RANGE,請問哪裡出現問題?

請問vba left 用法

例如:
A1 儲存格   207171      如何知道A1儲存格內的第一個字是不是2字    if left(A1,1)= 2 then
A2儲存格    74171   如何知道A2儲存格內的第一個字是不是7     if left(A2,1)= 7 then
A3儲存格    OBL,OHC            如何知道A3儲存格內的第一個字是不是obl     if left(A3,3)= "OBL" then
這樣寫對嗎?

TOP

回復 1# 198188
  1. if left([A1],1)= 2 then
  2.     ' .......
  3. end if

  4. if left([A2],1)= 7 then
  5.     ' .......
  6. end if

  7. if left([A3],3)= "OBL" then
  8.     ' .......
  9. end if
複製代碼

TOP

回復 2# c_c_lai

另外請問如果是不含某個字的寫法
    ="<>""*OBL*"
         <>"*OBL*"
哪個才對,還是兩個都不對?

TOP

回復 3# 198188

dim vari
if not ( vari like "*OBL*") then
...
end if
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

本帖最後由 Hsieh 於 2012-12-17 22:21 編輯

回復 3# 198188

不包含某字串OBL
If Instr([A1],"OBL")=0 Then
字首為OLB
If Instr([A1],"OBL")=1 Then
學海無涯_不恥下問

TOP

本帖最後由 c_c_lai 於 2012-12-18 07:27 編輯

回復 3# 198188
與 Hsieh 大的 Instr() 有不同的表達方式, 與 Kimbal 版大的是同樣的意思,請參考!
  1. Sub Test5()
  2.     If Not [A1] Like "*OBL*" Then   '  [A1] = "ABCDEFG"
  3.         [B1] = "Not *OBL*"
  4.     Else                            '  [A1] = "ABCODLDE"
  5.         [B1] = "I Got it!"
  6.     End If
  7. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-12-18 09:43 編輯

回復 6# c_c_lai
  1. VAB的說明

  2. Boolean 資料型態
  3. Boolean 變數係以 16 位元( 2 個位元組)數字的形式儲存,但只能是 True 或是 False。Boolean 變數的值不是 True 就是 False ( 在使用 Print 的時候 ),或是 #TRUE# 和 #FALSE# ( 在使用 Write # 的時候 )。使用關鍵字 True 與 False 可將 Boolean 變數指定為這兩個狀態中的一個。
  4. 當轉換其他的數值型態為 Boolean 時,0 會轉成 False,而所有其他的值則變成 True。當轉換 Boolean 值為其他的資料型態,時,False 成為 0 ,而 True 成為 -1。

  5. If .[運算式條件]..Then...Else 陳述式  其[運算式條件]之運算結果為 True 或 False
  6. True 或 False 是 Boolean 資料型態
複製代碼
  1. Sub Ex()
  2.     Dim Vari
  3.     Vari = "oBL"
  4.     '三個式子的運算結果都一樣的 Boolean 資料型態
  5.     'If Vari Like "*OBL*" = False Then
  6.     'If Vari Like "*OBL*" = 0 Then
  7.     If Not Vari Like "*OBL*" Then
  8.         MsgBox Vari & " 不包含 : * OBL * "
  9.     End If
  10. End Sub
複製代碼
  1. Sub Ex1()
  2.     Dim Vari As String
  3.     Vari = "AOBL"
  4.     MsgBox InStr(Vari, "OBL")
  5.     If InStr(Vari, "OBL") Then  '運算結果是 Boolean 資料型態
  6.     'If InStr(Vari, "OBL") > 0 Then
  7.         MsgBox Vari & " 包含 : * OBL * "
  8.     End If
  9. End Sub
複製代碼

TOP

回復 7# GBKEE
感謝 GBKEE 版大的附加說明。

TOP

回復 1# 198188


    Sub oag()
    If InStr(Cells(1, 1), "2") = 1 Then
        [b1] = "2" & "在第一個"
    Else
        [b1] = "2" & "不是在第一個"
    End If

End Sub

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 7# GBKEE

請問這句話是不是有問題?type mismatch?
    .Range("D2:D" & LastRec).Value = .Range("AA2:AA" & LastRec).Value  &  .Range("AH2:AH" & LastRec).Value

TOP

        靜思自在 : 心中常存善解、包容、感思、知足、惜福。
返回列表 上一主題