[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コードの簡略化』(ダダンダン)
ブック1の一部のデータをブック2に貼り付け、貼り付け後、
表示したデータをオートフィルタで自動にまとめてるファイルがあります。
マクロの記録を使ってコードを作成した為、
下記の様な、ブック1からブック2に貼り付けるコードが沢山あるのですが、
上手く短く纏められないでしょうか?
宜しくお願いします。
Windows(Book1).Activate Worksheets("Sheet1").Activate Sheets("Sheet1").Columns("F:G").Select Application.CutCopyMode = False Selection.Copy Windows(Book2).Activate Sheets("Sheet2").Columns("B:C").Select ActiveSheet.Paste
Windows(Book1).Activate
Worksheets("Sheet1").Activate Sheets("Sheet1").Columns("B:C").Select Application.CutCopyMode = False Selection.Copy Windows(Book2).Activate Sheets("Sheet2").Columns("D:E").Select ActiveSheet.Paste
Windows(Book1).Activate
Worksheets("Sheet1").Activate Sheets("Sheet1").Columns("H:I").Select Application.CutCopyMode = False Selection.Copy Windows(Book2).Activate Sheets("Sheet2").Columns("F:G").Select ActiveSheet.Paste
. . . . .
< 使用 アプリ:Excel2000、使用 OS:WindowsXP >
Sub test()
Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Workbooks("Book1").Worksheets("Sheet1") Set sh2 = Workbooks("Book2").Worksheets("Sheet2") With sh2 sh1.Columns("F:G").Copy .Columns("B:C") sh1.Columns("B:C").Copy .Columns("D:E") sh1.Columns("H:I").Copy .Columns("F:G") . . . . . End With End Sub
こんな感じで。
(ウッシ) 2017/02/14(火) 14:01
Windows(Book1).Activate
Sheets("Sheet1").Cells(ActiveCell.Row, 1).Select Selection.Copy Windows(Book2).Activate Sheets("Sheet2").Range("C5").Select Selection.PasteSpecial Paste:=xlValues
Windows(Book1).Activate Sheets("Sheet1").Cells(ActiveCell.Row, 2).Select Selection.Copy Windows(Book2).Activate Sheets("Sheet2").Range("C7").Select Selection.PasteSpecial Paste:=xlValues ・ ・ ・ Windows(Book1).Activate If Sheets("Sheet1").Cells(ActiveCell.Row, 19) = "TRUE" Then Windows(Book2).Activate Sheets("Sheet2").Range("F8").Value = "○" Else Windows(Book1).Activate Sheets("Sheet1").Cells(ActiveCell.Row, 19) = "FALSE" Windows(Book2).Activate Sheets("Sheet2").Range("F8").Value = "×" End If Windows(Book1).Activate If Sheets("Sheet1").Cells(ActiveCell.Row, 20) = "TRUE" Then Windows(Book2).Activate Sheets("Sheet2").Range("F9").Value = "○" Else Windows(Book1).Activate Sheets("Sheet1").Cells(ActiveCell.Row, 20) = "FALSE" Windows(Book2).Activate Sheets("Sheet2").Range("F9").Value = "×" End If ・ ・ ・
を、
以前教えて頂いた方法で、
With sh2
sh1.Cells(ActiveCell.Row, 1).Copy .Range("C5).PasteSpecial Paste:=xlValues sh1.Cells(ActiveCell.Row, 2).Copy .Range("C7).PasteSpecial Paste:=xlValues
な感じになるのかなと思ったんですが、ダメでした。
(ダダンダン) 2017/02/20(月) 18:18
>sh1.Cells(ActiveCell.Row, 1).Copy
このActiveCellは、どのセルのつもりでしょうか
(マナ) 2017/02/20(月) 19:26
つまり、ブック1のシート1がActiveな状態で実行するマクロということですか。
(マナ) 2017/02/20(月) 19:38
Sub test()
Dim sh1 As Worksheet Dim sh2 As Worksheet Dim r As Long Set sh1 = Workbooks("Book1").Worksheets("Sheet1") sh1.Activate r = ActiveCell.Row Set sh2 = Workbooks("Book2").Worksheets("Sheet2") With sh2 .Range("C5").Value = sh1.Cells(r, 1).Value .Range("C7").Value = sh1.Cells(r, 2).Value . . . If sh1.Cells(r, 19) = "TRUE" Then .Range("F8").Value = "○" Else sh1.Cells(r, 19) = "FALSE" .Range("F8").Value = "×" End If If sh1.Cells(r, 20) = "TRUE" Then .Range("F9").Value = "○" Else sh1.Cells(r.Row, 20) = "FALSE" .Range("F9").Value = "×" End If . . End With End Sub
こういう事ですか?
(ウッシ) 2017/02/21(火) 09:01
マナさん コメントありがとうございます!
ウッシさん 正にそういうことです!
ありがとうございます!バッチリ動作しました!!
でも簡略化って難しいですね。
理解してないと応用が出来そうで出来ないものなんですね。
言葉を調べて意味が分かっても、組み合わせれないとダメですし。。。
(ダダンダン) 2017/02/21(火) 11:51
でも、書いてもらったサンプルコードを落ち着いて眺めれば、
日本語の文法に近い部分も多いので、
そこまで難しくはないと思います。
(まっつわん) 2017/02/21(火) 12:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.