- ベストアンサー
誰かエクセル教えてください!!(初心者です)
sheet1にA1からA100まで連番が入っています。 B1からB100まで英単語が入っています。 C1からC100まで発音が入っています。 D1からD100まで意味が入っています。 E1からE100まで例文が入っています。 F1からF100まで例文の意味が入っています。 sheet2に10個の単語カードを作りたいんです。 1枚目のカードはsheet2のA3に英単語、B3に発音、C3に意味、D3に例文、A5に例文の意味を入れたいです。2枚目は、A8に英単語、B8に発音、C8に意味、D8に例文、A10に例文の意味を入れたいです。3枚目は、A13に英単語、B13に発音、C13に意味、D13に例文、A15に例文の意味を入れたいです。5枚目まで同様です。6枚目は、F3に英単語、G3に発音、H3に意味、I3に例文、F5に例文の意味を入れたいです。7枚目は、F8に英単語、G8に発音、H8に例文、I10に例文の意味を入れたいです。10枚目まで同様です。これをフォームとします。 sheet1のA1からA100の任意の番号を入れたら sheet2の単語のカードが印刷されるようにしたいです。1~100と入れたら全部印刷されるようにもしたいです。単語は今後も増えていきます。削除はありません。 任意の番号は2セル用意してあって、12番という指定をしたら、12番の単語をフォームで印刷(残り9カードは空白)です。何々から何々までと言う番号を入れると、その範囲の番号の単語を印刷即ちフォームにセットして印刷したいです。 1フォームで中身の単語が次々入れ替わって、印刷したいです。 完成したらsheet2の名前を「印刷」、sheet1の名前を「データ」としたいです。 できれば、sheet1のB列の英単語のデータを並び変えてもA列の番号、C列の発音などがついて来るようにしたいです。 無理なら出来なくてもいいです。 前回、よく似た質問をしているんですが・・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下記のコードでうまくいくでしょうか? G1,G2セルに開始、終了の行番号を入れてください。 Sub 印刷() On Error GoTo err Application.ScreenUpdating = False a = Range("G1").Value b = Range("G2").Value y = 3 x = 1 For i = a To b If y = 3 And x = 1 Then Sheets(2).Range("A1:I25").ClearContents End If Range(Cells(i, 2), Cells(i, 5)).Copy Sheets(2).Cells(y, x).PasteSpecial Paste:=xlValues Cells(i, 6).Copy Sheets(2).Cells(y + 2, x).PasteSpecial Paste:=xlValues y = y + 5 If (y = 28 And x = 6) Or (i = b) Then Sheets(2).PrintOut Copies:=1 y = 3 x = 1 End If If y = 28 Then y = 3 x = 6 End If Next err: Application.ScreenUpdating = True End Sub シートの名前は変更してもいいですが、順番は変えないようにしてください。
その他の回答 (2)
- inte-nori
- ベストアンサー率48% (33/68)
「1.」の項目名の追加については、問題ないと思います。ただし、このプログラムでは行番号を基準にして印刷をしていますので、一つ目の単語から十個目の単語までを印刷したい場合には、G1に2、G2に11を入れるようになります。 「2.」については、セルを結合すると貼り付けがうまくいかないようですので、B列及びG列に表示する方法でお願いします。シート2の結合をすべて解除し、コード15行目の Sheets(2).Cells(y + 2, x).PasteSpecial Paste:=xlValues のところを Sheets(2).Cells(y + 2, x + 1).PasteSpecial Paste:=xlValues に変更してください。 また「3.」については、データの入っている範囲(仮に100行目までデータが入っているならA1:F100)を選択した後、「データ」>「並べ替え」で、英単語の入っている列を「最優先されるキー」に指定すれば、並べ替えられると思います。
お礼
ありがとうございます。完成することができました。 今後多分変更箇所は無いと思います。 分からない事がありましたらまた新規で質問するかもしれませんが、その際はよろしくお願いします。 本当にありがとうございました。
- keikan
- ベストアンサー率42% (75/176)
全然参考にならないかもしれませんが、 この手の個々のデータを同じように扱う処理をするのであれば、Accessを強くおすすめします。 今回の場合、Accessを使えば、コードを書く必要もなく 見たまんまの配置をマウスで項目を配置するだけでできてしまいます。下記のような追加事項も簡単にできます。 もし利用環境があるのなら、一度試してみてください。
お礼
ありがとうございます。今は利用環境がないためできませんが、今後検討したいとおもいます。
お礼
inte-noriさん、毎回毎回本当にありがとうございます。完成することができました。期限が少なかったため勉強する時間が無く、また質問しました。 また、分からない所があって、質問が3つあります。 1.Sheet1の1行目を番号、英単語などの項目名を入れたいんですが、1行目に入れても同様のプログラムにした いです。 2.sheet2の「例文の意味」を入れるセルを、A10からD10、A15からD15(全部で10コ)など、セルの結合をして表示したいです。出来なければ、sheet2のB5、B10・・G5・・G25に入れたいです。 3.sheet1のB列の英単語のデータを並び変えてもA列の番号、C列の発音などがついて来るようにしたいです。今後、英単語は増えていくんですが、頭文字をaからZ順に並べたいんですが、可能でしょうか? よろしくお願いします。