お世話になります。 何度も復習しながら覚えていっています。 伝票マクロを何とか会社用に代えてみたのですが、 一部でどうしても引っかかるところがあります。 Private Sub ExeCreateDenpyo() DeleteSheets Dim lnFm As Long Dim lnFmMx As Long Dim st As String Dim shFm As Worksheet Dim shTo As Worksheet Dim dt As Date Set shFm = Worksheets("main") lnFmMx = shFm.Range("E1048576").End(xlUp).Row Dim lnTo As Long For lnFm = 3 To lnFmMx If st <> shFm.Range("E" & lnFm).Value Then If lnFm > 3 Then Keisen End If st = shFm.Range("E" & lnFm).Value Sheets("main1").Copy After:=Sheets(2) Set shTo = ActiveSheet > shTo.Name = st lnTo = 16 End If shTo.Range("A" & lnTo).Value = shFm.Range("B" & lnFm).Value shTo.Range("B" & lnTo).Value = shFm.Range("C" & lnFm).Value shTo.Range("C" & lnTo).Value = shFm.Range("D" & lnFm).Value shTo.Range("D" & lnTo).Value = shFm.Range("E" & lnFm).Value shTo.Range("E" & lnTo).Value = shFm.Range("F" & lnFm).Value shTo.Range("F" & lnTo).Value = shFm.Range("G" & lnFm).Value shTo.Range("G" & lnTo).Value = shFm.Range("H" & lnFm).Value lnTo = lnTo + 1 Next goukei Keisen shFm.Activate End Sub
松隈 利幸さんの投稿
(投稿ID: 3012)
お世話になります。
何度も復習しながら覚えていっています。
伝票マクロを何とか会社用に代えてみたのですが、
一部でどうしても引っかかるところがあります。
Private Sub ExeCreateDenpyo()
DeleteSheets
Dim lnFm As Long
Dim lnFmMx As Long
Dim st As String
Dim shFm As Worksheet
Dim shTo As Worksheet
Dim dt As Date
Set shFm = Worksheets("main")
lnFmMx = shFm.Range("E1048576").End(xlUp).Row
Dim lnTo As Long
For lnFm = 3 To lnFmMx
If st <> shFm.Range("E" & lnFm).Value Then
If lnFm > 3 Then
Keisen
End If
st = shFm.Range("E" & lnFm).Value
Sheets("main1").Copy After:=Sheets(2)
Set shTo = ActiveSheet
> shTo.Name = st
lnTo = 16
End If
shTo.Range("A" & lnTo).Value = shFm.Range("B" & lnFm).Value
shTo.Range("B" & lnTo).Value = shFm.Range("C" & lnFm).Value
shTo.Range("C" & lnTo).Value = shFm.Range("D" & lnFm).Value
shTo.Range("D" & lnTo).Value = shFm.Range("E" & lnFm).Value
shTo.Range("E" & lnTo).Value = shFm.Range("F" & lnFm).Value
shTo.Range("F" & lnTo).Value = shFm.Range("G" & lnFm).Value
shTo.Range("G" & lnTo).Value = shFm.Range("H" & lnFm).Value
lnTo = lnTo + 1
Next
goukei
Keisen
shFm.Activate
End Sub
> shTo.Name = st
のところでデバッグしてしまうのです。
この名前は既に使われています。別の名前を入力してください。
というメッセージがあります。
最初はうまくいっていたのですが、最近でるようになりました。
どこが悪いのでしょうか。
お教えください。
Excel2016を使用しています。
最後の動画配信後ずいぶん時間が経っている 松隈
小川慶一さんのコメント
(コメントID: 4472)
>この名前は既に使われています。別の名前を入力してください。
>というメッセージがあります。
その名前はすでに使われているからです。
同じ名前のシートを複数作ることはできません。これはマクロ以前のエクセルの仕様です。
ということなので、そのエラーが出た場合は、その名前のシートがすでに存在しているのでは?と、探してみてください。
呼び出して使っている以下のプロシージャで、しっかり初期化(つまり、なくなるべきシートがすべてなくなっている状態にすること)ができていないのではないかと思います。