- ベストアンサー
excelでチェックシートを10枚作成する
excelでチェックシートを10枚作成する として受注先の連番だけが違うものをなんとか自動でできないでしょうか? ようは、連番はAAA0010~0020と表記してありそこから、その件数分のチェックシートを作成し、そのシートにはそれぞれ各連番ごとの表記があるというものを作成したい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 これは下記以外にも色々やり方があると思うので易しいコードがあるかもしれない。 ーー しかし下記でも難しいことはやって無いつもりだが、色んなVBAの経験やコツが詰まっていて、VBA初心者には自力で作成や改良は難しいのではないか。 ーー SHEET1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then x = Target.Value p = InStr(x, "~") t = Right(x, Len(x) - p) MsgBox "t=" & t s = "" For i = 1 To p - 1 If (Asc(Mid(x, i, 1)) >= 97) And (Asc(Mid(x, i, 1)) <= 122) Then s = s & Mid(x, i, 1) Else f = Mid(x, i, p - i) MsgBox "f=" & f Exit For End If Next i MsgBox "s=" & s For i = 2 To (Val(t) - Val(f)) + 1 + 1 Worksheets("Sheet" & i).Range("A2") = s & Format(i - 1, "000") Next i End If End Sub テストが終れば、Msgboxは全部削除して。 ーー 上記でも手抜き点は、 エラーチェックをやってない。 (例)aaa005~001 小文字英字だけを対象にしている。大文字英字全角英字も可となると コードを付け加える必要が出る。 ~は全角で入るものと仮定で作成しており、テストしたのでよろしく。 ーー 数十以上のシート数でもなければ、VBAでは難しいと思うので、手作業でやることを勧めます。 結果 Sheet1のA1 zxys001~005を入力 Sheet2のA2にzxys001 以下略
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
質問表現がちゃらちゃら書いてあるが、正確に読者・回答者に伝わらない。 質問は シート名を特定し どのセル番地(列と行を特定して)に どういう値が入っていて どういう値をどのセルに出すのか 模擬具体例を挙げて表現してほしい。 ーー VBAの仕様経験がないなら、ズバリ直回答を求めることになって、この質問コーナーの主旨に反する。
お礼
回答有難うございます。 具体的には、sheet1に計算書、sheet2にチェックシートです。 計算書を入力すればチェックシートの各チェック項目は自動で入力されます。 しかし、名称だけはAAA000~000というように入力されていて、単なるリンクができません。いろいろしらべていたのですが・・・ 整理してみると sheet1のA2のセル→AAA001~005と入力すると sheet2のA2のセル→AAA001 sheet3→sheet2をコピー、さらに、A2のセル→AAA002 sheet4→sheet2をコピー、さらに、A2のセル→AAA003 sheet5→sheet2をコピー、さらに、A2のセル→AAA004 sheet6→sheet2をコピー、さらに、A2のセル→AAA005 伝わりますでしょうか? あと、ご忠告ありがとうございます。 ひきつづきいろいろしらべてみます。
- jo-zen
- ベストアンサー率42% (848/1995)
VBAを使えば、For ~ Next で印刷をはさんでやればそれほど難しくないと思いますよ。
お礼
早速の回答有難うございます。 しかし、このサイトを知り、今日はじめてVBAをいくつか実行してみた というのが本当のところで、まったくの無知です。 お恥ずかしながら、かなりの詳細のところまで雛形みたいなものを教えていただければ幸いです。お願いします。
お礼
お礼が遅くなり申し訳ありません。 その後いろいろ、自分でも勉強しました。 imogasiさんのアドバイスをもとに改良し、やっと思いのものができました。また、VBAに触れるきっかけにもなったので、よかったです。 有難うございました。