2014-03-14 41 views
-2

我試圖找到更新已從其他Excel源中部分填充的「主數據」表內更新信息的最佳方法。VBA用戶窗體更新已部分填充的數據行

我有從其他數據表中購買的所有信息,但會有一些手動輸入,所以當我的用戶來到並查看錶單時,我希望整個表單被鎖定,並且只能使用表單(爲了避免「人爲錯誤'哈哈)。

由此我希望表單能夠從下拉列表中看到單元格A/B/C中的名稱/唯一編號,然後能夠「填寫」其他列。

例如:

細胞A1 = 01100 細胞B1 =鮑勃史密斯

形式需要看到任一這些細胞從下拉POV,然後我可以具有內的所有其他信息形成。我可以做所有這些,但我只需要知道你是如何做下拉菜單,然後能夠'足夠聰明'來找到名稱和輸入數據到正確的行(使用示例,表單將需要如果約翰史密斯從下拉列表中選擇,填寫C1/D1)。

我知道我要求提高技能,所以即使您能指出我會朝好的方向發展。

JB

+0

您可以使用'.Find Range method'來查找列中的數字/名稱。然後使用'.Offset Range method'來評估它的鄰近單元格。嵌套的「If」就足以進行評估。如果滿足所有條件,那麼就是使用'.Offset Range方法'再次在指定單元格上寫入日期的時間。 – L42

+0

嘿L42, 試圖避免使用Find方法,如果我可以幫助它,因爲我希望它顯示兩列內的'設置'數據。我發現如何製作一個組合框顯示兩列(http://www.excel-easy.com/vba/examples/multicolumn-combo-box.html),並且我有RowSource數據顯示一列,但我需要能夠在代碼中引用此內容。 – JamieB

回答

1

什麼我評論給你的東西開始簡單的例子:

Dim searchRange As Range 
Dim foundCell As Range 
Dim mysearch As String 

mysearch = me.TextBox1.Value 'assuming you get info from a textbox say the id number 

Set searchRange = Thisworkbook.Sheets("YourSheetName").Range("A1:A10") 'change to suit 
Set foundCell = searchRange.Find(what:=mysearch, after:=searchRange.Cells(searchRange.Cells.Count)) 

If Not foundCell Is Nothing Then 'check for the id 
    If foundCell.Offset(0,1).Value = me.TextBox2.Value Then 'check for the name 
     foundCell.Offset(0,2).Value = me.TextBox3.Value 'write on C1 
     foundCell.Offset(0,3).Value = me.TextBox4.Value 'write on D1 
    Else 
     MsgBox "Name does not exist." 
    End If 
Else 
    MsgBox "ID does not exist." 
End If 

這只是一個簡單的演示。
仍然需要大量的改進,如額外的驗證,錯誤處理和其他東西。
希望這可以幫助你一點。
要了解更多關於.Find Range Method的信息,您可能需要查看THIS
真的很簡單的解釋。

編輯1:

Dim soureRange As Range, myList As Variant 

Set sourceRange = Range("A1:B10") 
myList = Application.Transpose(sourceRange) 

Me.ComboBox1.List = myList 

沒辦法測試大氣壓,所以給東郡嘗試。

+0

感謝您的回覆,信息來自一個組合框提供的'下拉菜單',我無法工作:),我測試了你的代碼,它會工作,但我需要'手動添加'部分從組合框中收集數據。
例如,我已將'RowSource'添加到用戶窗體(UploadSheetTest!A:B),我需要在下拉列A和B中顯示 我已經找到了如何將信息分成兩列,但我不能爲我的生活獲取我想要顯示在列 http: //www.excel-easy.com/vba/examples/multicolumn-combo-box.html 有什麼想法? – JamieB

+0

基於你提供的鏈接,你需要傳遞一個'array list'到組合框。所以你需要首先將範圍傳遞給數組。看我的編輯。 – L42

相關問題