2008-11-02 166 views
7

我正在編寫一個快速應用程序 - 第一個項目,但是我試圖找到用於將輸入字符串的結果寫入Excel中的命名單元格的VBA代碼。VBA Excel宏將輸入整數寫入單元格

例如,一個輸入框提出問題「您想要將哪個工作號碼添加到列表中?」......然後用戶將輸入參考號碼,例如「FX1234356」。宏然後需要將這些信息寫入一個單元格中,然後我可以使用它來完成宏(基本上是在某些數據中進行搜索)。

+2

問題標題具有誤導性。你的輸入不是一個整數。 – 2008-11-02 19:37:16

回答

10

您可以使用VBA中的Range對象設置命名單元格的值,就像任何其他單元格一樣。

Range("C1").Value = Inputbox("Which job number would you like to add to the list?) 

其中「C1」是要更新的單元格的名稱。

我的Excel VBA有點老舊,所以在更新版本的Excel中可能會有更好的方法。

+0

你剛剛打敗了我;) – JimmyJ 2008-11-02 19:34:41

0

我用一個包含TextBox的表單完成了這種事情。

所以,如果你想要把這個說細胞H1,然後使用:

ActiveSheet.Range("H1").Value = txtBoxName.Text

4

我建議總是使用已命名範圍(如你建議你在做),因爲如果任何列或行被添加或刪除時,名稱引用將更新,而如果您在VBA中硬編碼單元格引用(例如,其中一個響應中建議的「H1」),則它不會更新並且將指向錯誤的單元格。

所以

Range("RefNo") = InputBox("....") 

是較安全

Range("H1") = InputBox("....") 

您可以設置多個單元格的值了。

Range("Results").Resize(10,3) = arrResults() 

其中arrResults是至少10行& 3列(並且可以是任何類型的)的陣列。如果你用這個,把這個

Option Base 1 

在VBA模塊的頂部,否則VBA將承擔數組從0開始,把空白的第一行和列的表。此行使所有數組從默認開始(這在大多數語言中可能不正常,但對電子表格很適用)。

1

當要求用戶使用InputBox method放入單元格的響應時,通常會發生三件事情可能發生¹。

  1. 用戶鍵入內容並點擊確定。這是你期望發生的事情,你將接收到可以直接返回到單元格或聲明變量的輸入。
  2. 用戶點擊取消,按壓Esc鍵或點擊×(關閉)。返回值是布爾型False。這應該被解釋。
  3. 用戶確實不是鍵入任何東西但點擊確定不管。返回值是一個零長度的字符串。

如果您將返回值放入一個單元格中,您自己的邏輯流將決定您想要對後兩種情況執行什麼操作。您可能想要清除單元格,或者您可能想要單獨保留單元格內容。以下是如何處理變量類型變量和Select Case statement的各種結果。

Dim returnVal As Variant 

    returnVal = InputBox(Prompt:="Type a value:", Title:="Test Data") 

    'if the user clicked Cancel, Close or Esc the False 
    'is translated to the variant as a vbNullString 
    Select Case True 
     Case Len(returnVal) = 0 
      'no value but user clicked OK - clear the target cell 
      Range("A2").ClearContents 
     Case Else 
      'returned a value with OK, save it 
      Range("A2") = returnVal 
    End Select 

¹有當使用的InputBox method特定類型的第四方案。一個InputBox可以返回一個公式,單元格範圍錯誤或數組。這些是特殊情況,需要使用非常特定的語法選項。請參閱提供的鏈接瞭解更多信息

相關問題