2016-02-17 50 views
0

我試圖在Excel中一個簡單的預算,我希望有一個宏觀,看哪一類我已經做了修改,然後添加變更的錢的總體概述用於該類別。更改值

這就是我在我的片類「食品」細胞的頂部。 再往下看,我放入以下內容: 日期;類別;金額使用。

我的代碼已經被使用一個按鈕,直到now.The按鈕,檢查小區5位到左側的值爲「Dagligvare」,然後在薄片其他地方變化的值。 我的問題是,有時候Button會識別這個詞,有時它不會。所以我的問題是:任何人都可以看到爲什麼它只有有時即使我沒有改變任何東西?

Private Sub CommandButton1_Click() 
    Dim celltxt As String 
    celltxt = ActiveCell.Offset(0, -5).Text 
    If InStr(1, celltxt, "Dagligvare") Then 
     Range("C9") = 3 
    Else 
     MsgBox ("Nope") 
    End If 
End Sub 
+1

你被偏移定義單元格的正確activecell;這意味着它是相對於活動單元計算的。按下按鈕之前,你確定你總是在正確的單元格上嗎? –

+0

你知道'InStr()'默認是區分大小寫嗎?因此'Dagligvare'和'dagligvare'會得出不同的結果 –

+0

考慮'Worksheet_Change'事件,這將觸發每次您在工作表中的變化的時間,但也可以在只有某些細胞發生變化僅限於射擊。或者考慮一個簡單的公式「IF」聲明並完全廢除VBA(說不知道你的努力的全部範圍)。 –

回答

1

你可以添加一個進一步的msgbox,以確保用戶有

Private Sub CommandButton1_Click() 
    Dim celltxt As String 

    if (activecell.column = 10) then '<<change 10 to appropriate column 

     celltxt = ActiveCell.Offset(0, -5).Text 
     If InStr(1, celltxt, "Dagligvare") Then 
      Range("C9") = 3 
     Else 
      MsgBox ("Nope") 
     End If 
    else 
      MsgBox ("Oi! You need to have a cell in column 10 selected") 
    end 

End Sub