Sheets("リスト")Sheets("原本")を使い作成してます。
色々作成しましたが。。。
Sub 請求書作成()
Dim n, i As Long
n = Worksheets("リスト").Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To n
Worksheets("原本").Copy After:=Worksheets(Worksheets.Count)
With ActiveSheet
.Name = 氏名.Value
'2行目を請求書ひな形に転記 氏名
.Cells(3, 5).Value = Sheets("リスト").Cells(i, 1).Value
.Cells(23, 5).Value = Sheets("リスト").Cells(i, 1).Value
.Cells(45, 5).Value = Sheets(" リスト").Cells(i, 1).Value
.Cells(63, 5).Value = Sheets("リスト").Cells(i, 1).Value
'2行目を請求書ひな形に転記 合計金額
.Cells(5, 6).Value = Sheets("リスト").Cells(i, 5).Value
.Cells(25, 6).Value = Sheets("リスト").Cells(i, 5).Value
.Cells(45, 6).Value = Sheets("リスト").Cells(i, 5).Value
Sheets("原本").Cells(65, 65).Value = Sheets("リスト").Cells(i, 5).Value
'2行目を請求書ひな形に転記 消費税欄
.Cells(13, 6).Value = Sheets("リスト").Cells(i, 5).Value
.Cells(33, 6).Value = Sheets("リスト").Cells(i, 5).Value
.Cells(53, 6).Value = Sheets("リスト").Cells(i, 5).Value
.Cells(73, 6).Value = Sheets("リスト").Cells(i, 5).Value
'2行目を請求書ひな形に転記 入所日
.Cells(7, 11).Value = Sheets("リスト").Cells(i, 2).Value
.Cells(27, 11).Value = Sheets("リスト").Cells(i, 2).Value
.Cells(47, 11).Value = Sheets("リスト").Cells(i, 2).Value
.Cells(67, 11).Value = Sheets("リスト").Cells(i, 2).Value
'2行目を請求書ひな形に転記 退所日
.Cells(8, 11).Value = Sheets("リスト").Cells(i, 3).Value
.Cells(28, 11).Value = Sheets("リスト").Cells(i, 3).Value
.Cells(48, 11).Value = Sheets("リスト").Cells(i, 3).Value
.Cells(68, 11).Value = Sheets("リスト").Cells(i, 3).Value
'2行目を請求書ひな形に転記 日数
.Cells(9, 11).Value = Sheets("リスト").Cells(i, 4).Value
.Cells(29, 11).Value = Sheets("リスト").Cells(i, 4).Value
.Cells(49, 11).Value = Sheets("リスト").Cells(i, 4).Value
.Cells(69, 11).Value = Sheets("リスト").Cells(i, 4).Value
End With
i = i + 1
Next
End Sub
No.3
- 回答日時:
あれ?
このコードってリストにある行数分シートを新規作成してデータを振り分けていくのではなかったのかな?
また老眼かな?
最近似たような質問があったのでそう思い込んでしまった?
No.2
- 回答日時:
おはようございます。
なさりたい事が分かりませんので、
先ず、コードを整理してみてください。
i = i + 1 は i がループカウント変数なので
2行ずつ移動を希望していないのなら、不要かと思います。
また、.Cells(3, 5).Value = Sheets("リスト").Cells(i, 1).Value は、
同じ場所に入力されますので結果、
.Cells(3, 5).Value = Sheets("リスト").Cells(n, 1).Value と同じ結果になります。
左辺のループは必要ないのですか?
必要無いのであれば、
例えば、
'2行目を請求書ひな形に転記 氏名
.Cells(3, 5).Value = Sheets("リスト").Cells(i, 1).Value
.Cells(23, 5).Value = Sheets("リスト").Cells(i, 1).Value
.Cells(45, 5).Value = Sheets(" リスト").Cells(i, 1).Value
.Cells(63, 5).Value = Sheets("リスト").Cells(i, 1).Value
これは、
Range("E3,E23,E45,E63").Value = Sheets("リスト").Cells(i, 1).Value
1行で良いかと思います。
何かを Sheets("リスト")から探して出力するなら、Findなどを使って iを特定するか
Forで探すなら、Sheets("リスト").Cells(n, 1).Value(例) を
Ifで条件を設定して条件に合った時メインの処理を実行させます。
For i = 2 To n
If Sheets("リスト").Cells(i, 1).Value="氏名" Then
No.1
- 回答日時:
まずVBAでは
>Dim n, i As Long
この書き方をすると変数:i は Long になりますが、変数:n はValiant型を宣言している事になります。
VBとは違いVBAでも1つ1つ型の指定が必要かと。
あとこのコード何をしたいのか不明です。
>.Name = 氏名.Value
いくつかのシートを作成しつつ値の代入をしたいようですが、シート名が全て同じになってしまうのでは?
『氏名』が何を指しているのかわかりませんが、そこを書き込みたいデータ数分揃えなきゃいけないかと。
例えばシート:リスト等のどこかの列に並べておいて同じようにCells(i,???)で指定するなど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
エクセル・マクロ シートの非...
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
Worksheet_Changeの内容を標準...
-
XL:BeforeDoubleClickが動かない
-
VBAで同じシート名のコピー時は...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAのマクロで他のシー...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロで対象ごとに...
-
Excel VBAでの全ワークシート...
-
シート名の一部を変更する方法...
-
EXCEL(VBA)でシート保護がかか...
-
エクセルのひとつのシートへの...
-
シート名一致すれば印刷、一致...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
VBAで同じシート名のコピー時は...
-
エクセルで通し番号を入れてチ...
-
同じ作業を複数のシートに実行...
-
Excel VBA リンク先をシート...
-
ExcelのVBAのマクロで他のシー...
-
Vba UserformからExcelシートの...
-
【Excel VBA】Worksheets().Act...
-
VBA 存在しないシートを選...
おすすめ情報
お返事ありがとうございます。私の説明不足でした。
コード内に、コメントしてるひな形とはSheets("原本")のことです。
転記コードが4行ずつあるのは同じ書式のもの4枚分です。
(領収書(控)、領収書、請求書、請求書(控))
リストの情報を1行ずつ原本に転記していき、コピーしたsheetのインデックス名にリストの氏名を入れていくということです。Worksheets("原本").Copy After:=Worksheets(Worksheets.Count) でとまってしまいます。
よろしくお願いします。
返信ありがとうございます
>複製したシート名を氏名.Valueに...何を指しているか説明してください。
.Name =Sheets("リスト") 氏名.Value
です
>項目が違うのに同じ....これで合っているのでしょうか?
矛盾してますがあってます
>同じシートだとコードは言って...、違うシートですか?
同じシートです
>値を入れて行く前にコピーされていますが、示され....
>同じシートだとコードは言っていますが違うシート?
前回の補足がまちがいで原本を先にコピーしてから作りこんでいこうと思いました
同じシートです
>ループで処理しなくても下記、..
凄い!納得です
Worksheets("原本").Copy After:=Worksheets(Worksheets.Count)
インデックスが有効範囲にありませんとでてしまいます
初心者でお手数おかけします宜しくお願いします
>また、実際の...確認してください
VBEのVBA Project名が違う所で作成していましたお恥ずかしい
>何の値を指しているのですか?
シートのインデックスにリストの氏名をいれたっかたのですが、
>氏名.Valueにインデ..2度目...が、どうでしょう?
エラーになりました
Dim 氏名 As Integer
.Name = Sheets("リスト").Cells(i, 1).Value
これでできましたが 他にどのようなコードがありますでしょうか?
>#4では金額と言う...何を意味でしょうか?
これは間違って書いてしまいました
> ループで処理しなくても下記で良いのですが、
For j = 13 To 73 Step 20
.Cells(j, 6).Value = Sheets("リスト").Cells(i, 5).Value
Next
今 これで作成してます
返信、遅くなりました。
新ワークブックに請求書ができました。作成中に、イメージもしましたが、そもそも、自分の力量ではなかなか、と諦めのところがありましたので、VERY感謝です。
>シート名を別に付.....(リストシートの行の値ですべてが決まってくるので、1行ずつ実行されると言う意味です)
これは、シートの名前を別に付けたいときは、新たに列を作成、そこを指定してコードを作成すれば良いということですよね。()内の意味がよく分からないのですが教えてください。
いつも丁寧な返信ありがとうございます
>On Error Resume Next 'うまく動かない場....
> Application.DisplayAlerts = False
>Application.ScreenUpdating = False
>Application.ScreenUpdating = True
> Application.DisplayAlerts = True
は初めて使います少し調べて勉強になりましたが長いコードの時にはすごく有効ということですね
原本の作成ですがきれいに方眼使用再作成セル結合にしましたが値が入らず(-_-;)色々調べたところ左上のセルを使うことで解決しました方眼利用しない方が賢明ですか?
もう1点コードを加えた箇所ができ文字数オーバーでした再投稿します
よかったら又よろしくお願いします
返信ありがとうございます。
>Excelでシートを数十シート作る事やセルの結合などもほぼ、行いませんね。
上記のコメントが気になりました。私がこのコードで請求書を作成するシート数は、毎月100枚から150枚のつもりしたので。。。無理がある作業でしょうか?
>.......目的と方法の合理性を見出す事が出来ず、やめました。
方眼利用や、セルの結合、後々問題が起きそうなので、私もなるべく避けていくことにします。