• 締切済み

Excel2007で困ってます2

Sub test4() Worksheets("sheet2").Select Dim n As Byte, t As Byte n = Cells(Rows.Count, "O").End(xlup).Row + 1 t = Cells(Rows.Count, "ML").End(xlup).Row + 1 Range ("O" & n, "ML" & t).Select Selection = Worksheets("sheet1").Range("Y7:MV7").Value End Sub [test3でC3から始まる値をX5に入れる度に("Y:MV")に計算結果の値が出来上がります。その結果の値を、sheet2の("O3:ML3")には1から336の数字が振られていて、その下にその下にと次々と計算結果をコピーします。] test1からtest4を繋げたソースが私の力では無理でした。誰か教えてください。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.7

O列3行目以下、1011行目までに埋まっている計算式は 失っていいんですね? ならば、 あらかじめ計算結果に置き換えてある前提で話を進めます。 また、ボタンを押す都度、 対象の行番号がカウントアップするわけですが、 途中から再開したいときを考慮し この行番号はA1セルに埋まっている前提にしました。 つまり、A1に3が埋まっている前提のコードです。 むろんカウントアップはマクロが行っています。 A1を既に使っているようなら、適当なセルに変更してください。 また、動作確認は全く行っていません。 使うのであれば、しっかり検証してみてください。 Sub Macro1()  Dim JobNum As Long  Dim ColCnt As Long  Dim RowCnt As Long  Dim wsI As Worksheet  Dim wsO As Worksheet    Set wsI = ThisWorkbook.Sheets(1)  Set wsO = ThisWorkbook.Sheets(2)    JobNum = wsI.Cells(1, 1).Value '処理する番号格納セル!!     'O3を空ける  wsI.Cells(3, 15).Insert Shift:=xlDown, _   CopyOrigin:=xlFormatFromLeftOrAbove    'O3にEを  wsI.Cells(3, 15).Value = wsI.Cells(JobNum, 5).Value  'X5にCを  wsI.Cells(5, 24).Value = wsI.Cells(JobNum, 3).Value     '出力先行番号を求める  RowCnt = 3  Do   If wsO.Cells(RowCnt, 15).Value = "" Then Exit Do   RowCnt = RowCnt + 1  Loop  '("Y7:MV7")を出力先に追記  For ColCnt = 15 To 15 + 335   wsO.Cells(RowCnt, ColCnt).Value = _    wsI.Cells(7, ColCnt + 10).Value  Next ColCnt    '処理する番号格納セル!!をカウントアップ  wsI.Cells(1, 1).Value = wsI.Cells(1, 1).Value + 1 End Sub

961awaawa
質問者

お礼

サポートありがとうございますHohoPapaさん。("O3:O1011")の計算式の件を伝え忘れてました。それは("O3:O1011")をTRANSPOSEで横並びにかえてまして("O3:O1011")が下にずれてE3からの値が入って行くことで横並びにされた値にも 右に1つずつずれ、E3からの値がここにも入る形をとってます。 書いてくださったこのソースを1度試してみます(; ・`д・´)

すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (260/625)
回答No.6

>test1からtest4を繋げたそれぞれのマクロが単独で動作するなら それぞれを処理順に列記しまた、マクロを新規に作成します Sub 連結() Sub test1 Sub test2 Sub test3 Sub test4 end sub エディターはマクロツールに在り、編集から入ります。

すると、全ての回答が全文表示されます。
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.5

可能な限り応援したいところではあるんですが いかんせん、 掲示されたコード、文章から 具体的な(正確な)やりたいことを読み取れないのです。 以下私の理解できない点を列挙しますので、 (これに答えるのではなく) サンプル画像とやりたいことをまとめ直し、 再掲示したほうがいいと思います。 ■疑問1 >[("O3:O1011")には関数も入ってるので >値だけを("O4:O1012")に入れて、1行ずらした形にします] O列3行目以下、1011行目までを O列4行目以下に、全数移動するように読み取れます。 しかし、 >関数も入ってるので値だけを との記述から 単に計算結果、つまり値だけを移動すると この計算式を失ってしまいます。 失ってしまっていいんですね? ■疑問2 >[test1で空いたセルO3に、 >選択されたE3の値を入れまして、 >E4、E5、E6、…と移動してはO3に入れていきます。] まず、E3の値をO3に複写するように読み取れます。 その後、E4の値をO3に、E5の値をO3に... との記述をそのまま読み取ると E列最終行の値がO3に埋まるだけのように思えます。 また、このE列最終行をどのように判断すればいいのか不明です。 ■疑問3 >[test2でE3から始まる値を1つずつO3に入れると、 >それに伴って、 >セルC3の値をX5に1つずつ入れては >C4、C5、C6、…と移動してX5に入れていきます。] これも、疑問2と同じ疑問が起きます。 ■疑問4 >[test3でC3から始まる値をX5に入れる度に >("Y:MV")に計算結果の値が出来上がります。 >その結果の値を、 >sheet2の("O3:ML3")には1から336の数字が振られていて、 >その下にその下にと次々と計算結果をコピーします。] ("Y:MV")が336列あり、 ("O3:ML3")は336セルあるのは理解できます。 が、 ("Y:MV")の何行目、あるいは、何行目と何行目、 あるいは、何行目から何行目まで使えばいいのかを読み取れません。 ■総じて test1により、O3を空ける。 E3の値をO3に埋めるとC3が書き換わる。 更に C3の値をX5に埋めると("Y:MV")の 何行目かのセルたち(336個)が書き換わる。 このセルたち(336個)を sheet2の("O4:ML4")以下に追記する。 続いて、 test1により、O3を空ける。 E4の値をO3に埋めるとC4が書き換わる。 更に C4の値をX5に埋めると("Y:MV")の 何行目かのセルたち(336個)が書き換わる。 このセルたち(336個)を sheet2の("O4:ML4")以下に追記する。 この繰り返しを E列が空欄になる前まで繰り返す。 ということでしょうか?

961awaawa
質問者

お礼

マクロボタンを1度押します。 test1により、O3を空けます。 E3の値をO3に埋めた次はC3に移りましてC3の値X5に埋めると("Y7:MV7")に値がでます。 このセルたち(336個)を sheet2の("O4:ML4")に追記する。 続いて、マクロボタンを押すこと2度目になります。 test1により、またO3を空ける。E4の値をO3に埋めるとC4に移る。 C4の値をX5に埋めると("Y7:MV7")に値ができ、 このセルたち(336個)を sheet2の("O5:ML5")に追記する。 この繰り返しをマクロボタンを押す度にしたいです。 (E列が空欄になる前まで繰り返す)←は今のところ要らないです。

すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

test1 ~ test4 を繋げると、こんな感じかな '最初はSheet1のE3セルを選択した状態で実行 Sub Test1()   Dim n As Long   With Worksheets("Sheet1")     .Activate     With Range("O3", Cells(Rows.Count, "O").End(xlUp))       .Value = .Value     End With     Range("O3").Insert Shift:=xlDown     Range("O3").Value = ActiveCell.Value     Range("X5").Value = ActiveCell.Offset(, -2).Value     n = Worksheets("Sheet2").Cells(Rows.Count, "O").End(xlUp).Row + 1     Worksheets("Sheet2").Cells(n, "O").Resize(, 336).Value = .Range("Y7:MV7").Value     ActiveCell.Offset(1).Activate   End With End Sub https://okwave.jp/qa/q9518962.html こちら放置が続くのなら、こちらへの訪問が遠のきますよ

961awaawa
質問者

補足

実行時エラー424 オブジェクトが必要です。となります。デバッグを押したら Worksheets("Sheet2").Cells(n, "O").Resize(, 336).Value = .Range("Y7:MV7").Value の所が黄色くなりました。

すると、全ての回答が全文表示されます。
  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.3

質問を2つに分ける意味が感じられない。 見て欲しければリンクを張りましょう。

961awaawa
質問者

お礼

そのやり方もありましたね!!!補足ってやり方も勧めて頂きました。今から書いてくれたソースを試してみます。

すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

https://okwave.jp/qa/q9518962.html こちらは未解決?

961awaawa
質問者

お礼

こちらはこちらで解決してるんです。が今作ってる物を進めていく内に二つ以上のセルの選択の壁?にぶつかりヘコみはじめました。作って頂いたあのソースのマクロに足すんですが、違う簡単なマクロで同時進行を試みても結局下に向かえない形から抜け出せません。今回の質問は前編と後編を繋げて1つのマクロボタンを押す度にあの一連の動作を実現して頂ければ有り難いです。

961awaawa
質問者

補足

マクロボタンを1度押します。 test1により、O3を空けます。 E3の値をO3に埋めた次はC3に移りましてC3の値をX5に埋めると("Y7:MV7")に値がでます。 このセルたち(336個)を sheet2の("O4:ML4")に追記する。 続いて、マクロボタンを押すこと2度目になります。 test1により、またO3を空ける。E4の値をO3に埋めるとC4に移る。 C4の値をX5に埋めると("Y7:MV7")に値ができ、 このセルたち(336個)を sheet2の("O5:ML5")に追記する。 この繰り返しをマクロボタンを1回ずつ押す度にしたいです。 (E列が空欄になる前まで繰り返す)←は今のところ要らないです。

すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Sub test4()   With Worksheets("Sheet2")     .Cells(Rows.Count, "O").End(xlUp).Offset(1).Resize(, 336).Value = _       Worksheets("Sheet1").Range("Y7:MV7").Value   End With End Sub

961awaawa
質問者

お礼

Watabe007さんには、ぜひ[Excel2007で困ってます1]から見て頂きたいです。これは後編なんです。

すると、全ての回答が全文表示されます。

関連するQ&A