2013-12-21 123 views
0

基本上,我想合併來自兩個單元格的值,然後在單擊按鈕後將其顯示在另一個新單元格中。棘手的部分是每當我輸入一個新的值時,它應該顯示在下一行。例如,我將結合A1和B1的值並傳遞給C1。下次我再次輸入A1和B1時,新值應該傳遞給C2。 這裏是我寫的代碼:在Excel中結合並傳遞單元格中的值VBA

Private Sub CommandButton2_Click() 

Dim count As Integer 
Dim rowNo As String 
Dim val As String 
Dim val2 As String 
Dim sum As String  

count = 1 
rowNo = "C" + CStr(count) 

If (Range("A1") <> "" And Range("B1") <> "") Then  
val = Range("A1") 
val2 = Range("B1")  
sum = val + "/" + val2  
Worksheets("Sheet1").Range(rowNo).Value = sum 
count = count + 1 
End If 

End Sub 

我是新來的Excel VBA中,上面的代碼只在A1寫值,它沒有去下一行,當我重新輸入值,誰能幫我解決這個?

+0

當您將這些值與'sum = val +「/」+ val2'組合起來時,結果可能會自動被視爲日期,並且目標單元格會相應地進行格式化。您可能必須採取明確行動來防止/恢復此操作。 –

回答

1

除了回答您的具體問題,我會在你的代碼添加了一些(希望有用)的意見。

  1. 是很方便的完全限定的範圍,例如,使用Worksheets("Sheet1").Range代替Range,見this explanation

  2. 要選擇Range,您可以使用直接尋址(如克里斯尼爾森的評論中所述)或其他選項,如Offset,這裏可能很方便。

  3. 看來,你的代碼將總是去同一個目標小區rowNo C1,因爲count重置爲1。你必須讓你的Sub知道在哪裏放置的結果,這是關鍵。我猜最安全的選擇是讓工作表中的一個單元格包含該信息,並讓您的Sub閱讀它。如果您知道列C只包含您想要的結果,並且該數據將在那裏連續存在,那麼您可以使用下面的代碼,這裏代表所有項目。

  4. 它往往是方便的是限定一個可變用於使用作爲參考,例如,Dim rng as RangeSet rng = Worksheets("Sheet1").Range...下面

代碼應該工作。

Private Sub CommandButton2_Click() 
    Dim val As String 
    Dim val2 As String 
    Dim sum As String 
    Dim rng As Range 
    Dim ws As Worksheet 
    Set ws = Worksheets("Sheet1") 
    With Worksheets("Sheet2") 
     If (IsEmpty(.Range("C1"))) Then 
     Set rng = .Range("C1") 
     Else 
     ' There are other options to find the last cell 
     Set rng = .Cells(.Rows.count, "C").End(xlUp).Offset(1, 0) 
     End If 
     If (ws.Range("A1") <> "" And ws.Range("B1") <> "") Then 
     val = ws.Range("A1") 
     val2 = ws.Range("B1") 
     ' Added ' to prevent sum being converted into a date 
     'sum = "'" + val + "/" + val2 
     sum = "'" & val & "/" & val2 
     rng.Value = sum 
     End If 
    End With 
End Sub 

PS:根據工作表內容的不同,選擇目標範圍的方式也有所不同。

+0

太棒了!我學到了新東西,非常感謝!順便說一句,如果我想要檢索sheet1中的A1和B1並將其顯示在C1中,我應該怎麼做?我認爲我需要把所有的表格都定義好,而不是在聲明之後定義它? – user1805430

+0

嗯,我想我明白了!無論如何,祝你有美好的一天! – user1805430

+0

@ user1805430 - 請檢查更新的代碼。您可以在Sheet1上使用「With ...」並明確指定Sheet2(例如,使用'ws')。 –

0

嘗試

Worksheets("Sheet1").Range(rowNo).Value = sum 
+0

Thx,它現在可以工作〜但是,當我重新輸入單元格中的值時,它不會進入下一行......你知道爲什麼嗎?我只是意識到,每次當我點擊按鈕,它會通過「計數= 1」..有沒有其他辦法可以避免這種情況? – user1805430

+1

當我重新輸入單元格中的值時,_it不會進入下一行._它爲單元格寫入值,故事結束。如果你想改變活動選擇,寫更多的代碼。提示:'範圍(「你的範圍」)。選擇' –

+0

是的。我會盡力! thx反正 – user1805430