Excel VBA質問箱 IV

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

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


10612 / 13646 ツリー ←次へ | 前へ→

【20829】何故エラー? さりさり 04/12/21(火) 19:00 質問[未読]
【20831】Re:何故エラー? Asaki 04/12/21(火) 20:08 回答[未読]
【20844】Re:何故エラー? さりさり 04/12/22(水) 9:38 お礼[未読]

【20829】何故エラー?
質問  さりさり  - 04/12/21(火) 19:00 -

引用なし
パスワード
   はじめまして,皆様。
さりさりといいます。
最近エクセルのVBをはじめたのですが,どうしても分からなくなったので質問させてください。

基本概念は,「"条件入力"シートにあるセルからデータを読み取って,それを変数H,B,TTに入力する」というのが考えたものなのですが,何回やっても「オブジェクトが必要です」エラーに悩まされています。

以下がコードです。

---
  Dim sht As Worksheet
  Dim X1, X2, Y1, Y2 As Double
  
  Dim H, H1, H2, H3, H4, H5, H6, H7 As Double
  Dim B, B1, B2, B3, B4, B5 As Double
  Dim TT As Double
  Dim I As Integer
  
   
  'Dim Ix As Integer
  
 Set sht = Worksheets("条件入力")
 
 Set H = sht.Cells(28, 2)
 Set B = sht.Cells(28, 5)
  
 Set TT = sht.Cells(28, 8)
---

条件入力シートの(28,2)セルには3,(28,5)セルには2.5,(28,8)セルには0.1といった数値が入力されています。

一体何故エラーなのか,お教え下さい。
宜しくお願い致します。

追伸:本当はH(0〜10)の様な配列変数としても扱いたかったのですが,それもまだ私のレベルでは早すぎたのか,エラーになってしまうので,何がなんだか分かりませんでした。

【20831】Re:何故エラー?
回答  Asaki  - 04/12/21(火) 20:08 -

引用なし
パスワード
   こんばんは。

オブジェクト変数に値をセットするときは Set が必要、
通常の変数に値を代入するときは、Set は不要
です。

ご提示のコードの場合、sht に値をセットするときだけ Set をつけます。
>Set sht = Worksheets("条件入力")
↑これはOK

>Set H = sht.Cells(28, 2)
↑は、
H = sht.Cells(28, 2).Value
です。(.Valueは省略しないほうが良いです)

また、変数のデータ型が意図と違うことになっていませんか?
>  Dim X1, X2, Y1, Y2 As Double
全てを Double のつもりなら
Dim X1 As Double, X2 As Double, Y1 As Double, Y2 As Double
とする必要があります。
上記の宣言では
Dim X1 As Variant, X2 As Variant, Y1 As Variant, Y2 As Double
の意味になっています。

【20844】Re:何故エラー?
お礼  さりさり  - 04/12/22(水) 9:38 -

引用なし
パスワード
   Asaki さん,回答ありがとうございました。
おかげで,エラーなくなりました。

>オブジェクト変数に値をセットするときは Set が必要、
>通常の変数に値を代入するときは、Set は不要
そうだったんですね。

変数の宣言についても丁寧にありがとうございました。

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