Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


21 / 13144 ツリー ←次へ | 前へ→

【79903】VBA配列への格納方法 mk 18/5/22(火) 13:50 質問[未読]
【79904】Re:VBA配列への格納方法 よろずや 18/5/22(火) 17:12 回答[未読]
【79905】Re:VBA配列への格納方法 mk 18/5/22(火) 17:53 質問[未読]
【79906】Re:VBA配列への格納方法 よろずや 18/5/22(火) 19:29 発言[未読]
【79910】Re:VBA配列への格納方法 mk 18/5/23(水) 10:05 回答[未読]
【79911】Re:VBA配列への格納方法 よろずや 18/5/23(水) 12:44 回答[未読]
【79912】Re:VBA配列への格納方法 mk 18/5/23(水) 14:14 質問[未読]
【79913】Re:VBA配列への格納方法 よろずや 18/5/23(水) 16:12 回答[未読]

【79903】VBA配列への格納方法
質問  mk  - 18/5/22(火) 13:50 -

引用なし
パスワード
   セルに表示された値のみを配列へ格納するにはどうしたら良いのでしょうか?

Sheet1の[A1]に数式[=100+200+A2](A2=300)が入力されている場合
この計算結果のみを配列へ格納してからSheet2の[B1]へ表示させようと思い下記の様なコードを作成してみました。

Sub rei()

Dim Sh1Range As Variant

Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")

Set Sh1Range = Sh1.Range("A1")

Sh1Range.Copy Sh2.Range("B1")

End Sub

結果Sheet2の[B1]には[600]という数値ではなく数式[=100+200+A2]が表示されてしまいました。
拙い文章ではありますが回答願います。

【79904】Re:VBA配列への格納方法
回答  よろずや  - 18/5/22(火) 17:12 -

引用なし
パスワード
   ▼mk さん:

>Set Sh1Range = Sh1.Range("A1")
>
>Sh1Range.Copy Sh2.Range("B1")

Sh2.Range("B1").Value = Sh1.Range("A1").Value

【79905】Re:VBA配列への格納方法
質問  mk  - 18/5/22(火) 17:53 -

引用なし
パスワード
   よろすや さん

回答ありがとうございます。

[A1]に該当する項目が多々ある為、処理時間を考えて
配列を使用したいのですが良い方法はないでしょうか?

【79906】Re:VBA配列への格納方法
発言  よろずや  - 18/5/22(火) 19:29 -

引用なし
パスワード
   ▼mk さん:
>[A1]に該当する項目が多々ある為、処理時間を考えて
>配列を使用したいのですが良い方法はないでしょうか?
2つのシート上の配列は、同じ形なのでしょうか?
そのセル範囲を明確にしてください。

【79910】Re:VBA配列への格納方法
回答  mk  - 18/5/23(水) 10:05 -

引用なし
パスワード
   ▼よろずや さん:
>▼mk さん:
>>[A1]に該当する項目が多々ある為、処理時間を考えて
>>配列を使用したいのですが良い方法はないでしょうか?

>2つのシート上の配列は、同じ形なのでしょうか?
>そのセル範囲を明確にしてください。

Sheet1とSheet2で配列は違います。

やりたいことのイメージは下記の様なことです

Sheet1 イメージ
      A        B         C   
1    =100+50+B1    1        
2    =200+60+B2    2        
3    =300+70+B3    3            
4    =400+80+B4    4            

Sheet2 イメージ
      A        B     C    
1    =100+50+B1  1,000       1    
2    =200+60+B2  2,000      2    
3    =300+70+B3  3,000     3    
4    =400+80+B4  4,000     4    

A列に表示されて欲しい値  実際に表示される値
151            1150 
262            2260
373            3370
484            4480

Sheet2のA列にはShet1のA列で計算された値のみを表示させたい
しかし数式がコピーされてしまうのでSheet2で計算された値が表示されてしまいます。

【79911】Re:VBA配列への格納方法
回答  よろずや  - 18/5/23(水) 12:44 -

引用なし
パスワード
   Option Explicit
Sub test()
Dim Array1 As Variant
  Array1 = Sheet1.Range("A1", "A4").Value
  Sheet2.Range("A1", "A4").Value = Array1
End Sub

他の列については、意味不明ですので省略。

【79912】Re:VBA配列への格納方法
質問  mk  - 18/5/23(水) 14:14 -

引用なし
パスワード
   ▼よろずや さん:
>Option Explicit
>Sub test()
>Dim Array1 As Variant
>  Array1 = Sheet1.Range("A1", "A4").Value
>  Sheet2.Range("A1", "A4").Value = Array1
>End Sub
>
>他の列については、意味不明ですので省略。

回答ありがとうございます。

下記部分についてなのですが
Array1 = Sheet1.Range("A1", "A4").Value
実際の表で実施しようとすると
[実行時エラー424:オブジェクトが必要です]と表示されるため
Set Array1 = Sheet1.Range("A1", "A4")
と記載しています。

Setステートメントを用いて記述するにはどうしたら良いでしょうか?

【79913】Re:VBA配列への格納方法
回答  よろずや  - 18/5/23(水) 16:12 -

引用なし
パスワード
   ▼mk さん:
>Array1 = Sheet1.Range("A1", "A4").Value
Array1 = Worksheets("Sheet1の実際の名前").Range("A1", "A4").Value


>Setステートメントを用いて記述するにはどうしたら良いでしょうか?
Setは使いません。

21 / 13144 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free