|
2 No.
3 128
4 入庫日 仕入先
5 2010/8/1 XXX商事
6 長さ(m) 本数 重量(kg) 単価(円) 金額(円)
7 123 5 560 160 89,600
上記で128の番地はB3、2010/8/1はB5、XXX商事はC5、123はB7、5はC7、560はD7、160はE7、89600はF7に記述されるようになっています。(sheet入力)、登録マクロを走らせると別のシート(sheet入荷別)に転記されます。
Sheet入荷別
B C D E F G H I
連番 日付 仕入先 長さ 本数 重量 単価 金額
1 2010/7/1 ???商会
2
3 ・
・
・
123 2010/8/1 XXX商事 123 5 560 160 89600
入力のマクロは
Sub 新規データ()
Application.EnableEvents = False
With Sheets("入力")
.[B3] = WorksheetFunction.Max( _
[Database].Resize(, 1)) + 1
.[B5:F5].ClearContents
.[B7:F7].ClearContents
.[B9:F9].ClearContents
Range("F7").Formula = "=$D$7*$E$7"
End With
Application.EnableEvents = True
End Sub
ここでなぜかB3の連番が123で単価が123と偶然に同じになった時に"該当するNo.はありません"のメッセージが出ます。つたない説明ですが、原因はわかりますか。
次に転記のマクロは
Sub データ登録()
'
' データ登録 Macro
Dim 行 As Long
Dim 確認 As Integer
Dim No As Long
確認 = MsgBox("データを登録します。" _
& "よろしいですか?", vbYesNo)
If 確認 <> vbYes Then Exit Sub
With Sheets("入力")
On Error GoTo 新規行
行 = WorksheetFunction.Match( _
.[B3], [Database].Resize(, 1), 0)
On Error GoTo 0
[Database].Cells(行, 1) = .[B3]
[Database].Cells(行, 2) = .[B5]
[Database].Cells(行, 3) = .[C5]
[Database].Cells(行, 4) = .[B7]
[Database].Cells(行, 5) = .[C7]
[Database].Cells(行, 6) = .[D7]
[Database].Cells(行, 7) = .[E7]
[Database].Cells(行, 12) = .[F9]
[Database].Cells(行, 8) = .[F7]
[Database].Cells(行, 9) = .[B9]
[Database].Cells(行, 10) = .[C9]
[Database].Cells(行, 11) = .[E9]
[Database].Cells(行, 12) = .[F9]
[Database].Cells(行, 13) = .[F5]
Exit Sub
新規行:
行 = [Database].Rows.Count + 1
[Database].Cells(行 - 1, 1).EntireRow.Insert
[Database].Offset(行 - 1).Resize(1).Copy _
[Database].Cells(行 - 1, 1)
.Shapes("スピン").ControlFormat.Max = .[B3]
Resume Next
End With
'
End Sub
で、この時に入力欄で123なのに、122になってしまいます。
どこがわるいのでしょうか。教えてくださればありがたいです。
質問を二つしてしまいましたが、違反ですか。
|
|