エクセルマクロ_上書き(リストボックスでデータを抽出し、その行へ上書き)
エクセルマクロ初心者です。(2003使用_ユーザーフォーム,リストボックス,テキストボックス,チャックボックス)
Sheet1のデータをユーザーフォームへ反映させ、修正したものをその行へ上書きするマクロを作成したいと思っていますが、うまくいかないのでどなたかお教え願います。
(Sheet1―A8より表がはじまります)
管理番号 品名 数量 希望納期 変更数量 完納 コメント
アカ12 みかん 40 8月3日
アオ35 りんご 30 8月5日
クロ54 なし 50 7月7日
アカ98 もも 20 9月1日
アオ43 すいか 35 8月3日
●完納の行がチャックボックスで、チェックがついたら、”完納”と記載、チェックがついていなかったら空欄のまま。もし表に”完納”と記載されていたら、コマンドボタン1でデータを抽出した時に、チェックがつくようにしたいのです。が、まったくうまくいかないのです。
●また、コマンド1での抽出データに値を入力したものを上書きすることは一部できるのですが、空欄にしたときに、空欄の状態(無記入)に上書きすることができません。
Private Sub UserForm_Initialize()
Dim r As Range
Set r = Sheets("Sheet1").Range("A8").CurrentRegion.Offset(1)
Set r = r.Resize(r.Rows.Count - 1)
With ListBox1
.ColumnWidths = "50;50;0;0;0;0;0"
.ColumnCount = 7
.RowSource = r.Address(A8, G)
End With
End Sub
Private Sub CommandButton1_Click()
If ListBox1.ListIndex <> -1 Then
TextBox1.Value = ListBox1.List(ListBox1.ListIndex, 0)
TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 1)
TextBox3.Value = ListBox1.List(ListBox1.ListIndex, 2)
TextBox5.Value = ListBox1.List(ListBox1.ListIndex, 4)
TextBox6.Value = ListBox1.List(ListBox1.ListIndex, 6)
End If
If Not IsEmpty(ListBox1.List(ListBox1.ListIndex, 3)) Then
TextBox4.Value = Format(CDate(ListBox1.List(ListBox1.ListIndex, 3)), "m/d")
Else
TextBox4.Value = ""
End If
End Sub
Private Sub CommandButton2_Click()
If ListBox1.ListIndex <> -1 Then
Dim r As Range
' 元データの範囲を取得
Set r = Sheets("Sheet1").Range("A8").CurrentRegion.Offset(1)
Set r = r.Resize(r.Rows.Count - 1)
' 日付型かどうかをチェック
If IsDate(TextBox4.Value) Then
' 選択されたセルの更新
r(ListBox1.ListIndex + 1, 4) = TextBox4.Value
End If
r(ListBox1.ListIndex + 1, 7) = TextBox6.Value
End If
End Sub
Private Sub CheckBox1_Click()
If ListBox1.ListIndex <> -1 Then
Dim l As Range
Set l = Sheets("Sheet1").Range("A8").CurrentRegion.Offset(1)
Set l = l.Resize(l.Rows.Count - 1)
If CheckBox1.Value = True Then
l(ListBox1.ListIndex + 1, 5).Value = "完納"
If CheckBox1.Value = False Then
l(ListBox1.ListIndex + 1, 5).Value = "<>"
End If
End If
End If
End Sub
すみませんが、ご親切に教えていただけましたら幸いです。
よろしくお願いいたします。
お礼
有難うございました。解決しました。