私は、Excel として唯一のソフトウェアとして、私の職場で在庫システムを作成しようとしています。基本的に、修理と使用部品を入力する作業指示書があります。挿入された部品番号と説明を個々の作業指示書から引き出して、使用されているすべてのものを追跡するコードを作成しましたが、上司は、何かの名前/部品番号を入力し始めることができるシステムを作成することを望んでいます。推測するか、記入してください。したがって、コンボボックスの出番です。
私はそれをある程度まで機能させました。リストには部品の在庫が取り込まれます (マスターの EXTNERAL ファイルのリストがあります) が、私の問題は次のとおりです。
ユーザーフォームの「部品追加」をクリックすると、作業指示書の特定の範囲に部品を追加する方法がわかりません。私がフォローしているすべてのチュートリアルhereおよびhereは、列の順序でパーツを追加するように設定されているだけです. 誰かが私の(ひどい、ごめんなさい)コーディングを見て、彼らが助けることができるかどうかを確認できますか?
Private Sub UserForm_Initialize()
Dim cPart As Range
Dim cNum As Range
Dim ws As Workbook
'Dim ComboBox1 As Variant
Application.ScreenUpdating = False
Set ws = Workbooks.Open("\\Capserver\iso maintenance\CAPS MASTER PARTS & PRICE LIST 2012.xls")
Windows("CAPS MASTER PARTS & PRICE LIST 2012.xls").Visible = False
'ws.Sheets("CAPS ORDER FORM").Range("Name") = Sheet1.ComboBox1
'ComboBox1.Clear
For Each cPart In ws.Sheets("CAPS ORDER FORM").Range("Name")
With Me.cboPart
.AddItem cPart.Value
End With
Next cPart
For Each cNum In ws.Sheets("CAPS ORDER FORM").Range("Number")
With Me.cboNum
.AddItem cNum.Value
.List(.ListCount - 1, 1) = cNum.Offset(0, 1).Value
End With
Next cNum
End Sub
Private Sub cmdAdd_Click()
Dim lRow As Range
Dim lPart As Long
Dim ws As Worksheet
Dim something As Variant
Dim box As Object
Set ws = Worksheets("Sheet2")
With Worksheets(1).Range("A1:a500")
Set lRow = .Find(What:="", SearchOrder:=xlRows, SearchDirection:=xlNext, LookIn:=xlValues)
End With
'Set lRow = Range("A1")
' If VBA.IsEmpty(lRow.Value) Then
' MsgBox ("POOP!")
' Else
' Set box = lRow.End(xlDown)
' End If
'lRow = Worksheets("Sheet2").Range("A33:A37")
'ws.Cells.Find(What:="*", SearchOrder:=xlRows, (From tutorial, always returned lRow = Nothing)
' SearchDirection:=xlPrevious, LookIn:=xlValues).Row 1
lPart = Me.cboPart.ListIndex
'check for a part number
If Trim(Me.cboPart.Value) = "" Then
Me.cboPart.SetFocus
MsgBox "Please enter a part name or number"
Exit Sub
End If
'copy the data to the database
'use protect and unprotect lines,
' with your password
' if worksheet is protected
With ws
' .Unprotect Password:="password"
.Cells(lRow, 1).Value = Me.cboPart.Value
.Cells(lRow, 2).Value = Me.cboPart.List(lPart, 1)
.Cells(lRow, 3).Value = Me.cboNum.Value
' .Cells(lRow, 4).Value = Me.txtDate.Value
.Cells(lRow, 5).Value = Me.txtQty.Value
' .Protect Password:="password"
End With
'Combobox1.linkedcell=C4
'clear the data
Me.cboPart.Value = ""
Me.cboNum.Value = ""
Me.txtQty.Value = ""
Me.cboPart.SetFocus
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
目標は、「パーツの追加」ボタンをクリックして複数のファイルを追加し、それを作業指示書に出力できるようにすることです (パーツの範囲は A33:A55 または同様のものだと思います)。
また、入力したものに応じて、パーツ名とパーツ番号の両方をユーザーフォームに依存させる方法があるかどうかも知りたいです。それは優先順位が低いですが。