• 締切済み

複数行を最終行に転記

ブックから他ブックへの複数行を最終行に転記したいと考えております。 1日1行であれば転記出来るものの、1日が複数行となると1日の最終行のみが転記され困っております。 縦カレンダー仕様 ・月初ではなく日曜始まりの為前月含むこともあり ・1日につき各4行づつ ・4行すべて毎日データーが入るわけではなく時々入る程度 スケジュール表仕様 ・日曜始まりの一週間毎のシート ・1日につき9行分 1か月分だと長いので1週目分だけですが… Activ bookを縦カレンダー(入力用シート) Thisbookをスケジュール表(転記先シート) Sub 転記_Click() Dim WBK1 As Workbook,WBK2 As Workbook Dim SH1 As Worksheet,SH2 As Worksheet Dim myRow1 As Long,myRow2 As Long,myRow3 As Long,myRow4 As Long_ myRow5 As Long,myRow6 As Long,myRow7 As Long Set WBK1 = ThisWorkbook '縦カレンダー Set WBK2 = ActiveWorkbook 'スケジュール表 Set SH1 = WBK1.Worksheets("1週目") 'スケジュール表 Set SH2 = WBK2.Worksheets("3月") '縦カレンダー Set SH3 = WBK1.Worksheets("2週目") 'スケジュール表 Set SH4 = WBK1.Worksheets("3週目") 'スケジュール表 Set SH5 = WBK1.Worksheets("4週目") 'スケジュール表 Set SH6 = WBK1.Worksheets("5週目") 'スケジュール表 Set SH7 = WBK1.Worksheets("6週目") 'スケジュール表 With SH1 myRow1 = SH1.Range("C1").End(xlDown).Row '日 myRow2 = SH1.Range("C12").End(xlDown).Row '月 myRow3 = SH1.Range("C23").End(xlDown).Row '火 myRow4 = SH1.Range("C34").End(xlDown).Row '水 myRow5 = SH1.Range("C45").End(xlDown).Row '木 myRow6 = SH1.Range("C56").End(xlDown).Row '金 myRow7 = SH1.Range("C67").End(xlDown).Row '土 SH1.Range("C" & myRow1 + 1 & ":J" & myRow1 + 1).Value = SH2.Range("C3:J6").Value '日 SH1.Range("C" & myRow2 + 1 & ":J" & myRow2 + 1).Value = SH2.Range("C7:J10").Value '月 SH1.Range("C" & myRow3 + 1 & ":J" & myRow3 + 1).Value = SH2.Range("C11:J14").Value '火 SH1.Range("C" & myRow4 + 1 & ":J" & myRow4 + 1).Value = SH2.Range("C15:J18").Value '水 SH1.Range("C" & myRow5 + 1 & ":J" & myRow5 + 1).Value = SH2.Range("C19:J22").Value '木 SH1.Range("C" & myRow6 + 1 & ":J" & myRow6 + 1).Value = SH2.Range("C23:J26").Value '金 SH1.Range("C" & myRow7 + 1 & ":J" & myRow7 + 1).Value = SH2.Range("C27:J30").Value '土   End With End Sub

みんなの回答

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

人間では(プログラムを考えなければ)直感的にわかるが、VBAでは複雑になりそうに思う。 私の提案 「スケジュール表」、「縦カレンダー」ともA列には日付(日付シリアル値に限る。表示形式は日だけでもよい)を入れてほしい。 すると、「スケジュール表」の、ある週のこのシートの日付のWEEKNUM値は同じである日付だけになる。 ーーー 疑問 「縦カレンダー」は月ごとらしいが、月初日が日曜から始まらない場合は、どちらの月に入れるのか?たとえば2016年3月は1日が火曜日だが、2月シートに入れるのか、または2月28日(日)から3月に入るのか。 どちらのシートに持っていくのかな。 こういうのは仕様的にむつかしくなると思う。 どちらかに決めても、常識として定着しておらず、使う方も、どちらのシートにあるのか迷うのではないか。 ーーー 上記は小生が質問内容を誤解していたら、補足しておいてください。 勿論、既出のご回答(VBA)でOKだったなら補足する必要はなく、締め切ってください。 --- また 他ブックのシートや同一のブックの他シートに、データを持っていく(移動でなくコピーと思うが) ・各行の代入法の行数分繰り返しではなく ・セル範囲のデータのコピーと貼り付けを使うと、コードの行数が少なくなるのではないか。

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

小生だった(小生の質問を読んでの理解では)ら、質問は下記のように書く。 コードなど載せない。 勉強と思って読んで、下記で言っていることことを考えてみてください。 小生の質問の理解が間違っている場合は補足してください。 VBAコードを考えるとか、質問する前に自分で考えたり、読者に説明することがあるのではないか。 (A)1週間のスケジュール表が集まったBOOK1つ    各週分は1シートになっている(分かれている)    1週は日曜日から土曜日まで。    月を越えても、同じブック内のシートに記録していくのかな?? (B)月間スケジュール表    質問では「縦カレンダー」と称す。月を越えて(A)を縦方向に累積する。    決めた1シートに累積する。    月を越えても、同じ1つのシートに累積していくのかな??。 この質問は(A)の、あるシートから、(B)の最終行の次行以下に転記(累積)していく 課題らしい。 ーー 以下のことが書いてないようだが、システム的考慮が質問者には不足してないか。 それは作業単位が書いてないではないか? 移す作業の単位は(前)日、(前)週、(前)月分(または随時)のどれか? どうも週単位らしいがいかがか? 累積作業を忘れることは考えなくてよいのか? ーー スケジュール通りに前(日、週、月、回)までは、転記作業が終わっているのは確実といえるのか。 それをきっちりしないとある週分データが飛んで累積されたりするよ。 ーー 小生のお勧めの思い付き 質問者は週単位にこだわっているようなので、WeekNum関数のことを知っているか。 エクセル関数やVBA関数にはWEEKDAYNUM関数があり、スタート曜日が日曜か月曜か選べる。 これを使って(B)の(累積していっている1)シートの最終行!(前回の持ってきた最近の週)の日付のWEEKDAYNUMの数を、知り、それに+1したWEEKDAYNUMのスケジュール記録のある(A)の中のシートを探す。見つかればそのシートの全行(見出しなど除く)をCopyして、(B)のデータの最終行の次行以下に貼りつける(Pasteする)。 1週間飛んでいる場合は、次の週も割り出さないといけないが、工夫すれば、累積を忘れていても自動で補うことは可能ではある。 以上でよければコードを考えてみるが、データ例が作りにくいので面倒です。質問者でやってほしいが。

mimiko143
質問者

補足

(A)月を越えても、同じブック内のシートに記録していくのかな?? →1か月毎です。 ーー (B)月を越えて(A)を縦方向に累積する。 →これも1か月分のみです。 ーー 作業単位が書いてないではないか? →翌月予定の表になりますので、1日づつでも1週間づつでも構いません。 ーー 累積作業を忘れることは考えなくてよいのか? →1か月分入力が終わると(B)月間スケジュール表は変更せずそのまま1年保存になります。 (A)1週間のスケジュール表が集まったBOOK1は、変更の際に直接このブックに入力して変更となりその月が終わると年単位で保存になるので、転記でつかわれるのは1回のみです。 A・B共に原本を用意しておき1か月毎にVBAの記載のある新しいブックを使い入力していく予定ですがそれでも累積作業は必要でしょうか。 ーー スケジュール通りに前(日、週、月、回)までは、転記作業が終わっているのは確実といえるのか。 →申訳ありません、おっしゃって下さっている意味が分かりません。 今月初めに会社役員(PCを打つのに人差し指のみで打つ人)が自分もしたいと言い出して手を出しデーターが没になり、それを直すのに時間を取られ…コピー貼り付け作業ですら聞きに来られると仕事がままならないので、打ちさえすればB→Aブックにボタン一つで転記できるようにしたいと思っている次第です。 ちなみに私もPC初心者で、先日エクセルにこんな機能(VBA)があるんだと知ったレベルです。

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

一例です。 月のシート名を自動で指定する為に1週目のB1データから数値を取得、日付データであるとしてmonth関数としています、整数で指定の場合はmonth関数削除し、B1の値を使用して下さい。 6周目が無い月は値をコピーしないようにしています。 6周目シートのA3が10以下であれば6周目は不要としました。 A3の値が日付であると思いday関数で日にちを取得しています。整数で対応している場合はday関数を削除して下さい。 Sub test() Dim WBK1, WBK2 As Workbook Dim SH1, SH2 As Worksheet Dim myRow1 As Long Dim i, j, k, tuki As Integer Set WBK1 = ThisWorkbook '縦カレンダー Set WBK2 = ActiveWorkbook 'スケジュール表 '月を整数で取得 tuki = Month(WBK1.Worksheets("1週目").Range("B1").Value) '6週目が翌月から開始されてる場合は5周で終了 If Day(WBK1.Worksheets("6週目").Range("A3").Value) < 10 Then k = 5 Else k = 6 End If Set SH2 = WBK1.Worksheets(tuki & "月") '縦カレンダー myRow1 = 3 With SH2 For i = 1 To k Set SH1 = WBK2.Worksheets(i & "週目") j = 3 For k = 1 To 7 .Range("C" & myRow1 & ":J" & myRow1 + 3).Value = SH1.Range("C" & j & ":J" & j + 3).Value myRow1 = myRow1 + 11 j = j + 4 Next Next End With End Sub

関連するQ&A

  • エクセルVBAの転記について

    エクセル2013VBAで最終行を取得しての転記が上手くいきません。どのようにすれば良いかご教授ください。 簡単なサンプルを下記します。 Sub サンプル入力からのDBへの転記() Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim myRow As Long Set Sh1 = Worksheets("サンプル入力") Set Sh2 = Worksheets("サンプルDB") With Sh2 myRow = Range("A" & Rows.Count).End(xlUp).Row + 1 .Range("A" & myRow).Value = Sh1.Range("D4").Value .Range("B" & myRow).Value = Sh1.Range("F4").Value End With End Sub 入力内容を変えないテストでは (1)実行するとDBへの転記は問題なく出来ます。 (2)継続してマクロを実行しても問題なく転記が行われ、同じデータが蓄積されていきます。 入力内容を変更して引き続きマクロを実行すると挙動不審に陥ります。 現象としては (1)初めの行に何度も重ねて転記を行う。 (2)空白行を作り、その行に何度も転記を行ってしまう。 (3)空白行を作り、それ以降転記を実行し蓄積を行ってしまう。 入力シートには結合セル、リストを使用していますが、原因究明を行う中でこれが原因とは思えませんでした。 これがクリアできないと先に進めません。ぜひお力を貸してください。 宜しくお願い申し上げます。

  • VBA 別シートの最終行に追記

    ExcelのSheet1で作成した表の一部項目を、Sheet2に一覧表としてまとめたいのです。 例えばSheet1にアンケート項目のような入力されていて、毎日使いまわします。 セルA1: 訪問日→固定     セルB1: (日付)→更新 セルA3: お客様指名→固定  セルB3: (氏名)→更新 使いまわすので、1度入力されたものは、Sheet2に一覧表として転記しておきたいのです。Sheet2の一覧表の最終行をみつけて追記していきたいです。 書いてみたのは以下の通り。 Private Sub 登録ボタン_Click() Dim SH1 As Worksheet, SH2 As Worksheet Dim GYO As Long Set SH1 = ThisWorkbook.Worksheets("回答内容") Set SH2 = ThisWorkbook.Worksheets("情報シート") ' Sheet2の最終行を取得 GYO = SH2.Range("$A$65536").End(xlUp).Row ' 最終行の次行を取得 If SH2.Cells(GYO, 1).Value <> "" Then GYO = GYO + 1  ' 現在の収容位置の下に転記 SH2.Cells(GYO, 1).Resize(1, 20).Value = SH1.Range("$c$2:$D$10").Value With SH1 .Range("A3").Copy Destination:=SH2.Range("A2") .Range("B3").Copy Destination:=SH2.Range("B2") End With End Sub 項目は飛び飛びのセルに入力されていて、それらをまとめて一覧表の1行にまとめたいと思っています。 ここでは例としてSheet1[A3][B3]セルをSheet2へ転記していますが、項目はもっといっぱいあります。 記載したコードで実行すると、1回目は転記されますが、2回目以降が追記されていきません。 ' 現在の収容位置の下に転記 のところに問題があると思っています。 全くの初心者が、コードを書くのには無理があると思いますが、どなたか教えていただけないでしょうか。宜しくお願いします。

  • エクセルVBAで実行時エラー 91 が出ます

    エクセル2000です 各部署の棚卸を纏める為のVBAを作成しているのですが、実行時にエラーになってしまいます エラーメッセージは 「実行時エラー 91   オブジェクト変数またはWithブロック変数が設定されていません」 です ご教授お願いいたします Sub 棚卸() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("在庫集計票") Set sh2 = Worksheets("棚卸表") x = sh2.Range("A65536").End(xlUp).Row Z = sh1.Range("d2").Value ’部署番号 sh1.Range(Cells(5, Z), Cells(3000, Z)).ClearContents For i = 2 To x y = sh1.Range("A2:A" & Range("A2").End(xlDown).Row). _ Find(sh2.Cells(i, "a")).Row ’ここでエラーが発生します sh1.Cells(y, Z) = sh2.Cells(i, "c") Next i End Sub

  • 複数行にまたがっているデーターを一つの行に 2

    前の質問を元にVBAを改造をしています。 (前の質問のURL:http://okwave.jp/qa/q8189711.html) 改造したものが以下です。 Sub sample() Dim OWS As Worksheet, NWS As Worksheet Dim myKey As String, myRow As Long, TRow As Long Dim i As Long, j As Long Application.DisplayAlerts = False For Each NWS In Worksheets If NWS.Name = "結果" Then NWS.Delete Next Set OWS = Sheets("Sheet1") Set NWS = Worksheets.Add NWS.Name = "結果" For i = 1 To OWS.Cells(Rows.Count, 1).End(xlUp).Row myKey = OWS.Cells(i, 1) & OWS.Cells(i, 2) For j = 5 To OWS.Cells(i, Columns.Count).End(xlToLeft).Column myKey = myKey & OWS.Cells(i, j) Next j myRow = WorksheetFunction.CountA(NWS.Columns("A:A")) + 1 If NWS.Columns("E:E").Find(What:=myKey, LookAt:=xlWhole) Is Nothing Then NWS.Cells(myRow, 1) = OWS.Cells(i, 1) NWS.Cells(myRow, 2) = OWS.Cells(i, 2) NWS.Cells(myRow, 3) = OWS.Cells(i, 3) NWS.Cells(myRow, 4) = OWS.Cells(i, 4) NWS.Cells(myRow, 5) = myKey Else TRow = NWS.Columns("E:E").Find(What:=myKey, LookAt:=xlWhole).Row NWS.Cells(TRow, 3) = NWS.Cells(TRow, 3) & "," & OWS.Cells(i, 3) NWS.Cells(TRow, 4) = NWS.Cells(TRow, 4) & "," & OWS.Cells(i, 4) End If Next i Call 同一項目削除 NWS.Columns("E:E").Delete Application.DisplayAlerts = True End Sub Sub 同一項目削除() Dim a, myDic, x Dim h As Range Set myDic = CreateObject("Scripting.Dictionary") On Error Resume Next ' Range("A:A").ClearContents For Each h In Range("E1:E" & Range("E65536").End(xlUp).Row) a = Split(Replace(h, " ", " "), ",") For Each x In a myDic.Add x, "," Next h.Offset(0, 0) = Join(myDic.keys, ",") myDic.RemoveAll Next End Sub これをコンパクトにできますでしょうか?

  • 最終行を探してSUMするには?

    またまたお願いします。 シートT_日計作業にその日の注文データがあります。 金額はC列です。セルC2から始まっていきます。 金額の合計を求めるマクロを書いてますがうまくいきません。 (1) 最終行を求められたのですが、C2から最終行までの   普通、範囲設定でRange("C2:C20").select と書きますよね。   最終行は z = Range("c1").End(xlDown).Rowで求めてあります。   今回の最終行がC20の場合、Z=20 となり   範囲指定は Range("C2:C&Z").Select ????   これがうまくいきません。何か 勘違いしているのでしょか? (2) ActiveCell.FormulaR1C1 = "=SUM(わかりません)"   (1)がクリアーしたとして どう書けばよいのでしょうか? 宜しくお願いします。 Sub 日計注文編() Dim z As Long Sheets("T_日計作業").Select '最終行番号を調べる If Range("c2").Value = "" Then z = 1 Else z = Range("c1").End(xlDown).Row End If 'C2から最終行番号までの合計を求める Range("C2:C&Z").Select ActiveCell.FormulaR1C1 = "=SUM(わかりません)" ・・・・

  • 行すべての値を張り付けるようにするには

    次の突合用マクロですが、照合番号だけでなく行すべてのデータを張り付けたいのですが、どの部分に変更を加えればよいかわかりません。 (添付画像をご覧ください) ・Sheet3~6にも列B~以降のデータを張り付けたい EntireRow Copy を使おうとしたのですが、どの様に行を指定すればよいかわかりませんでした。 ご教示頂ければ幸いです。 【準備して頂いたマクロ】 Sub TestX() Dim Sh1 As Worksheet, Sh2 As Worksheet Dim Sh3 As Worksheet, Sh4 As Worksheet Dim Sh5 As Worksheet, Sh6 As Worksheet Dim Sh1data As Variant, Sh2data As Variant Dim Sh3data As Variant, Sh4data As Variant Dim Sh5data As Variant, Sh6data As Variant Dim Sh1LastRow As Long, Sh2LastRow As Long Dim i As Long, j As Long, Sh5flg As Boolean Set Sh1 = Worksheets("Sheet1") Set Sh2 = Worksheets("Sheet2") Set Sh3 = Worksheets("Sheet3") Set Sh4 = Worksheets("Sheet4") Set Sh5 = Worksheets("Sheet5") Set Sh6 = Worksheets("Sheet6") ReDim Sh3data(0) ReDim Sh4data(0) ReDim Sh5data(0) ReDim Sh6data(0) Sh1LastRow = Sh1.Cells(Rows.Count, "A").End(xlUp).Row Sh2LastRow = Sh2.Cells(Rows.Count, "A").End(xlUp).Row Sh1data = Sh1.Range(Sh1.Cells(3, "A"), Sh1.Cells(Sh1LastRow, "B")).Value Sh2data = Sh2.Range(Sh2.Cells(3, "A"), Sh2.Cells(Sh2LastRow, "B")).Value For i = 1 To Sh1LastRow - 2 Sh5flg = False For j = 1 To Sh2LastRow - 2 If Sh1data(i, 1) = Sh2data(j, 1) Then If Sh2data(j, 2) <> "◯" Then Sh1data(i, 2) = "◯" Sh3data(UBound(Sh3data)) = Sh1data(i, 1) ReDim Preserve Sh3data(UBound(Sh3data) + 1) Sh2data(j, 2) = "◯" Else Sh5data(UBound(Sh5data)) = Sh1data(i, 1) ReDim Preserve Sh5data(UBound(Sh5data) + 1) Sh5flg = True End If Exit For End If Next j If Sh1data(i, 2) <> "◯" And Sh5flg = False Then Sh5data(UBound(Sh5data)) = Sh1data(i, 1) ReDim Preserve Sh5data(UBound(Sh5data) + 1) End If Next i For i = 1 To Sh2LastRow - 2 If Sh2data(i, 2) = "◯" Then Sh4data(UBound(Sh4data)) = Sh2data(i, 1) ReDim Preserve Sh4data(UBound(Sh4data) + 1) Else Sh6data(UBound(Sh6data)) = Sh2data(i, 1) ReDim Preserve Sh6data(UBound(Sh6data) + 1) End If Next Sh1.Range("A3").Resize(Sh1LastRow - 2, 2).Value = Sh1data Sh2.Range("A3").Resize(Sh2LastRow - 2, 2).Value = Sh2data Sh3.Range("A3").Resize(UBound(Sh3data), 1).Value = WorksheetFunction.Transpose(Sh3data) Sh4.Range("A3").Resize(UBound(Sh4data), 1).Value = WorksheetFunction.Transpose(Sh4data) Sh5.Range("A3").Resize(UBound(Sh5data), 1).Value = WorksheetFunction.Transpose(Sh5data) Sh6.Range("A3").Resize(UBound(Sh6data), 1).Value = WorksheetFunction.Transpose(Sh6data) Set Sh1 = Nothing Set Sh2 = Nothing Set Sh3 = Nothing Set Sh4 = Nothing Set Sh5 = Nothing Set Sh6 = Nothing End Sub

  • ロートルの初心者です、VBAについての質問です。

    エクセル2003で以下のVBAを色々な資料を基に、「テスト2」のシートに条件検索されたデータ、マクロ起動(?)で「入力履歴」に追記されるものを作成しました。 Sub prog() Dim myFld As String, myCri As String Dim myRow As Long Dim Sh2 As Worksheet, Sh3 As Worksheet Set Sh2 = Worksheets("テスト2") Set Sh3 = Worksheets("入力履歴") With Sh2 myRow = .Range("D" & Rows.Count).End(xlUp).Row Range("A1:H" & myRow).Copy Destination:=Sh3.Range("A" & Rows.Count).End(xlUp).Offset(1) End With Sh3.Activate Range("A1").Select End Sub ここで問題となるのが抽出データには関数が含まれているため「入力履歴」シートに書き込まれたデータにもそのまま貼り付けられるので「#A/N」となってしまいます。 Range("A1:H" & myRow).Copy Destination:=Sh3.Range("A" & Rows.Count).End(xlUp).Offset(1)の 「Destination」を変えれば良いかと思ったのですが・・・、うまくいきません。 エクセルでいう、「形式を選択して貼り付け→値」をやりたいのですが書き方がわかりません。 ロートルの初心者によろしく愛の手をお願い申します。 PS:説明文があると助かります。

  • ブック内に特定名のシートがある場合

    はじめまして、こんにちは。 VBAを最近はじめたばかりの者です。質問が初歩的なもので申し訳ないのですが是非教えてください。 以下を使って、複数ブックの○○というシートから指定セルの内容を抜き出したいと思っています。 ところが、ブックによっては○○というシートが存在しない場合があり、その場合には「インデックスが有効でない」というエラーで動作が止まってしまいます。 ブック内に○○というシートがある場合にのみ動作させるようにするにはどのようにすれば良いのでしょうか。 よろしくお願いします。 Dim wb As Workbook, myRow As Long Dim e As Integer myRow = ThisWorkbook.Worksheets(1).Rows.Count With Application.FileSearch .NewSearch .LookIn = ThisWorkbook.Path .SearchSubFolders = True .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then For i = 1 To .FoundFiles.Count If .FoundFiles(i) <> ThisWorkbook.FullName Then Set wb = Workbooks.Open(.FoundFiles(i), UpdateLinks:=0) Application.ScreenUpdating = False ThisWorkbook.Worksheets(1).Range("A" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F6").Value ThisWorkbook.Worksheets(1).Range("B" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F7").Value ThisWorkbook.Worksheets(1).Range("C" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F8").Value ThisWorkbook.Worksheets(1).Range("D" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("Y6").Value wb.Close False End If Next i Else MsgBox "ファイルがありません。" End If End With End Sub

  • 型が一致しません・・・VBA

    困っています、、 このコードを実行するとなぜか 「型が一致しません」と言われてしまいます しかしF8を使い順番にやっていくとそのまま実行されます Option Explicit Dim wsDetail As Worksheet Dim wsData As Worksheet Dim wsMES As Worksheet Public Sub meisai() Call 基本 Call 職務 Call 時間外 Call 補助 Call その他 Call 通勤 End Sub Private Sub 基本() Set wsDetail = Worksheets("給与明細") Set wsData = Worksheets("データ入力") Set wsMES = Worksheets("MES歩率表") wsDetail.Range("D10") = wsData.Range("C5").Value End Sub Private Sub 職務() Set wsDetail = Worksheets("給与明細") Set wsData = Worksheets("データ入力") Set wsMES = Worksheets("MES歩率表") wsDetail.Range("H10") = wsData.Range("C8").Value * Range("C5").Value End Sub Private Sub 時間外() Set wsDetail = Worksheets("給与明細") Set wsData = Worksheets("データ入力") Set wsMES = Worksheets("MES歩率表") wsDetail.Range("L10") = wsData.Range("C14").Value _ * Range("C16").Value * wsMES.Range("C4").Value End Sub Private Sub 補助() Set wsDetail = Worksheets("給与明細") Set wsData = Worksheets("データ入力") Set wsMES = Worksheets("MES歩率表") wsDetail.Range("P10") = wsData.Range("C19").Value End Sub Private Sub その他() Set wsDetail = Worksheets("給与明細") Set wsData = Worksheets("データ入力") Set wsMES = Worksheets("MES歩率表") wsDetail.Range("AB10") = wsData.Range("C21").Value End Sub Private Sub 通勤() Set wsDetail = Worksheets("給与明細") Set wsData = Worksheets("データ入力") Set wsMES = Worksheets("MES歩率表") wsData.Range("C27") = Application.RoundUp(wsData.Range("C25").Value * 2 * 0.083 * _ Range("C24").Value * Range("C23").Value, 1) wsDetail.Range("D13") = Application.WorksheetFunction.Round _ (wsData.Range("C27").Value * Range("C26").Value * 1.08, 0) End Sub 原因がさっぱりわからないのでどなたかよろしくお願いいたします<m(__)m>

  • エクセルVBA 別シートの複数のセルの値をコピーする方法

    いつもお世話になります。 Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") sh1.Range("C6").Value = sh2.Range("F5").Value として、1つのセルの値ならコピーできるのですが、 sh1.Range("C6:C10").Value = sh2.Range("F5;F9").Value としても、セルの値を持ってくることができません。 どのように書けば良いのでしょうか? ちなみに今は、 sh2.Range("F5:F9").Copy sh1.Range("C5:C9").PasteSpecial Paste:=xlValues としているのですが、上記だとセルを範囲指定してしまって作業が見えるのでカッコ悪いのです。

専門家に質問してみよう