2017-04-26 43 views
0

我不熟悉編碼,我正在嘗試在店內爲我的小吃小屋設置一個簡單的POS。代碼的作品,但我有很多項目出售。我有主線宏定位按鈕,即時通訊只是想知道是否有方法從cs輸入結果到.Range()這樣我不必在每行中手動更改代碼,而不是有一個代碼將自行定位按鈕並自動選擇單元格並輸入其值。Excel單擊銷售表單按鈕

Sub btn1_Click2() 
Static value As Integer 
value = value + 1 
'Mainlineup Macro 
Dim b As Object, cs As Integer 
Set b = ActiveSheet.Buttons(Application.Caller) 
With b.TopLeftCell 
cs = .Row 
End With 
Worksheets(1).Range("D$").value = value 
End Sub 

回答

0

很好的努力!這應該有助於你開始考慮細胞及其價值。每個細胞都是一個「範圍」,但不是 - 通過嘆息 - 每個細胞都是一個細胞。

首先將保留字「Value」的使用指定給Excel。如果您使用同一個詞來標識您的一個變量,那麼您和Excel都會出現混淆。 Excel中會有無法解釋的「錯誤」。

Range("D$")未定義單元格,因爲單元格同時具有行和列。該術語將引發錯誤,這是可預測的,因爲術語既沒有定義範圍也沒有定義單元格。

當您在VBA中定義單元格時,我建議您使用行&列來定義它,如ActiveSheet.Cells(3, 5)這是工作表中的「E3」。 VBA的確瞭解ActiveSheet.Range("E3")。所以真正的問題是你是否做。一旦使用行&開始操作單元格和範圍,列更容易計算,因爲計算數字比名稱更容易。

不幸的是,我不明白你的意圖。但是,通過爲單元格的Value屬性賦值,您正處於正確的軌道上。您還可以將值分配給一個範圍的Value財產,但Range("D:D").Value = 4將相同的值分配給每一個細胞中列D.

也許這是你腦子裏想的是什麼。 Worksheets(1).Range("D" & Cstr(cs))).Value = value。我會這樣寫:Worksheets(1).Cells(cs, 4).Value = value。也許Worksheets(1).Cells(cs, "D").Value = value將是一個妥協。

爲了以防萬一,我指出b.TopLeftCell是一個單元格(因此也是一個範圍),因此具有Value屬性。像Worksheets(1).Cells(cs, 4).Value = b.TopLeftCell.Value這樣的代碼將是完全合法的,並按照您的期望執行它的外觀。

+0

我非常感謝您的幫助。我其實有.Range(「D2」)。該按鈕使用我的代碼完成了它的工作。我只想要一個適用於所有按鈕的宏。感謝你的幫助,我完成了這一點。我結束了的代碼重寫到: –

+0

'子btn1_Click2()'' 靜態值作爲Integer' '」 Mainlineup Macro' '昏暗b以對象,CS作爲Integer' '集合B = ActiveSheet.Buttons(應用。呼叫者)'' 隨着b.TopLeftCell'' CS = .Row'' 結束With' '值=工作表(1).Cells(CS,5)。價值+ 1' '工作表(1).Cells (cs,5).value = value' 'End Sub' –