[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『削除された機能: パーツ内のデータの入力規則のエラー回避を知りたい』(あり)
マクロを実行すると統合したシートが「削除された機能: パーツ内のデータの入力規則のエラー回避」というエラーになってしまうのでエラー回避の方法があったら教えてください。
・基盤のブックにマクロが仕込まれていて、任意のフォルダを選択し、中のすべてのブックに下記のマクロを指示しています。
・フォルダ内にあるブックはすべて書式・表が同じですべて同じ作りで、一つだけまとめる用のセル内の(rowCnt, 77)が未入力のブックがあります。セル内の(rowCnt, 77)には入力規則でプルダウンで選択できるようになっています。
問題点。
・まとめたブックを確認で開くと表題のエラーが出て、コピーされた行だけプルダウンは残りますが選択項目が消えてしまいました。どうしたらいいのでしょうか?
Sub sample()
Dim strPathName As String 'フォルダ名 Dim strFileName As String 'ファイル名 Dim strFullName As String Dim objWbk As Workbook 'シート Dim maxRow As Long Dim rowCnt As Long Dim myBook As Workbook
rowCnt = 2 With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then strPathName = .SelectedItems(1) End If End With
If strPathName = "" Then Exit Sub strFileName = Dir(strPathName & "\*.xl*", vbNormal) If strFileName = "" Then MsgBox "このフォルダにはExcelワークブックは存在しません。", vbExclamation Exit Sub End If For Each myBook In Workbooks 'NOのブックを探す If myBook.Name Like "*NO*" Then myBook.Activate Exit For End If Next
maxRow = myBook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row Do While strFileName <> "" Dim wb As Workbook For Each wb In Workbooks If wb.Name = strFileName Then GoTo LoopLast End If Next wb strFullName = strPathName & "\" & strFileName Set objWbk = Workbooks.Open(Filename:=strFullName, UpdateLinks:=False)
If objWbk.Worksheets(1).AutoFilterMode Then If objWbk.Worksheets(1).AutoFilter.FilterMode Then objWbk.Worksheets(1).ShowAllData End If End If
For rowCnt = 2 To maxRow If objWbk.Worksheets(1).Cells(rowCnt, 68).Value <> "" Then objWbk.Worksheets(1).Range(objWbk.Worksheets(1).Cells(rowCnt, 68), objWbk.Worksheets(1).Cells(rowCnt, 77)).Copy _ myBook.Worksheets(1).Cells(rowCnt, 68) End If Next rowCnt
LoopLast:
strFileName = Dir Loop MsgBox "★完了"
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows8 >
コードを見ても何だかよく分からないですが、 要するに、入力規則がコピーじゃまともに成立しない設定になっているからなんじゃないですか?
そうだとすると、どんな入力規則が設定されているか説明して頂かないと、 第三者にはどうすればいいかなんて分からないです。
(半平太) 2020/04/04(土) 18:16
"削除された機能: パーツ内のデータの入力規則のエラー回避"との一致はありません。
って出ますが、エラーメッセージは正確ですか?
削除された機能: <文字列> パーツ内のデータの入力規則
なら質問と回答が出ますが。
ついでにその質問と回答のアドレスを。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14120959639
https://qa.itmedia.co.jp/qa9524354.html
回答の内容としては、
・値のみを使用する
・入力規則の制限を越えていないか確認する
と言うことらしいです。
この場合だと、「まとめたブック」のみを開いて、入力規則が正常に入力できるか試してみては?
(2u) 2020/04/04(土) 20:54
そこで
For rowCnt = 2 To maxRow
If objWbk.Worksheets(1).Cells(rowCnt, 68).Value <> "" Then objWbk.Worksheets(1).Range(objWbk.Worksheets(1).Cells(rowCnt, 68), objWbk.Worksheets(1).Cells(rowCnt, 77)).Copy _ myBook.Worksheets(1).Cells(rowCnt, 68) End If Next rowCnt
の部分のコピーメソッドを編集しなければならないのですが今ここでつまずいております。
もしまだこのページを拝見されている方がおられましたらご教授頂ければ幸いです。
(あり) 2020/04/10(金) 15:20
マクロ実行で必ずエラーになるようなら、自動修復で消された部分を手掛かりに、処理を見直してみてください。
(???) 2020/04/10(金) 16:01
If objWbk.Worksheets(1).Cells(rowCnt, 68).Value <> "" Then objWbk.Worksheets(1).Range(objWbk.Worksheets(1).Cells(rowCnt, 68), objWbk.Worksheets(1).Cells(rowCnt, 77)).Copy _ myBook.Worksheets(1).Cells(rowCnt, 68) End If Next rowCnt
の部分を編集しようと試みています。が、上手く構文を考えられておりません。。
(あり) 2020/04/10(金) 16:41
With objWbk.Worksheets(1) For rowCnt = 2 To maxRow If .Cells(rowCnt, 68).Value <> "" Then .Range(.Cells(rowCnt, 68), .Cells(rowCnt, 77)).Copy myBook.Worksheets(1).Cells(rowCnt, 68).PasteSpecial Paste:=xlPasteValues End If Next rowCnt End With (???) 2020/04/10(金) 16:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.