
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のデータはセットしないようにしたいのですがどうしてもわかりません。
教えて頂けないでしょうか。お願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは
かなりの変数がグローバルになっているようですし、シートののレイアウトや意味も不明なので、一部のコードだけ示されても・・
・・と言う感じですが、どうしてもこのままで無理矢理やりたいのなら、値をセットする際のアドレスが、『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が保証されている場合は、後の方の処理は対象外にできます)
※ 実際の処理内容や意味合いがわかれば、もっと効果的な方法があるものと思いますけれど、部分的なコードしかないのでこのような意味不明の対処法になってしまいます。
No.2
- 回答日時:
不明点1:データをセットしないようにしたいセル(C19、C20、D30、D31)は
転記元のセルでしょうか、それとも、転記先のセルでしょうか。
不明点2:データをセットしないようにしたいセルは(C19、C20、D30、D31)は、下記のどの項目でしょうか。
①組立・行程
②生産数
③作業工数
④ケース数
上記の不明点が明確になれば、修正用のマクロは提供可能です。
但し、外部変数が多いのと、シートのレイアウトが不明なので、こちらで動作確認はできません。従って、参考程度のマクロになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
Changeイベントで複数セルへの...
-
VBA別シートの最終行の次行へ転...
-
アクセスからエクセルへ出力時...
-
VBA シリアル値から月日への変換
-
【VBA】特定の条件でセルをコピー
-
Excel2013で切り取り禁止
-
VBAでEXCELから固定長...
-
別シートから年齢別の件数をカ...
-
Excel VBAでのWorksheet_Change...
-
「段」と「行」の違いがよくわ...
-
Excel UserForm の表示位置
-
土日の列幅の自動変更を教えて...
-
VBAで結合セルを転記する法を教...
-
Cellsのかっこの中はどっちが行...
-
VBA シートをコピーする際に Co...
-
【マクロ】実行時エラー '424':...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
Count Ifのセルの範囲指定に変...
-
GASでチェックボックスを一括of...
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
Excel VBA オートフィルターで...
-
VBA 別ブックからの転記の高速...
-
100万件越えCSVから条件を満た...
-
VBA 実行時エラー1004 rangeメ...
-
VBAでEXCELから固定長...
-
楽天RSSからエクセルVBAを使用...
-
VBAで変数の数/変数名を動的に...
-
【VBA】データを各シートに自動...
-
アクセスからエクセルへ出力時...
-
Excel2013で切り取り禁止
-
複数シートの複数列に入力され...
-
VBAを使って複数のシートから抽...
おすすめ情報