【至急】VBAわかる方、ご教示ください。
▫️やりたいこと
Sheet1のA1から2行飛ばしでSheet2のA列を貼り付け
Sheet1のA2から2行飛ばしでSheet2のB列を貼り付け
Sheet1のB1から2行飛ばしでSheet2のD列を貼り付け
Sheet1のB2から2行飛ばしでSheet2のC列を貼り付け
A4サイズで印刷
Application.ScreenUpdating=False
Worksheets (“Sheet1).select
Worksheets (“Sheet2).select
Range(“A1”).Select
Selection.End(xldown).Select
Saigo=ActiveCell.Row
If Renge(“A2”)=“”then
Saigo=1
End if
If Saigo=1 Then
Err=8
Application.Run”errs Shoto”
Exit Sub
End If
For i=2 to Saigo
Worksheetts(“Sheet2”).Select
kiban =cells(i,1)
Worksheets (“Sheet1”).select
Range(“A1”)=kiban
ActiveWindow.SelectedSheets.PrintOut Collate:=tire
どうしたらいいでしょうか…
No.3ベストアンサー
- 回答日時:
こんばんは
以下でどうでしょうか。
Sub sumple2()
Application.ScreenUpdating = False
Dim s1 As Worksheet, s2 As Worksheet, saigo As Long, i As Long, k as long
Set s1 = Sheets("sheet1")
Set s2 = Sheets("sheet2")
saigo = s2.Range("A1").End(xlDown).Row
'if saigo = 云々は省略
With s2
For i = 2 To saigo
k = (i - 2) * 3 +1
s1.Cells(k, 1) = .Cells(i, 1)
s1.Cells(k + 1, 1) = .Cells(i, 2)
s1.Cells(k, 2) = .Cells(i, 4)
s1.Cells(k + 1, 2) = .Cells(i, 3)
Next i
End Wtih
s1.PrintOut Collate:=tire
Application.ScreenUpdating = True
End Sub
No.2の方の回答と基本的には同義です。少し見やすくなったくらいでしょうか。
印刷については、シート1を印刷するものとお見受けしたためそうしています。PrintOutメソッドはワークシートオブジェクトに使えばそのシートのみを印刷できます。
用紙サイズについてはVBAではなく、あらかじめページ設定をA4にしておくのをお勧めします。
No.2
- 回答日時:
こんばんは!
おそらくこういうコトをお望みだと解釈して・・・
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, myRow As Long
Dim wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row '//←Sheet2の2行目~A列最終行まで//
myRow = (i - 2) * 3 + 1
.Cells(myRow, "A").Resize(2).Value = Application.Transpose(wS.Cells(i, "A").Resize(, 2).Value)
.Cells(myRow, "B") = wS.Cells(i, "D")
.Cells(myRow + 1, "B") = wS.Cells(i, "C")
Next i
End With
End Sub
こんな感じではどうでしょうか?
※ いちいちSheetをアクティブにすると時間を要するだけなので、
Selectはしません。m(_ _)m
No.1
- 回答日時:
こんにちは
なんだかややこしいですね・・・
添付図を見ると、Sheet2のA~D列の値を参照して、同じ行の値を
A列の値 D列の値
B列の値 C列の値
という風に2行に渡って配置し、次に空行をいれて、3行をセットにして繰り返すって感じでしょうか?
まずは、その参照をそのまま式にして、A1セルに
=IF(MOD(ROW(A1),3)=0,"",OFFSET(Sheet2!$A$1,INT(ROW(A3)/3),INDEX({0,3,1,2},COLUMN(A4)+MOD(ROW(A3),3)*2)))
でフィルコピーするとご提示のような参照になると思います。
セルの関数を消して値に変換したければ「値をペースト」で固定化すれば宜しいです。
さて、ご質問はVBAで同様の処理を行いたいとのことですが、上記の内容をそのままVBA化するのが簡単だと思います。
数式はちょっと長いですが、仮に、上記の数式を変数「f」に代入してあるとするなら
With Worksheets("Sheet1").Range("A1:B1000")
.Formula = f
.Value = .Value
End With
のような要領で、数行で済ませられることと思います。
(仮の範囲をA1:B1000としてあります)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Web画面の文字をVB6で取得したい
-
Excel 範囲指定スクショについ...
-
VBA 入力箇所指定方法
-
【VBA】カーソルのある行の1行...
-
VBA ユーザーフォーム ボタンク...
-
エクセルVBAにて =A1=B1とすれ...
-
【ExcelVBA】インデックスが有...
-
Excelについて
-
VBA 別ブックからコピペしたい...
-
VBA 別ブックから条件に合うも...
-
配列のペースト出力結果の書式...
-
Excelで画像URLを1つずつセル...
-
Excel VBA 文字列のセルを反映...
-
VBA 指定した回数分、別シート...
-
ExcelVBAのFindFirstエラ...
-
VBA 複数の各シートに行を追加...
-
10行目にフィルターを使用して...
-
Outlookの「受信日時」「件名」...
-
Excel VBAで値を変えながら、pd...
-
メールの件名をデコードしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
Vba ファイル書き込み時に書き...
-
Excel_VBAについて質疑です。(...
-
VBAの間違い教えて下さい
-
VBA コードどこがおかしいですか?
-
VBA 円グラフ 特定条件に一致し...
-
VBA 別ブックから条件に合うも...
-
pdfファイルの複数添付 引数の型
-
【ExcelVBA】インデックスが有...
-
ExcelVBAマクロで実行した時の疑問
-
Vba UserformからExcelシートの...
-
VBA初心者です。次のVBAコード...
-
Outlookの「受信日時」「件名」...
-
Excel 範囲指定スクショについ...
-
vbs ブック共有を解除
-
配列のペースト出力結果の書式...
-
Excel VBAで値を変えながら、pd...
-
VB.net(VB)で、フォームにExcel...
-
vbaにてseleniumを使用したedge...
-
ExcelVBA シート名を複数セルか...
おすすめ情報