エクセルのバージョンは2003です。
Worksheets("様式2")のセルをコピーしてWorkbooks("件数.xls").Worksheets("件数")のセルに数値のみを張り付ける作業を
Select Caseを使って組んでいるのですが数が多くて打ち切れません。
WS2からコピーするセルは変わらずWB1へ貼り付けする場所は列がずれて行きます。
myNoは1~30までで、1の場合はC列に数値を貼り付けし、2の場合はD列に数値を貼り付けし、3の場合はE列に数値を貼り付けし・・・
といった具合に列をずらして貼り付けを行いたいのです。
よろしくお願いします。
Dim myNo As Integer
Set WS2 = Worksheets("様式2")
Set WB1 = Workbooks("件数.xls").Worksheets("件数")
myNo = Workbooks("件数.xls").Worksheets("一覧").Range("V7").Value
Select Case myNo
Case Is = 1
'Worksheets("様式2")からWorkbooks("件数.xls").Worksheets("件数")へ数値のみコピー
WS2.Range("T7").Copy
WB1.Range("C4").PasteSpecial Paste:=xlPasteValues
WS2.Range("T8").Copy
WB1.Range("C7").PasteSpecial Paste:=xlPasteValues
WS2.Range("T10").Copy
WB1.Range("C13").PasteSpecial Paste:=xlPasteValues
WS2.Range("T11").Copy
WB1.Range("C16").PasteSpecial Paste:=xlPasteValues
WS2.Range("T13").Copy
WB1.Range("C22").PasteSpecial Paste:=xlPasteValues
WS2.Range("T14").Copy
WB1.Range("C25").PasteSpecial Paste:=xlPasteValues
WS2.Range("T16").Copy
WB1.Range("C31").PasteSpecial Paste:=xlPasteValues
WS2.Range("T17").Copy
WB1.Range("C34").PasteSpecial Paste:=xlPasteValues
WS2.Range("T18").Copy
WB1.Range("C37").PasteSpecial Paste:=xlPasteValues
WS2.Range("T69").Copy
WB1.Range("C5").PasteSpecial Paste:=xlPasteValues
WS2.Range("T70").Copy
WB1.Range("C8").PasteSpecial Paste:=xlPasteValues
WS2.Range("T72").Copy
WB1.Range("C14").PasteSpecial Paste:=xlPasteValues
WS2.Range("T73").Copy
WB1.Range("C17").PasteSpecial Paste:=xlPasteValues
WS2.Range("T75").Copy
WB1.Range("C23").PasteSpecial Paste:=xlPasteValues
WS2.Range("T76").Copy
WB1.Range("C26").PasteSpecial Paste:=xlPasteValues
WS2.Range("T78").Copy
WB1.Range("C32").PasteSpecial Paste:=xlPasteValues
WS2.Range("T79").Copy
WB1.Range("C35").PasteSpecial Paste:=xlPasteValues
WS2.Range("T80").Copy
WB1.Range("C38").PasteSpecial Paste:=xlPasteValues
No.3ベストアンサー
- 回答日時:
こんにちは。
ざっと見てみました。
Select Case は、If よりもNest は利きますが、あまり応用力がありません。
こんな風にしてみたらよいと思います。ただし、設定の部分の中で、セルの書き方が、A1:A2 のような場合は、それを一つとして扱わなくてはなりません。以下は、実際には試しておりませんので、注意して行ってください。
Sub CopyTest1()
Dim myNo As Integer
Dim Ws2 As Worksheet
Dim Ws1 As Worksheet
Dim i As Long
Dim rng1 As Range
Dim rng2 As Range
Set Ws2 = Worksheets("様式2")
Set Ws1 = Workbooks("件数.xls").Worksheets("件数") 'WBではなくて、Ws です。
'設定
Set rng2 = Ws2.Range("T7,T8,T10,T11,T13,T14,T16,T17,T18,T69,T70,T72,T73,T76,T78,T79,T80")
Set rng1 = Ws1.Range("C4,C7,C13,C16,C22,C25,C31,C34,C37, C5, C8,C14,C17,C26,C32,C35,C38")
myNo = Workbooks("件数.xls").Worksheets("一覧").Range("V7").Value
If 31 > myNo And myNo > 0 Then
For i = 1 To rng2.Areas.Count
rng2.Areas(i).Copy rng1.Areas(i).Offset(, myNo - 1)
Next i
End If
End Sub
No.2
- 回答日時:
私だったら
標準モジュールに
Sub test01()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws2 = Worksheets("Sheet2")
Set ws1 = Worksheets("Sheet1")
'--
a = Array("G7", "G8", "G10")
b = Array("C4", "C7", "C13")
'---
For K = 0 To UBound(a)
ws2.Range(a(K)).Copy
ws1.Range(b(K)).PasteSpecial Paste:=xlPasteValues
Next K
End Sub
とします。
ーーー
T列をG列に、
多数を3個載セルの例に
シート名を同一ブックのSheet1とSheet2の例に
して、上記コードは簡単例でテスト済み。
本質を際立たせるためDim、CutCopyMode、Updatind=Falseなど一切省いています。
ーーー
質問の書き方例の挙げ方で私のを見習ってください。
多数有る場合は3例ぐらい挙げれば、それ以上増やすのは類推で判るはず。
シート名も自分の例そのままでなく,標準のままを使う。
列もできるだけA列の近くの列にする(回答者がテストデータを作りやすい)。
ーー
質問するには、
自分のケース(個別・複雑)ー質問の趣旨に影響ないと思われる要素は省くー>質問文作成ー>回答に接すー>自分のケースに当てはめる
の訓練が大切です。
No.1
- 回答日時:
Rangeプロパティは、繰り返しや条件を指定した処理に弱いです。
Cellsプロパティだと、セルの位置を数値で指定できるので便利です。
Range("A1")→Cells(1,1)
Range("A2")→Cells(2,1)
というように、(行番号,列番号)という指定になります。
例えば、
「WB1.Range("C7").PasteSpecial Paste:=xlPasteValu」
こちらは
「WB1.Cells(7,3).PasteSpecial Paste:=xlPasteValu」
となります。
> myNoは1~30までで、1の場合はC列に数値を貼り付けし、2の場合はD列に数値を貼り付けし、3の場合はE列に数値を貼り付けし・・・
これなら、
「Cells(7, 3)」の部分を「Cells(7, myNo + 2)」としていけば、
Select Caseを使わなくてもできますよ
今、手元にExcelがないので、セルの指定方法のコードが違っていたらごめんなさい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerPointで表の1つの列だけ...
-
エクセルで二つの数字の小さい...
-
エクセル 文字数 多い順 並...
-
Excelで、A列にある文字がB列...
-
お店に入るために行列に並んで...
-
エクセルで最初のスペースまで...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセル 時間帯の重複の有無
-
エクセルの列を範囲選択しての...
-
エクセルで、数字の並びを ご...
-
VBAで文字列を数値に変換したい
-
ペグソリティアの解法について
-
ハイパーリンク情報を別セルへ...
-
エクセルの関数(日数の平均の...
-
エクセルで一行毎、一枚づつ自...
-
エクセル 同じ値を探して隣の...
-
エクセル ひらがなの文字を抽出
-
エクセル(勝手に太字になる)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
エクセル 文字数 多い順 並...
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
文字列に数字を含むセルを調べたい
-
エクセル 時間帯の重複の有無
-
VBAで文字列を数値に変換したい
-
「B列が日曜の場合」C列に/...
-
エクセル 同じ値を探して隣の...
-
エクセルの項目軸を左寄せにしたい
-
エクセルで、列の空欄に隣の列...
-
お店に入るために行列に並んで...
-
Excel、市から登録している住所...
-
エクセルの並び変えで、空白セ...
-
オートフィルターをかけ、#N/A...
-
エクセルの表から正の数、負の...
おすすめ情報