• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel2000でのVBAの記述の仕方)

Excel2000でのVBAの記述の仕方

このQ&Aのポイント
  • Excel2000でのVBAを使用して、指定したセルに月の文字を入力し、それに応じてデータを別のシートに貼り付ける方法について教えてください。
  • 具体的には、セルE5に1月から12月までの月の文字が入力される想定です。セルE5に入力された月の文字に応じて、セルE6からE38の範囲のデータを別のシートのR17からR38(1月の場合)またはQ17からQ38(それ以外の場合)に貼り付ける方法を教えてください。
  • 例えば、セルE5に5月が入力された場合、セルE6からE38のデータを別のシートのR17からR38に貼り付けます。同様に、4月の場合はQ17からQ38、6月の場合はS17からS38、7月の場合はT17からT38、8月の場合はU17からU38、9月の場合はV17からV38に貼り付けるように設定したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.1

E6~ E38とR17~R38ではデータの数が違いますね。 何かの勘違いかと思われますが・・・最後の38行目はあってるという仮定でアドバイス差し上げますと・・・ VBAじゃなくても R38=if(E5="5月",E38,"") S38=if(E5="6月",E38,"") ・ ・ ・ ・ で対処できますが、VBAじゃないと気に入りませんか?

noname#72697
質問者

補足

回答有難うございます。 計算式を入れるのが面倒ですので、 できたらVBAで教えてください。

その他の回答 (3)

回答No.4

>E5に5月という文字が入ったら 5月と入ったらすぐに(ボタンを押さないで)コピーしていいのか ボタンを押した時に,5月と入っていたらなのか ちょっと分からないのですが・・・ 下記はボタンを押してから処理するようになっています。 (5月と入力されてすぐプログラムが動くようにする事もできますが、 間違えて入力した時にも、処理されますから、 ワンクッションいれた方が良いと思います。) (1)元シート名、別シート名が分かりませんので、    Sheet1、Sheet2にしてあります。   違う場合は、   Set ws1 = Worksheets("Sheet1")   Set ws2 = Worksheets("Sheet2")   の""内を変更してください。 (2)1月ならばA列、2月ならばB列、・・・11月ならばK列、12月ならばL列   にコピーします。 (3)いろいろな書き方ができますので、私の書き方が最善とはいえません。    (もちろん、Copyメソッドを使った書き方もできます。) ********************この下から**************** Sub Test()   Dim ws1 As Worksheet 'コピー元   Dim ws2 As Worksheet 'コピー先   Dim mm As Integer  '月      Set ws1 = Worksheets("Sheet1")   Set ws2 = Worksheets("Sheet2")      'E5セルに、[月]の入力があれば、[月]をなくし、数字に変換する   mm = CInt(Replace(ws1.Range("E5"), "月", ""))      ws2.Range(ws2.Cells(6, mm), ws2.Cells(38, mm)).Value = ws1.Range("E6:E38").Value   '変数の開放     Set ws1 = Nothing   Set ws2 = Nothing End Sub ********************この上まで**************** 何か分からない事があれば、補足してください。

回答No.3

>たとえば、E5に5月という文字が入ったら、セルのE6~ >E38のセルに入っているデータをコピーして >別シートのR17~R38の所にデータを貼り付けたい。 コピー元とコピー先のセル数が一致しないのですが、書き間違いですか? それとも空白のセルを除く等の処理が必要なのですか?

noname#72697
質問者

補足

すいません下記違えていました・ たとえば、E5に5月という文字が入ったら、セルのE6~ >E38のセルに入っているデータをコピーして >別シートのE6~E38の所にデータを貼り付けたい。 たとえば、E5に4月という文字が入ったら、セルのE6~ >E38のセルに入っているデータをコピーして >別シートのF6~F38の所にデータを貼り付けたい。 よろしくお願いします。

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

E5セルには5,6など数字だけ入れて、表示形式で5月 、6月・・・になるようにします。 VBE画面でF5キーでモジュール1でやりましたが Sub test01() a = Array("", "", "", "", "", "s17", "t17", "u17", "") Range("E6:e38").Copy Range(a(Cells(5, "E"))).Select ActiveSheet.Paste Application.CutCopyMode = False End Sub 本当はシートにコマンドボタンを1つ貼りつけ、クリックイベントに変える方法が良いでしょうが、改造方法はわかりますよね。 上例では5,6,7月しかArray()に入れていませんが、残りの月も入れてください。 少数例でテスト済み。急いで手抜き済みません。 この方法はコピーと貼りつけ範囲に規則性がなくても改造して使えると思います。

関連するQ&A