Excel (VBA) |
![]() ![]() |
(Windows 10全般 : Excel 2019)
シートの入力規則の再設定および関数の入力について
投稿日時: 25/04/26 11:48:02
投稿者: ぷーまぷーま10040311
|
---|---|
初めて投稿させていただきます。
|
![]() |
投稿日時: 25/04/26 11:57:17
投稿者: ぷーまぷーま10040311
|
---|---|
投稿したものです。
|
![]() |
投稿日時: 25/04/26 17:17:40
投稿者: simple
|
---|---|
(1)
<<具体的手順>> 1.コピー後のブックをいったん保存します。 2.「ブックのリンク」から「ソースの変更」を選んで、自分自身に変更してください。(*)こうすれば、問題なく、元のブックではなく、自分自身のブックにあるシートを参照するようになります。 (*)Excelのバージョンによって名前は少し違うかもしれません。読み替えて下さい。 また、手作業をマクロ記録すれば、上記のことを自動で実行するコードが得られると思います。 (ChangeLinkメソッドを使ったものになります) 提示されたコードを改善することは意味がないとまでは言いません(学習の一環としての意味はあるでしょう。 ただ、本来、提示されたコードは一切必要がないと思います。 必要無いことはやらないことが最上の方策です。 (2) と、これで一件落着かと思いきや、好事魔多し。 他シート参照の入力規則は、単にシートコピーした場合は、入力規則が消えてしまうらしい。 https://answers.microsoft.com/ja-jp/msoffice/forum/all/excel/fcfcf2d1-9037-4138-a2ec-bbd0d3b27462 そこで、 ・参照先シートとともにコピーし、 ・コピー後のシートのセルのうち入力規則ありセルだけについて、 (SpecialCellsでxlcelltypesamevalidationを指定) ・ .Validation.Formula1で使用している"リスト(2)"を"リスト"に置換するということでも対応できますが、質問者さんの学習材料になるかと思い、 入力規則だけ再設定するコードを示します。 Sub test() Dim ws As Worksheet Dim c As Range Dim firstAddress As String Dim k As Long Set ws = ActiveSheet With ws.Range("D3:AZ174") Set c = .Find("種類", LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do For k = 1 To 5 c.Offset(k, 0).Validation.Delete Next c.Offset(1, 0).Validation.Add Type:=xlValidateList, _ Formula1:="=OFFSET(リスト!$A$3,0,0,COUNTA(リスト!$A$3:$A$100),1)" c.Offset(2, 0).Validation.Add Type:=xlValidateList, _ Formula1:="=OFFSET(リスト!$E$3,0,0,COUNTA(リスト!$E$3:$E$100),1)" c.Offset(3, 0).Validation.Add Type:=xlValidateList, _ Formula1:="=OFFSET(リスト!$J$3,0,0,COUNTA(リスト!$J$3:$J$100),1)" c.Offset(4, 0).Validation.Add Type:=xlValidateList, _ Formula1:="=OFFSET(リスト!$O$3,0,0,COUNTA(リスト!$O$3:$O$100),1)" c.Offset(5, 0).Validation.Add Type:=xlValidateList, _ Formula1:="=OFFSET(リスト!$A$3,0,0,COUNTA(リスト!$A$3:$A$99),1)" Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With End Sub検証をしていませんので、間違いを含んでいる可能性があります。 検証してみて下さい。 |
![]() |
投稿日時: 25/04/27 00:56:55
投稿者: ぷーまぷーま10040311
|
---|---|
simple様
|