• 締切済み

前月の最終セルの値を次月のE3とG3セルに入れる

よろしくお願いします。 下記の構文で実施したのですが、次月に繰越できません。 ご教示をお願いします。 Dim U As Long Worksheets("1月").Range("E3,G3").Value = 入力フォーム.繰越.Value For U = 2 To 12 Worksheets(U & "月").Range("E3,G3").Value = Worksheets(U - 1 & "月").Range("G200").End(xlUp).Value Next U

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問の内容やデータの状態について、補足のこと。 そのシートのデータ行に、翌月以降のデータ行は続いてないのが? データ状況の説明が足りないよ。 (想像ーー>年内12か月の日付のデータがあるシートに混在してあって、月末(営業日?)の最終?データだけを取り出したいということか。 最終行セルは当月末日付のデータらしいが、その日付で複数行のデータはないのか。 最終行セルの日付は月末日以外(以前日とか)の場合はあるのか。(小生の上記仮定ではあるよね) VBAという、まがりながらもプログラムを使おうとしているとしては、質問表現が粗雑だ。しっかり補足のこと。 データは日付シリアル値で入っているのか。一般には日付文字列とかもあり得る。 End(xlUp)を使うにしても、有効に使える場合は限定条件がある。そういう意識は持っているか。 ーー このコードでどういうことをしたいのか、文章で表現して質問すること。 一般に、忙しい読者にコードを読み解かせるな。 VBAの質問らしいが、質問標題にVBA(マクロ)を入れること。 OKWAVEではメールの到着は質問表題しか表示されないのだ。 >次月に繰越できません。 という事態は正しく値が取れないとか、エラーになるとか? >構文で実施したのですが こういうのは実施とは言わないのでは。 実行する、処理する、データを求めるとか、の表現はどうですか。

1211M
質問者

お礼

imogasi 様 早速のご回答ありがとうございます。

回答No.2

>次月に繰越できません。 どのように「できない」のか説明して下さい。 例えば「毎月のシートのシート名が『○○』になっていて、各月のシートの○○のセルに××が入っていて、それを△△に転記したい」と、具体的に説明して下さい。 で、提示されたプログラムを見る限り、 1月のシートのE3とG3に、入力フォームの「繰越」から持って来た値を入れる 2月のシートのE3とG3に、1月のシートのG列の最下行の値を入れる 3月のシートのE3とG3に、2月のシートのG列の最下行の値を入れる (中略) 12月のシートのE3とG3に、11月のシートのG列の最下行の値を入れる と言う事をやっているようですが、それで合っていますか? 合っているなら「各シートのG4以降の値は、自分自身のシートのG3の値が変わると、自動的に再計算されるようになっていなければならない筈」です。 そうなって居ないなら「最初からシートの構造が破綻している」と思われます。 つまり「現状のままでは、どうやっても、繰越プログラムは作れない」です。 何とかするには「破綻している部分を修正」しなければなりません。つまり「破綻を招かないよう、シートを最初から全部作りなおしする必要がある」でしょう。 ですので「繰越処理はこうする予定だから、シートをこういう構造で作らないとならない」と、きちんと設計し直して下さい。 なお、普通の「繰越処理」と言うのは、 ・「前月シート」と「当月シート」がある状態で ・「当月シート」の内容を「前月シート」に転記して ・「当月シート」の内容を、クリアして「月初め」の状態にする と言う処理の事を言います。 質問者さんのように「1月~12月のシートが12枚ある」と言う状況では「繰越処理そのものが不要」です。 年初に、1月~12月のデータをクリアして、1月は1月のシートを埋めて行き、2月は2月のシートを埋めていく。12月が埋まったら、ブックを「20xx年.xlsx」などにリネームして、20xx年版のデータとして保存、と言う業務になる筈です。 この業務内容なら「繰越処理」と言うのは「年始の最初の日だけ、前年の最終月の最終行の値を、当年の1月の先頭行に入れる」だけです。 現状では「前年の最終月の最終行の値」は「入力フォームの『繰越』入力ボックスに入れさせている」ので「入力ボックスで入れた値を、1月の先頭行に入れる」と言う処理を、年始に1回だけやれば良い筈です。 そういう訳で「基本的な部分で大間違いを行なっている」と思います。 そもそも「繰越処理など不要な筈」です。

1211M
質問者

お礼

chie65535 様 早速のご回答ありがとうございます。

1211M
質問者

補足

chie65535 様 早速のご回答ありがとうございます。  1.1月から12月までシート(出納帳)が12枚あります。  2.ユーザーフォームからコマンドボタン(新年)を押下して、昨年のデーターをすべて削除(空白)する  3.テキストボックス(新年の年号)に年号を入力する  4.テキストボックス(前年繰越)に繰越金額を入力する  5.シート(1月)のE3およびG3のセルに前年の繰越金額を入力する さらに同じユーザーフォーム内で月リストから月を選択  1.日にちのリストボックス  2.マルチページで、支出と入金の項目を分けています  3.その選択した項目に、リンクする詳細リスト(リストボックス)  4.支出と入金別に金額を入力するテキストボックス(2つ)  5.そして入力した支出と入金の金額を選択月のシートに入力  6.その都度、残高計算(G列)をする  7.残高計算(G列)の最終セルの金額をアクティブ月(1月から11月)の、次月(2月から12月)のE3およびG3に前月繰越として自動入力する 今回のご教示のお願いは 7.の、残高計算(G列)の最終セルの金額をアクティブ月(1月から11月)の、次月(2月から12月)のE3およびG3に前月繰越として自動入力する ができるようにしたいと思っています。 つたない説明ですが、忖度していただきますようお願いします。

  • akauntook
  • ベストアンサー率19% (295/1481)
回答No.1

間違いが3つあります。 1.カテゴリーが技術者向ですが、質問内容から技術者とは思えない。 2.Visual Basic はVBAではない。 3.Excelブックに関する説明がない。 質問にある問題の原因も、これらに通じるものがあり、現状を正しく認識し、目的のために何が必要か考えて、実施する。 根本的にこれが出来ないと何でも出来ませんよね。

1211M
質問者

お礼

早速のご回答ありがとうございます。 初心者です。

関連するQ&A