Gizport
1 回答
0
Share (facebook)
137
view
全般

マクロのコード内容を変更することについて教えてください。 下記のコー...

マクロのコード内容を変更することについて教えてください。 下記のコードでコピーされる範囲を変更したいのですがどう変更すればいいのかが分かりません。
変更する範囲は、シート実験1~実験3の各(B5:N100)の内容がシート全部の(B5:N1000)にうつされるように範囲を変更したいです。コードの内容はそのままでセル範囲だけを変更したいのです。
お手数ですが、コード内容がお分かりになられましたらぜひ教えてください。
宜しくお願いいたします。

Sub MyMacro1()
Dim sh(3) As Worksheet
Dim rng(1) As Range
Dim lastRow As Long
Dim titleRow As Long
Dim i As Long
'OSに制御を戻す
DoEvents
'画面更新を停止する
Application.ScreenUpdating = False
'シートを変数に設定する
Set sh(0) = Worksheets("全部")
Set sh(1) = Worksheets("実験1")
Set sh(2) = Worksheets("実験2")
Set sh(3) = Worksheets("実験3")
'タイトル行番号と最終セルの一つ下のセルを取得
With sh(0)
titleRow = .Cells(1, 4).End(xlDown).Row
Set rng(0) = .Cells(Rows.Count, 4).End(xlUp).Offset(1)
End With
'各シートのデータをシート"全部"に転記する
For i = 1 To 3
With sh(i)
'最終行の取得
lastRow = .Cells(Rows.Count, 4).End(xlUp).Row
'実行判定
If lastRow > titleRow Then
'D列タイトル行:G列最終行を変数に設定
Set rng(1) = .Range(.Cells(titleRow + 1, 4), _
.Cells(Rows.Count, 4).End(xlUp).Offset(, 3))
'全部シートの最終セルのサイズを調整し、パートシートの値を出力する
rng(0).Resize(rng(1).Rows.Count, 4).Value = rng(1).Value
'パートシートの値をクリアする
rng(1).Value = ""
'全部シートの最終行を再取得する
Set rng(0) = sh(0).Cells(Rows.Count, 4).End(xlUp).Offset(1)
End If
End With
Next i
'画面更新を行うようにする
Application.ScreenUpdating = True
Erase sh
Erase rng
End Sub
Yahoo!知恵袋 4767日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
読み間違っている可能性がありますのでテストデータ(コピー)でお試しください。エラーその他は補足でどうぞ!
Sub MyMacro1()
Dim sh(3) As Worksheet
Dim rng(1) As Range
Dim lastRow As Long
Dim titleRow As Long
Dim i As Long
'OSに制御を戻す
DoEvents
'画面更新を停止する
Application.ScreenUpdating = False
'シートを変数に設定する
Set sh(0) = Worksheets("全部")
Set sh(1) = Worksheets("実験1")
Set sh(2) = Worksheets("実験2")
Set sh(3) = Worksheets("実験3")
'タイトル行番号と最終セルの一つ下のセルを取得
With sh(0)
titleRow = .Cells(1, 2).End(xlDown).Row
Set rng(0) = .Cells(Rows.Count, 2).End(xlUp).Offset(1)
End With
'各シートのデータをシート"全部"に転記する
For i = 1 To 3
With sh(i)
'最終行の取得
lastRow = .Cells(Rows.Count, 2).End(xlUp).Row
'実行判定
If lastRow > titleRow Then
'D列タイトル行:G列最終行を変数に設定
Set rng(1) = .Range(.Cells(titleRow + 1, 2), _
.Cells(Rows.Count, 2).End(xlUp).Offset(, 12))
'全部シートの最終セルのサイズを調整し、パートシートの値を出力する
rng(0).Resize(rng(1).Rows.Count, 13).Value = rng(1).Value
'パートシートの値をクリアする
rng(1).Value = ""
'全部シートの最終行を再取得する
Set rng(0) = sh(0).Cells(Rows.Count, 2).End(xlUp).Offset(1)
End If
End With
Next i
'画面更新を行うようにする
Application.ScreenUpdating = True
Erase sh
Erase rng
End Sub
Yahoo!知恵袋 4767日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
23
Views
質問者が納得光LINKW200の管理画面にはアクセスできているのでしょうか? 光LINKW200の中にBBiQから指定されている接続用IDと接続用パスワードを設定して保存終了すればOKです。 光LINKW200はどちらの会社の回線をご利用になっても対応しています。 > モデムが検索できませんでした。またはビジー状態ですとエラーが出てから全く進みません・・・ これは、PCで接続用IDと接続用パスワードを入力した時の応答でしょうか? 手順を踏んでセットアップしましょう。 1.BBiQからのレンタル品装置...
3693日前view23
全般
59
Views
質問者が納得多少の加工が必要ですが、クイックルワイパーでも可能 http://www.kao.com/jp/quickle/qkl_quickle_00.html
3741日前view59
全般
38
Views
質問者が納得ふつか前にも同じ質問してましたね。 あれだけ丁寧に回答したけれど、いきなり質問の削除。簡単なミスで解決し、恥ずかしくなって質問を削除されたのかと思ってました。でも、sugurubirdさんは、ご自分の質問の削除をこれまでに6回もされているんですね。 -------------------------------------------------------------- > バッファローの無線lanwhr g301n経由だとidとpwでノートpcは繋がります。 QTNetBBIQ光電話ターミナ...
4502日前view38
全般
44
Views
質問者が納得細かく見る気がないのですが INDIRECT関数を使っている時点で 対象 となるブックを開いてないと 処理されません。 数式で計算したいなら シートはむやみに分けてはいけません。 それか SUMIFの計算式を 全てのシートの決められたセルに入れるように して それを集計するかですね。 INDIRECTは不可です。
4606日前view44
全般
28
Views
質問者が納得チェックボックス挿入マクロ___列バージョン コードが分かりにくかったですね。申し訳ありません。 列方向に4列目から1250列目、すなわち D列からAVB列までのチェックボックス挿入と考えて良いでしょうか。下記コードの4行目から7行目に、それぞれ 開始列数字、終了列数字、チェックボックスのリンク先行数、チェックボックスの挿入先行数を代入して、マクロを開始して下さい。 下記では、D列からAVB列まで、5行目にチェックボックスを挿入し、2行目にリンクさせる前提にしています。適時に変更して下さい。 -...
4731日前view28