電子書籍の厳選無料作品が豊富!

Sub setData()
Dim hitCol As Long
Dim i As Long, j As Long
Dim errDays() As Long, errCnt As Long

'入力データチェック
If Not chkData Then End

Application.ScreenUpdating = False

'データ登録
With Sheets(strSheet)
For i = 1 To 5
If days(i) <> 0 Then
Err.Clear
hitCol = WorksheetFunction.Match(days(i), .Rows(7), 0)
If Err.Number = 0 Then
For j = 1 To 27
'組立・行程
.Cells(hitRow + j, hitCol).Value = Cells(j + 9, i * 2 + 2).Value
Next j
.Cells(hitRow + 30, hitCol).Value = Cells(39, i * 2 + 2).Value '生産数
.Cells(hitRow + 32, hitCol).Value = Cells(40, i * 2 + 2).Value '作業工数
.Cells(hitRow + 33, hitCol).Value = Cells(41, i * 2 + 2).Value 'ケース数
Else
errCnt = errCnt + 1
ReDim Preserve errDays(errCnt)
errDays(errCnt) = i
End If
End If
Next i
End With

ThisWorkbook.Save

If errCnt = 0 Then
Application.ScreenUpdating = True
MsgBox "データを[" & strSheet & "]シートにセットしました。", vbInformation
Else
For i = 1 To errCnt
Cells(8, errDays(i) * 2 + 2).Interior.Color = vbYellow
Next i
Application.ScreenUpdating = True
MsgBox "[" & strSheet & "]シートに該当する日が無かったため、データをセットできませんでした。" & vbCrLf & "シートを確認してください。", vbExclamation
End If

Sheets(strSheet).Activate
Application.GoTo Cells(hitRow, "C"), True
End Sub

のようなコードがあります。
セルC19、C20、D30、D31のデータはセットしないようにしたいのですがどうしてもわかりません。
教えて頂けないでしょうか。お願い致します。

A 回答 (2件)

こんにちは



かなりの変数がグローバルになっているようですし、シートののレイアウトや意味も不明なので、一部のコードだけ示されても・・
・・と言う感じですが、どうしてもこのままで無理矢理やりたいのなら、値をセットする際のアドレスが、『C19、C20、D30、D31』だったらセットしない、と言う処理にするしかないのでは?
(もしかすして、セットする方のセルではなく、参照する方のセルのことを言っているのならチェックするアドレスが逆になりますが・・)

とりあえず、上記の推測が当たっているとしてよいのなら・・
値をセットする可能性があるのは、セル位置からして
>.Cells(hitRow + j, hitCol).Value = Cells(j + 9, i * 2 + 2).Value
>.Cells(hitRow + 30, hitCol).Value = Cells(39, i * 2 + 2).Value '生産数
のどちらかになると推測しますので、値をセットする前に
hitRow + j、 hitRow + 30、 hitCol が、それぞれ「ご指定のアドレスでなければ値をセット、指定のアドレスなら何もしない」と言う条件を加えればご希望のようにはなると思います。
(hitRow>1が保証されている場合は、後の方の処理は対象外にできます)

※ 実際の処理内容や意味合いがわかれば、もっと効果的な方法があるものと思いますけれど、部分的なコードしかないのでこのような意味不明の対処法になってしまいます。
    • good
    • 3

不明点1:データをセットしないようにしたいセル(C19、C20、D30、D31)は


転記元のセルでしょうか、それとも、転記先のセルでしょうか。

不明点2:データをセットしないようにしたいセルは(C19、C20、D30、D31)は、下記のどの項目でしょうか。
①組立・行程
②生産数
③作業工数
④ケース数

上記の不明点が明確になれば、修正用のマクロは提供可能です。
但し、外部変数が多いのと、シートのレイアウトが不明なので、こちらで動作確認はできません。従って、参考程度のマクロになります。
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます。
できました。

お礼日時:2024/03/14 11:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A