Excel VBA質問箱 IV

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

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


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

【33307】ユーザーフォームに関して お願いします。 06/1/8(日) 17:11 質問[未読]
【33310】Re:ユーザーフォームに関して BB 06/1/8(日) 17:50 発言[未読]
【33340】Re:ユーザーフォームに関して お願いします。 06/1/9(月) 16:17 発言[未読]
【33343】Re:ユーザーフォームに関して かみちゃん 06/1/9(月) 16:37 回答[未読]
【33346】Re:ユーザーフォームに関して 初心者 06/1/9(月) 16:49 質問[未読]
【33347】Re:ユーザーフォームに関して awu 06/1/9(月) 16:52 回答[未読]
【33349】Re:ユーザーフォームに関して かみちゃん 06/1/9(月) 16:55 回答[未読]
【33358】Re:ユーザーフォームに関して お願いします。 06/1/9(月) 17:46 お礼[未読]
【33360】Re:ユーザーフォームに関して (゜Д゜)ハァ? 06/1/9(月) 17:57 発言[未読]

【33307】ユーザーフォームに関して
質問  お願いします。  - 06/1/8(日) 17:11 -

引用なし
パスワード
   説明が下手なのですが、宜しくお願いします。
1のエクセルファイルのシートAのA1にもし『10』と入力されていたら
10のシートの情報をユーザーフォームに表示させたいのですが、
下記のプログラムを書いたのですが、動きません誰か手直しを教えてください
お願いします。

Private Sub UserForm_Initialize()
  Dim WBS As Worksheet
  Dim NUM As Integer

  NUM = Workbooks("1.xls").Worksheets("A").Range("A1")
  
  Set WBS = Worksheets("NUM")
  
  With Workbooks("check.xls").WBS
    DateM = .Range("d5")
    DateD = .Range("f5")
  End With
End Sub

【33310】Re:ユーザーフォームに関して
発言  BB  - 06/1/8(日) 17:50 -

引用なし
パスワード
   ▼お願いします。 さん:
>説明が下手なのですが、宜しくお願いします。
>1のエクセルファイルのシートAのA1にもし『10』と入力されていたら
>10のシートの情報をユーザーフォームに表示させたいのですが、
>下記のプログラムを書いたのですが、動きません誰か手直しを教えてください
>お願いします。
>
>Private Sub UserForm_Initialize()
>  Dim WBS As Worksheet
>  Dim NUM As Integer
>
>  NUM = Workbooks("1.xls").Worksheets("A").Range("A1")
>  
>  Set WBS = Worksheets("NUM")
>  
>  With Workbooks("check.xls").WBS
>    DateM = .Range("d5")
>    DateD = .Range("f5")
>  End With
>End Sub

シートAのA1の入力されている情報の判定がどこにも書かれてませんよね。
10のシートの情報って?NUMってシートのことですか?

【33340】Re:ユーザーフォームに関して
発言  お願いします。  - 06/1/9(月) 16:17 -

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

説明不足て申し訳御座いません。
NUMはシートの事でシートは「1」〜「20」まで全く同じ形式であり
なかのTextのみ違います。

例えはd5が1であったり2であったりします。

>▼お願いします。 さん:
>>説明が下手なのですが、宜しくお願いします。
>>1のエクセルファイルのシートAのA1にもし『10』と入力されていたら
>>10のシートの情報をユーザーフォームに表示させたいのですが、
>>下記のプログラムを書いたのですが、動きません誰か手直しを教えてください
>>お願いします。
>>
>>Private Sub UserForm_Initialize()
>>  Dim WBS As Worksheet
>>  Dim NUM As Integer
>>
>>  NUM = Workbooks("1.xls").Worksheets("A").Range("A1")
>>  
>>  Set WBS = Worksheets("NUM")
>>  
>>  With Workbooks("check.xls").WBS
>>    DateM = .Range("d5")
>>    DateD = .Range("f5")
>>  End With
>>End Sub
>
>シートAのA1の入力されている情報の判定がどこにも書かれてませんよね。
>10のシートの情報って?NUMってシートのことですか?

【33343】Re:ユーザーフォームに関して
回答  かみちゃん  - 06/1/9(月) 16:37 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1のエクセルファイルのシートAのA1にもし『10』と入力されていたら
>10のシートの情報をユーザーフォームに表示させたいのですが、

Set WBS = Worksheets("NUM")
これでは、「NUM」という名前のシートを参照します。
そうではなくて、NUMは変数ですよね?

つまり、1.xlsのAというシートのA1セルの値で、コロコロ変わりよね?
となると、
Set WBS = Worksheets(Format(NUM, "@"))
とします。

なお、
Set WBS = Worksheets(NUM)
とすると、NUM 番目のシートを参照して、参照したいシートが異なる場合がありますので注意してください。

いずれにしても、変数名を " " でくくると、文字列になってしまいます。
今回の場合、変数 NUM を "NUM" としてしまうと「NUM」という文字列というわけです。

【33346】Re:ユーザーフォームに関して
質問  初心者  - 06/1/9(月) 16:49 -

引用なし
パスワード
   かみちゃん様教えてくださって有難う御座います。

教えて頂いたように下記のように変更して実行してみたのですが、
『実行時エラー'483’ オブジェクトは、このプロパティまたはメソッドをサポートしていません』
といったエラーが発生しました。

Private Sub UserForm_Initialize()
  Dim WBS As Worksheet
  Dim NUM As Integer

  NUM = Workbooks("1.xls").Worksheets("A").Range("A1")
  
  Set WBS = Worksheets(Format(NUM, "@"))
  
  With Workbooks("check.xls").WBS
    DateM = .Range("d5")
    DateD = .Range("f5")
  End With
End Sub

すこし不思議に思い、ちょっとテストで

Private Sub UserForm_Initialize()
  Dim WBS As Worksheet
  
  Set WBS = Worksheets("1")
  
  With Workbooks("check.xls").WBS
    DateM = .Range("d5")
    DateD = .Range("f5")
  End With
End Sub

と実行してみたのですが、これもまた同じエラーがでてしまって困ってます。
どうしたら良いでしょうか?

助けて下さい。お願い致します

【33347】Re:ユーザーフォームに関して
回答  awu  - 06/1/9(月) 16:52 -

引用なし
パスワード
   たぶん、こういうことだと思いますが・・・

"1" というシート名ですと、Integerのままで指定するとシートのIndexになりますよ。

> Set WBS = Worksheets("NUM") <--- "" で括ると"NUM" というシートを指す。
  
>  With Workbooks("check.xls").WBS <--- 構文が変です。


Private Sub UserForm_Initialize()
  Dim NUM As Integer
  NUM = Workbooks("1.xls").Worksheets("A").Range("A1").Value
  With Workbooks("check.xls").Sheets(CStr(NUM))
    DateM = .Range("d5").Value
    DateD = .Range("f5").Value
  End With
End Sub

【33349】Re:ユーザーフォームに関して
回答  かみちゃん  - 06/1/9(月) 16:55 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>教えて頂いたように下記のように変更して実行してみたのですが、
>『実行時エラー'483’ オブジェクトは、このプロパティまたはメソッドをサポートしていません』
>といったエラーが発生しました。

最初にきちんと見ておけばよかったですね。

>  With Workbooks("check.xls").WBS

こういう使い方をしたいならば、
Set WBS = Workbooks("check.xls").Worksheets(Format(NUM, "@"))
With WBS 'Bookの指定は、WBSの中に含まれている
 '〜省略〜
としてください。

Set WBS = Worksheets(Format(NUM, "@"))
とすると、アクティブブックの変数NUMの名前のシートを参照します。

※「お願いします」さんと「初心者」さんは同じ方ですか?

【33358】Re:ユーザーフォームに関して
お礼  お願いします。  - 06/1/9(月) 17:46 -

引用なし
パスワード
   かみちゃん様有難うございます。
解決しました。

有難うございます。

*お願いしますと初心者は別のExcelファイルをつついている同僚です。

【33360】Re:ユーザーフォームに関して
発言  (゜Д゜)ハァ?  - 06/1/9(月) 17:57 -

引用なし
パスワード
   > *お願いしますと初心者は別のExcelファイルをつついている同僚です。
そんないいわけいらないです。
それよりも、ふざけた投稿者名をつけないように。
"お願いします"や"初心者"であることは、最初の紹介で記載すべきことで、
投稿者名にするものではないです。

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