VBA で2つのプロシージャを一つにまとめたい
いつもここにはお世話になっており、ありがとうございます。
さて、タイトルにもありました通り、下記2つのプロシージャでコマンドボタンを設定して、実行しておりますが、これを一つのプロシージャ(ボタン)にまとめたく、ご指導お願いいたします。
○作ろうとしているVBAの概要
1)EXCELのデータベースで、一枚目の「inputシート」に入力し、2枚目の「dataシート」でデータをどんどん格納していきます。
2)データは、「顧客CDボタン」で管理しており、これをキーとしています。
3)「顧客CD」は[inputシート」ではC4セル、「dataシート」ではA列にで管理しています。
3)データは新規にデータを入力したときの登録ボタン(一つ目のプロシージャ)、既存のデータを編集して、上書きするときの、変更登録ボタン(二つ目のプロシージャ)があります。
○相談したい内容
「登録ボタン」と「変更」ボタンを一つにまとめて、ひとつのボタンとして、新規にデータを登録するときも、変更したデータを登録するときも、同じボタンで行えるようにしたい。
'■1つ目のプロシージャー
Private Sub CommandButton1_Click()
'登録ボタン
Dim row As Integer
row = WorksheetFunction.CountA(Sheets("data").Columns(1))
Sheets("data").Cells(row, 2).Value = Range("C5").Value
row = WorksheetFunction.CountA(Sheets("data").Columns(1))
Sheets("data").Cells(row, 3).Value = Range("C6").Value
row = WorksheetFunction.CountA(Sheets("data").Columns(1))
Sheets("data").Cells(row, 4).Value = Range("C7").Value
row = WorksheetFunction.CountA(Sheets("data").Columns(1))
Sheets("data").Cells(row, 5).Value = Range("F5").Value
ActiveWorkbook.Save
End Sub
'■2つ目のプロシージャー
Private Sub CommandButton3_Click()
'変更ボタン
Dim fRange As Range
Dim fRow As Long
If (Range("C4").Value = "") Then '顧客CDが入力されていない?
MsgBox "顧客コードを入力してください。", vbExclamation
Exit Sub
End If
Set fRange = Sheets("data").Columns(1).Find(What:=Range("C4").Value, _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If (fRange Is Nothing) Then '見つからなかった?
MsgBox "入力された顧客コードが存在しません。", vbExclamation
Exit Sub
End If
fRow = fRange.row '検索された顧客DCの行位置を求める
Sheets("data").Cells(fRow, 2).Value = Range("C5").Value
Sheets("data").Cells(fRow, 2).Value = Range("C5").Value
Sheets("data").Cells(fRow, 2).Value = Range("C5").Value
Sheets("data").Cells(fRow, 3).Value = Range("F5").Value