|
こんにちは
うくれれさん
こんばんはかな?
登録・変更・削除の
下記コードを試してみてください。
ボタン等が複雑そうなので、TextBox 1・2・3だけで作成しています。
TextBox等うくれれさんの環境に合わせて下さいね。
>myLID = ListBox1.ListIndex + 4
なので 3行目に見だし、4行目からデータとしています。
また見出しはA列からにしています。
たぶん、最後の列がCXになるのでB列から見出しがあるのだと思いますが・・・
B列から見出しがあるのなら、私が思っているボタン等の配置は合っていると思うのですが・・・
登録・変更・削除があるので
Private Sub S_LIST()
・
・
End Sub
を追加しました。
'----------------------------------
Option Explicit
Dim myCHE As Boolean
'----------------------------------
Private Sub UserForm_Initialize()
'-----フォーム初期設定-----
Dim f As Long
With ListBox1
.ColumnCount = 3
.ColumnWidths = "80;80;50"
End With
Call S_LIST 'リスト表示
For f = 1 To 3
Controls("TEXTBOX" & f).Value = ""
Next
End Sub
'----------------------------------
Private Sub ListBox1_Click()
'-----リスト選択-----
Dim f As Long
Dim myNAME As String
Dim myLID As Long
If myCHE = True Then
Exit Sub
End If
myNAME = ListBox1.Column(0)
myLID = ListBox1.ListIndex + 4
For f = 1 To 3
Controls("TEXTBOX" & f).Value = Worksheets("Sheet1").Cells(myLID, f).Value
Next
End Sub
'----------------------------------
Private Sub S_LIST()
'-----リスト表示-----
Dim LASROW1 As Long
Dim myDRange1 As String
LASROW1 = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
myDRange1 = "Sheet1!A4:C" & LASROW1
ListBox1.RowSource = myDRange1
If Worksheets("Sheet1").Range("A4").Value = "" Then
ListBox1.RowSource = ""
End If
End Sub
'----------------------------------
Private Sub CommandButton1_Click()
'-----変更----
Dim f As Long
Dim myLID As Long
'MsgBoxは必要なければ削除してください。
If MsgBox("変更しますか? ", vbYesNo, "うくれれ") <> vbYes Then
Exit Sub
End If
myLID = ListBox1.ListIndex + 4
myCHE = True
For f = 1 To 3
Worksheets("Sheet1").Cells(myLID, f).Value = Controls("TEXTBOX" & f).Value
Next
myCHE = False
End Sub
'----------------------------------
Private Sub CommandButton2_Click()
'-----リスト削除-----
Dim myLID As Long
Dim f As Long
'-リストを選択していないと終了
'MsgBoxは必要なければ削除してください。
If ListBox1.ListIndex = -1 Then
'MsgBox "削除するリストを選択して下さい。 ", vbOKOnly, "うくれれ"
Exit Sub
End If
'-削除するかの確認メッセージです。必要なければ削除してください。
'-有ったほうが安全のような気がしますが。
If MsgBox("削除しますか? ", vbYesNo, "うくれれ") <> vbYes Then
Exit Sub
End If
myLID = ListBox1.ListIndex + 4
With Worksheets("Sheet1")
.Range("A" & CStr(myLID), .Range("C" & CStr(myLID))).Delete Shift:=xlUp
End With
Call S_LIST 'リスト表示
End Sub
'----------------------------------
Private Sub CommandButton3_Click()
'-----登録-----
Dim myTAR As Range
Dim f As Long
'MsgBoxは必要なければ削除してください。
If MsgBox("登録しますか? ", vbYesNo, "うくれれ") <> vbYes Then
Exit Sub
End If
Set myTAR = Worksheets("Sheet1").Range("A65536").End(xlUp)
With myTAR
For f = 1 To 3
.Offset(1, f - 1).Value = Controls("TEXTBOX" & f).Value
Next
End With
Set myTAR = Nothing
Call S_LIST 'リスト表示
End Sub
'----------------------------------
>更には、オートフィルタでデータ抽出できるようにし、
>指定した行のデータを別シートに作成した「帳票」に貼り付けて印刷、
>というところまで作りたいと考えています。
方法は別として可能だと思います。
私に分かる範囲ならお答えできると思います。
分からない時はごめんなさい・・・
|
|