• ベストアンサー

EXCEL VBAお願いいたします

sheet1のA1に123456が入っています、sheet1のA2に左から2番目を代入するときは Range("A2").Value = Left(Range("A1"),Value,2)でA2に2と入り出来ました。 これをsheet1のA1からsheet2のA1に代入したいのですがどうにも出来ないのです、 worksheets("sheet2").Range("A1").Value =この先が分からないので達人の方宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「Range("A2").Value = Left(Range("A1"),Value,2)でA2に2と入り出来ました」 Left()は、文字列の左側の文字を取り出す関数だから、A2セルに12が入るはずなんだけど。 2番目の文字を入れたいなら Range("A2").Value = Mid(Range("A1").Value, 2, 1) か Range("A2").Value = Mid(Range("A1").Text, 2, 1) でしょ。 「これをsheet1のA1からsheet2のA1に代入したいのですがどうにも出来ないのです」 先頭文字を入れるなら、 Worksheets("sheet2").Range("A1").Value = Left(Worksheets("sheet1").Range("A1").Text, 2)

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

Excelではシートのセルを示すのは、代入先セルでも、代入元データのセルでも、 (1)ブック (2)シート (3)セル(セル範囲) の順に3つともドットでつないで指定するのが基本です。 そのほかの記法は下記。 このことをあくまで基本として、忘れないこと ActiveBookやActiveSheetの場合、記述を省略できる 便宜を図る仕組みにしてあるので、普通は解説書などでは、そちらを使って記述しているのです。 ーー 他の書き方。 下記でもBook指定の部分の指定は、ActibeBookということで、同一ブックとして、省略した例ですが。 シートまでは明示的にコードを作っている。 Sub test01() Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") sh2.Range("A1") = sh1.Range("A1") End Sub 本質問の標題にすれば、VBA「他シートへのシートデータ代入」とでも名付けるべきかな。

  • yoko14820
  • ベストアンサー率29% (21/71)
回答No.2

まぁ、あんまり揚げ足は取りたくないですが、 Range("A2").Value =Left(Range("A1").Value,2) で、sheet1に代入されるのは「12」でしょうね。 さて、質問の内容は、sheet1のA2に代入したい値をsheet2のA2に代入したいということでしょうか? それならば、次の通りです。 worksheets("sheet2").Range("A1").Value =left(worksheets("sheet1").Range("A1").Value,2) 単に、Range("A2").Valueと記載した場合、アクティブシートが指定されます。 つまり、正しくはActivesheet.Range("A2").Valueという表現になるのです。 ただし、これはsheet1が表示されている状態の場合(アクティブ)sheet1に代入されるし、sheet2が表示されている状態の場合(アクティブ)でsheet2に代入されます。 気をつけましょう。

関連するQ&A