こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VBAについて教えてください。

下記の手順でVBAを組みたいのですが
どのようにすればよいかご教示いただけないでしょうか。

手順
(1)【A様sheet】>E9に入っている数字を<請求書sheet>E11にコピペ。
(2)【A様sheet】>J9に入っている数字を<請求書sheet>E12にコピペ。
(3)【A様sheet】>E3に入っている数字を<請求書sheet>E13にコピペ。
(4)<請求書sheet>E13に―100。 
(5)【A様sheet】>A1に入っている文字列を<請求書sheet>C11以下にコピペ。

※(2)が〈0〉だった場合には何も入力せず、(3)に進む。
※(4)-100は固定数値です。
※(5)は数字が入った分だけ繰り返します。

完成系は添付の画像のような結果です。
毎月数100件の処理が発生するためVBAで行いたいと思っています。

どうぞよろしくお願いいたします。

投稿日時 - 2019-03-18 15:44:26

QNo.9598152

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

請求書の発行をやりたいのか?A様と言っている、ところを見ると、B様、C様・・分も多数取引先分を作るのだろう。請求書作成は、普通はそうだ。そういうことを質問に書いてない。
また、各1枚のシートにA様、B様、C様分・・を作るのでなく、A様分をシートで作成ーー>印刷、データクリアー同じ場所に、B様分を作成ー>印刷・・を繰り返す、を行うのが普通ではないか。
こういう処理ロジックのことを、システム業者か、自社にあれば、システム部の経験者に聞いてみることがまず大切で、VBAコード云々を言う前のレベルではないのか?
ーーー
また原データだが、
Bは、質問の画像のシートの上のイメージ、Cは質問の画像のシートの下のイメージとして、Aー>A'ー>B、Aー>A'’ー>Cといったデータの作成になるのが普通と思うが、Aに当たるシートはないのか。A’は必要なデータだけ取り揃えたり、並び順が、処理に適したデータシートを作るなどのことを説明している。
多分Bは、原データを編集して、ある目的のためにレイアウトされているシートデータ(2次データとでも、言おうか)で、こういう表を基に、他の目的の書類(第3次データとか最終目的データと言おうか)を作るなど、ふつう考えないはず。質問者は、質問ぶりから、業務のコンピュター経験が少ないようなので、システム経験のある人に、よく相談してから、指導を受けて、考えるべきと思う。
我流な思い付いたやり方に、即取り掛かろうとするためで、処理を複雑にしていて、質問の説明も、応用の効かない、長々記述になっていると感じた。
普通の回答者は、質問者の路線に忠実に回答する人ばかりだが、私は質問者の発想そのものに疑問を感じ、コンピュター利用を、一片の質問で解決できると、軽く考えるなと言いたい。

投稿日時 - 2019-03-19 20:54:25

ANo.4

いくつか勝手な解釈をさせていただきました。
A様、B様、C様…とデータシートが沢山あり、下に追加して行く。
原則として3行、但しJ9が0なら2行になる。(E9、E3が0は考慮していない)
データシートと請求書シート以外存在しない。
請求書シートは右端にある。
'
Option Explicit
'
Sub Macro1()
'
  Dim Row As Long
  Dim Sheet As Integer
'
  Sheets("請求書").Select
  [C11:C148576,E11:E148576].ClearContents
  Row = 11
'
  For Sheet = 1 To Worksheets.Count - 1
    Cells(Row, "C") = Sheets(Sheet).[A1]
    Cells(Row, "E") = Sheets(Sheet).[E9]

    If Sheets(Sheet).[J9] > 0 Then
      Row = Row + 1
      Cells(Row, "E") = Sheets(Sheet).[J9]
    End If
    Cells(Row + 1, "E") = Sheets(Sheet).[E3] - 1
    Row = Row + 2
  Next Sheet
End Sub

請求書シートが左端にある場合の変更点
  For Sheet = 2 To Worksheets.Count

(4)<請求書sheet>E13に―100。
E13 に-100すると、 -87になります。図を信じ、勝手に-1と解釈しました。
D・F列にも数字が入っていますが、説明がないので入れていません。

投稿日時 - 2019-03-19 08:32:37

ANo.3

手順をなぞると

(1)【A様sheet】>E9に入っている数字を<請求書sheet>E11にコピペ。
i=11
Sheets("請求書sheet").Cells(i,"E").Value=Sheets("A様sheet").Range("E9").Value
i=i+1
Sheets("請求書sheet").Cells(i,"C").Value=Sheets("A様sheet").Range("A1").Value

(2)【A様sheet】>J9に入っている数字を<請求書sheet>E12にコピペ。
※(2)が〈0〉だった場合には何も入力せず、(3)に進む。

If Sheets("A様sheet").Range("J9").Value<>0 Then
Sheets("請求書sheet").Cells(i,"E").Value=Sheets("A様sheet").Range("J9").Value
Sheets("請求書sheet").Cells(i,"C").Value=Sheets("A様sheet").Range("A1").Value
i=i+1
Endif

(3)【A様sheet】>E3に入っている数字を<請求書sheet>E13にコピペ。

Sheets("請求書sheet").Range(i,"E").Value=Sheets("A様sheet").Range("E3").Value
Sheets("請求書sheet").Cells(i,"C").Value=Sheets("A様sheet").Range("A1").Value

(4)<請求書sheet>E13に―100。(←多分D13でしょう)

Sheets("A様sheet").Cells(i,"D").Value=-100
 
(5)【A様sheet】>A1に入っている文字列を<請求書sheet>C11以下にコピペ。
各操作の時に実施済み。

D列についても-100以外手順にないので割愛。
Sheets("請求書sheet").Cells(i,"D").Value=Sheets("A様sheet").Range("E8").Value
Sheets("請求書sheet").Cells(i,"D").Value=Sheets("A様sheet").Range("J8").Value
をそれぞれ追加すればいい思いますが。

Bなど出てきますがどこにあるのか不明なので割愛

上記実行していないのでタイプミス等あればご勘弁です。

投稿日時 - 2019-03-18 16:55:15

ANo.2

EXCELには、マクロの記録という機能があるので、その機能を利用し質問の内容を実行してみましょう。そこでどのようなコードが記述されているか確認し
命令を一つずつ調べましょう。それでも、理解できない場合は、同じように
あらゆることをマクロの記録機能を利用し研究しましょう。まずはそこからです。
質問のまる投げは良くないです。
まるで努力が見られません。

投稿日時 - 2019-03-18 16:18:49

ANo.1

補足願います
>※(5)は数字が入った分だけ繰り返します。

どこの数字の事を言っていますか?
請求書sheetのA列?D列?

投稿日時 - 2019-03-18 16:06:25

あなたにオススメの質問