プロが教えるわが家の防犯対策術!

いつもお世話になります。

Dim sh1, sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")

sh1.Range("C6").Value = sh2.Range("F5").Value
として、1つのセルの値ならコピーできるのですが、
sh1.Range("C6:C10").Value = sh2.Range("F5;F9").Value
としても、セルの値を持ってくることができません。
どのように書けば良いのでしょうか?

ちなみに今は、
sh2.Range("F5:F9").Copy
sh1.Range("C5:C9").PasteSpecial Paste:=xlValues
としているのですが、上記だとセルを範囲指定してしまって作業が見えるのでカッコ悪いのです。

A 回答 (7件)

7-samuraiの質問ですみません。


No5のimogasiさん、いつもお世話様です。

Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet2")
Set sh2 = Worksheets("sheet1")
sh1.Range("c1:c5").Value = sh2.Range("A1:A5").Value
End Sub

で、うまくいきますよ。
複数セルの場合Valueは省略できないようです。
    • good
    • 5

#4のshishishishiさんへ:ありがとうございました。


Valueがいるのですね。
前も同じことをおっしゃるケースがあり、疑問を持ったことがあって、なぜかなと思いつつ。
小生はValueの省略の癖がついているのと、Cellsの愛用のため気がつきませんでした。
7-samurai さんへ:回答者へのお礼を書かせて貰いましたが、済みません。
    • good
    • 6

私は馬鹿の1つ覚えで、こう言う場合


For i = 6 To 10
sh1.Cells(i, "C") = sh2.Cells(i - 1, "F")
Next i
で通してます。
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet2")
Set sh2 = Worksheets("sheet1")
'For i = 6 To 10
'sh1.Cells(i, "B") = sh2.Cells(i - 1, "A")
'Next i
sh1.Range("c1:c5") = sh2.Range("A1:A5")
End Sub
#4さんの事由がなくても、上記で私の場合は上手く行きませんでした。
コメントアウトした部分は復活すると上手く行きます。
    • good
    • 1
この回答へのお礼

いつもありがとうございます。
私の場合、For Nextを使うと間違えることが多く、いつも恐る恐る使っているので、普通に使っているimogasiさんがうらやましいです。

> 7-samurai さんへ:回答者へのお礼を書かせて貰いましたが、済みません。
私のつまらない質問で、いつもお世話になっている回答者の皆様の情報交換の場にお役立ていただけるなら、非常に光栄です。

お礼日時:2005/01/22 10:52

> sh1.Range("C6:C10").Value = sh2.Range("F5;F9").Value


> としても、セルの値を持ってくることができません。

変だと思ってみてみました。

そりゃそうでしょう。F5;F9のところがコロンじゃなくセミコロンになってますから。
    • good
    • 2
この回答へのお礼

ものすごく、単純なミスだったのですね・・・。
お恥ずかしい。

一人ごと:以前も同じ形で試してみてだめだったけど、同じ間違いをしていたのかなあ。

P.S> 7-samuraiの質問ですみません。
私のつまらない質問で、いつもお世話になっている回答者の皆様の情報交換の場にお役立ていただけるなら、非常に光栄です。

お礼日時:2005/01/22 10:34

Appliction.ScreenUpdating=False


sh2.Range("F5:F9").Copy
sh1.Range("C5:C9").PasteSpecial Paste:=xlValues
Appliction.ScreenUpdating=True

Application.ScreenUpdating = False
sh2.Range("F5:F9").Copy
sh1.Range("C5:C9").PasteSpecial Paste:=xlValues
Application.ScreenUpdating = True
の誤りでした
    • good
    • 0
この回答へのお礼

教えていただいたコードは、今回の質問のみならず、色々なシーンでつかえそうですね。
ありがとうございました。

お礼日時:2005/01/22 10:23

こんにちは。



↓でどうでしょうか?
--------------------
Sub test()
Dim sh1 As Worksheet, sh2 As Worksheet

Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")

sh2.Range("F5:F9").Copy _
Destination:=sh1.Range("C5")

End Sub
    • good
    • 2
この回答へのお礼

また一つ、新しいコードを覚えました。
ありがとうございました。

お礼日時:2005/01/22 10:53

このコードに対して一番簡単な方法は


Appliction.ScreenUpdating=False
sh2.Range("F5:F9").Copy
sh1.Range("C5:C9").PasteSpecial Paste:=xlValues
Appliction.ScreenUpdating=True
なたは
For I = 6 To 10
Worksheets("sheet2").Cells(I - 1, 6).Value = Worksheets("sheet1").Cells(I, 3).Value
Next
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A