Excel VBA質問箱 IV

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

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


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

【53511】リストボックスからの作業 ポポ 08/1/18(金) 15:07 質問[未読]
【53512】Re:リストボックスからの作業 じゅんじゅん 08/1/18(金) 15:35 発言[未読]
【53513】Re:リストボックスからの作業 ポポ 08/1/18(金) 16:10 質問[未読]
【53514】Re:リストボックスからの作業 neptune 08/1/18(金) 16:18 回答[未読]
【53515】Re:リストボックスからの作業 ポポ 08/1/18(金) 16:53 お礼[未読]
【53520】Re:リストボックスからの作業 neptune 08/1/18(金) 22:28 回答[未読]
【53522】Re:リストボックスからの作業 ポポ 08/1/19(土) 9:47 お礼[未読]
【53523】Re:リストボックスからの作業 ハト 08/1/19(土) 11:14 発言[未読]
【53529】Re:リストボックスからの作業 ポポ 08/1/19(土) 16:34 発言[未読]
【53530】Re:リストボックスからの作業 じゅんじゅん 08/1/20(日) 9:37 発言[未読]
【53531】Re:リストボックスからの作業 ハト 08/1/20(日) 12:33 発言[未読]
【53545】Re:リストボックスからの作業 ポポ 08/1/21(月) 10:02 発言[未読]
【53546】Re:リストボックスからの作業 じゅんじゅん 08/1/21(月) 10:14 発言[未読]
【53547】Re:リストボックスからの作業 りん 08/1/21(月) 10:15 発言[未読]
【53548】Re:リストボックスからの作業 ハト 08/1/21(月) 11:00 発言[未読]
【53551】Re:リストボックスからの作業 ポポ 08/1/21(月) 11:27 発言[未読]
【53552】Re:リストボックスからの作業 ポポ 08/1/21(月) 17:13 お礼[未読]

【53511】リストボックスからの作業
質問  ポポ  - 08/1/18(金) 15:07 -

引用なし
パスワード
   お世話になります。初心者ポポといいます。

ユーザーフォームのリストボックスで選択した科目と同じ名前のシート(開始画面.xlsのworksheets発注検収のrange("A1")に表示してあるファイルのworksheetです)Range("A1:I100")をコピーして違うファイル(開始画面.xls)のシートに貼り付けたいのですが、うまくいきません。どこが違うか教えていただけないでしょうか?


'科目シート表示

Private Sub OK_Click()
Dim 表示 As String
Dim Fn1, Fn2, パス As String


表示 = Me.lstKAMOKU.Text
If lstKAMOKU <> "" Then
  パス = ActiveWorkbook.Path & "\保存\"
  Fn1 = Dir(パス & Workbooks("開始画面.xls").Worksheets("開始").Range("A1").Value & ".xls")
 
  Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")
Else
  MsgBox ("科目が選択されていません")
  
End If
  
End Sub

【53512】Re:リストボックスからの作業
発言  じゅんじゅん  - 08/1/18(金) 15:35 -

引用なし
パスワード
   ▼ポポ さん:
>お世話になります。初心者ポポといいます。
>
>ユーザーフォームのリストボックスで選択した科目と同じ名前のシート(開始画面.xlsのworksheets発注検収のrange("A1")に表示してあるファイルのworksheetです)Range("A1:I100")をコピーして違うファイル(開始画面.xls)のシートに貼り付けたいのですが、うまくいきません。どこが違うか教えていただけないでしょうか?
>
>
>'科目シート表示
>
>Private Sub OK_Click()
>Dim 表示 As String
>Dim Fn1, Fn2, パス As String
>
>
>表示 = Me.lstKAMOKU.Text
>If lstKAMOKU <> "" Then
>  パス = ActiveWorkbook.Path & "\保存\"
>  Fn1 = Dir(パス & Workbooks("開始画面.xls").Worksheets("開始").Range("A1").Value & ".xls")
> 
>  Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")
>Else
>  MsgBox ("科目が選択されていません")
>  
>End If
>  
>End Sub


>  Workbooks("Fn1")
  Workbooks(Fn1)
変数を""でくくってはダメです。

あと、
>うまくいきません。
どううまくいかないのか?
各ブックと各シートの関係も明確にされては?

【53513】Re:リストボックスからの作業
質問  ポポ  - 08/1/18(金) 16:10 -

引用なし
パスワード
   ▼じゅんじゅん さん:
>▼ポポ さん:
>>お世話になります。初心者ポポといいます。
>>
>>ユーザーフォームのリストボックスで選択した科目と同じ名前のシート(開始画面.xlsのworksheets発注検収のrange("A1")に表示してあるファイルのworksheetです)Range("A1:I100")をコピーして違うファイル(開始画面.xls)のシートに貼り付けたいのですが、うまくいきません。どこが違うか教えていただけないでしょうか?
>>
>>
>>'科目シート表示
>>
>>Private Sub OK_Click()
>>Dim 表示 As String
>>Dim Fn1, Fn2, パス As String
>>
>>
>>表示 = Me.lstKAMOKU.Text
>>If lstKAMOKU <> "" Then
>>  パス = ActiveWorkbook.Path & "\保存\"
>>  Fn1 = Dir(パス & Workbooks("開始画面.xls").Worksheets("開始").Range("A1").Value & ".xls")
>> 
>>  Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")
>>Else
>>  MsgBox ("科目が選択されていません")
>>  
>>End If
>>  
>>End Sub
>
>
>>  Workbooks("Fn1")
>  Workbooks(Fn1)
>変数を""でくくってはダメです。
>
>あと、
>>うまくいきません。
>どううまくいかないのか?
>各ブックと各シートの関係も明確にされては?


じゅんじゅんさんお返答ありがとうございます。

Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")
がインデックスが有効範囲内にありませんと出てしまいます。

worksheets("表示")の表示の部分にリストボックスで選択した値を入れたいのですが、どうやったらいいのかわからないんです。
表示 = Me.lstKAMOKU.Textではだめなのでしょうか?
(lstKAMOKUはListBox1です)
色々調べて試してみたんですが、エラーになってしまって。

【53514】Re:リストボックスからの作業
回答  neptune  - 08/1/18(金) 16:18 -

引用なし
パスワード
   ▼ポポ さん:
こんにちは

先ず、意味の無い引用は止めて下さい。見にくいだけです。
>>>Dim Fn1, Fn2, パス As String

dim Fn1 as variant
dim Fn2 as variant
dim パスas String
と同義です。

>Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")
>がインデックスが有効範囲内にありませんと出てしまいます。
に対しては
>>>  Workbooks("Fn1")
>>  Workbooks(Fn1)
>>変数を""でくくってはダメです。
とアドバイスを既に頂いてます。このアドバイスの何が解らないのでしょう?

>worksheets("表示")の表示の部分にリストボックスで選択した値を入れたいのですが、どうやったらいいのかわからないんです。
>表示 = Me.lstKAMOKU.Textではだめなのでしょうか?
>(lstKAMOKUはListBox1です)
上記の処理で、lstKAMOKUで選択されているTextが変数「表示」に格納される
と思います。

【53515】Re:リストボックスからの作業
お礼  ポポ  - 08/1/18(金) 16:53 -

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

neptuneさんありがとうございます。

>>>変数を""でくくってはダメです。
>とアドバイスを既に頂いてます。このアドバイスの何が解らないのでしょう?

ここは理解したのですが、直すの忘れて質問にコピーしてしまいました。すみません。

それでもエラーがでるのは他に原因があるんですね。
がんばってみます。ありがとうございました。


>こんにちは
>
>先ず、意味の無い引用は止めて下さい。見にくいだけです。
>>>>Dim Fn1, Fn2, パス As String
>は
>dim Fn1 as variant
>dim Fn2 as variant
>dim パスas String
>と同義です。
>
>>Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")
>>がインデックスが有効範囲内にありませんと出てしまいます。
>に対しては
>>>>  Workbooks("Fn1")
>>>  Workbooks(Fn1)
>>>変数を""でくくってはダメです。
>とアドバイスを既に頂いてます。このアドバイスの何が解らないのでしょう?
>
>>worksheets("表示")の表示の部分にリストボックスで選択した値を入れたいのですが、どうやったらいいのかわからないんです。
>>表示 = Me.lstKAMOKU.Textではだめなのでしょうか?
>>(lstKAMOKUはListBox1です)
>上記の処理で、lstKAMOKUで選択されているTextが変数「表示」に格納される
>と思います。

【53520】Re:リストボックスからの作業
回答  neptune  - 08/1/18(金) 22:28 -

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

全く気にしてないようですが、
意味の無い引用は止めて下さい。見にくいだけです。

>それでもエラーがでるのは他に原因があるんですね。
>>Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検
「表示」ってのは変数じゃないんですか?

【53522】Re:リストボックスからの作業
お礼  ポポ  - 08/1/19(土) 9:47 -

引用なし
パスワード
   ▼neptune さん:
>▼ポポ さん:

表現がわかりにくかったかもしれません。スミマセン。
気にしていないわけがありません。
表示もFn1も変数なので直してあります。
それでもエラーになったんです。
ご指摘ありがとうございました。

>
>全く気にしてないようですが、
>意味の無い引用は止めて下さい。見にくいだけです。
>
>>それでもエラーがでるのは他に原因があるんですね。
>>>Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検
>「表示」ってのは変数じゃないんですか?

【53523】Re:リストボックスからの作業
発言  ハト  - 08/1/19(土) 11:14 -

引用なし
パスワード
   横から失礼します

▼ポポ さん:
どこでどのようなエラーが発生しているのか
どのようにうまくいかないのか
が書かれていないので

少々、確認させてください

1.正しいシート名はどちら?
>ユーザーフォームのリストボックスで選択した科目と同じ名前のシート
>(開始画面.xlsのworksheets発注検収のrange("A1")に表示してある
>ファイル

  Fn1 = Dir(パス & Workbooks("開始画面.xls").Worksheets("開始").Range("A1").Value & ".xls")

2. Fn1のファイルのオープンはいつ?
  オープン済みが前提ですか?

3.どこからどこへコピー? 
>ユーザーフォームのリストボックスで選択した科目と同じ名前のシート
>(開始画面.xlsのworksheets発注検収のrange("A1")に表示してある
>ファイルのworksheetです)Range("A1:I100")をコピーして
>違うファイル(開始画面.xls)のシートに貼り付け

  Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")

【53529】Re:リストボックスからの作業
発言  ポポ  - 08/1/19(土) 16:34 -

引用なし
パスワード
   ★ハトさんこんにちは

>
>1.正しいシート名はどちら?
>★全部表示してみました。シート名は .AddItem に表示してある事務用品などで す。
  Workbooks(Fn1).Worksheets(表示).Range("A1:I100") = Workbooks("開始画   面").Worksheets("発注検収").Range("A12:I112")この部分がインデックスが有  効範囲内にありませんと出てしまいます。

 Private Sub OK_Click()
  Dim 表示 As String
  Dim Fn1 As String
  Dim パス As String

  表示 = Me.lstKAMOKU.Text
  If lstKAMOKU <> "" Then
   パス = ActiveWorkbook.Path & "\保存\"
   Fn1 = Dir(パス & Workbooks("開始画面.xls").Worksheets("開始").Range    ("A1").Value & ".xls")
 
   Workbooks(Fn1).Worksheets(表示).Range("A1:I100") = Workbooks("開始画   面").Worksheets("発注検収").Range("A12:I112")
  Else
   MsgBox ("科目が選択されていません")
  
  End If
  
End Sub
Private Sub UserForm_Initialize()
  With lstKAMOKU
   .AddItem "事務用品"
   .AddItem "旅費交通費"
   .AddItem "修繕費"
 End With
 lstKAMOKU.ListIndex = -1
End Sub


>2. Fn1のファイルのオープンはいつ?
>  オープン済みが前提ですか?

★ Fn1のファイルオープンは起動と同時に開くように設定していますので、オープ  ン済みです。
>
>3.どこからどこへコピー? 
>>ユーザーフォームのリストボックスで選択した科目と同じ名前のシート
>>(開始画面.xlsのworksheets発注検収のrange("A1")に表示してある
>>ファイルのworksheetです)Range("A1:I100")をコピーして
>>違うファイル(開始画面.xls)のシートに貼り付け
>
>  Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")

★ 07SIMO.xlsから開始画面.xlsのWorksheets("発注検収")へコピーしたいので   す。
  わかりにくい説明ばかりで申し訳ありませんでした。よろしくお願いします。

【53530】Re:リストボックスからの作業
発言  じゅんじゅん  - 08/1/20(日) 9:37 -

引用なし
パスワード
   ▼ポポ さん:
>★ハトさんこんにちは
>
>>
>>1.正しいシート名はどちら?
>>★全部表示してみました。シート名は .AddItem に表示してある事務用品などで す。
>  Workbooks(Fn1).Worksheets(表示).Range("A1:I100") = Workbooks("開始画   面").Worksheets("発注検収").Range("A12:I112")この部分がインデックスが有  効範囲内にありませんと出てしまいます。

エラーが出て黄色くなっている時に変数Fn1と”表示”の所にカーソルを持って行けば、
Fn1=??? 表示=??? と言った具合に、
今何が代入されているのか? それが意図した物であるか否かがわかると思います。
その確認をされてますか?

【53531】Re:リストボックスからの作業
発言  ハト  - 08/1/20(日) 12:33 -

引用なし
パスワード
   ▼ポポ さん:
>★ハトさんこんにちは
>
>>
>>1.正しいシート名はどちら?
>>★全部表示してみました。シート名は .AddItem に表示してある事務用品などで す。
>  Workbooks(Fn1).Worksheets(表示).Range("A1:I100") = Workbooks("開始画   面").Worksheets("発注検収").Range("A12:I112")この部分がインデックスが有  効範囲内にありませんと出てしまいます。

開始画面.xlsのworksheets発注検収のrange("A1")と書かれているが
  Fn1 = Dir(パス & Workbooks("開始画面.xls").Worksheets("開始").Range("A1").Value & ".xls")
開始画面.xlsのWorksheets("開始").Range("A1").Value
となっている。
「発注検収」と「開始」どちらのシートから取ってくるのが正しいのですか?

インデックスのエラーは
Workbooks(Fn1)→引数にはフルパスではなくブック名だけを入れる

>>3.どこからどこへコピー? 
>>>ユーザーフォームのリストボックスで選択した科目と同じ名前のシート
>>>(開始画面.xlsのworksheets発注検収のrange("A1")に表示してある
>>>ファイルのworksheetです)Range("A1:I100")をコピーして
>>>違うファイル(開始画面.xls)のシートに貼り付け
>>
>>  Workbooks("Fn1").Worksheets("表示").Range("A1:I100") = Worksheets("発注検収").Range("A12:I112")
>
>★ 07SIMO.xlsから開始画面.xlsのWorksheets("発注検収")へコピーしたいので   す。
>  わかりにくい説明ばかりで申し訳ありませんでした。よろしくお願いします。

これではWorksheets("発注検収")からWorkbooks("Fn1").Worksheets("表示").Range("A1:I100")へのコピーです

【53545】Re:リストボックスからの作業
発言  ポポ  - 08/1/21(月) 10:02 -

引用なし
パスワード
   じゅんじゅんさん>
 初めて知りました(^^;)、確認したところFn1:"07SIMO.xls"、表示:"事務用品"になっていました。でもハトさんのご指摘だと、フルパスはだめなんですね。

ハトさん>
>>>
>>>1.正しいシート名はどちら?
>
>インデックスのエラーは
>Workbooks(Fn1)→引数にはフルパスではなくブック名だけを入れる

★ ブック名が常時同じではないのでフルパスにしたのですが、この場合はどのようにしたらいいのでしょうか?
>
>>>3.どこからどこへコピー? 
>
>これではWorksheets("発注検収")からWorkbooks("Fn1").Worksheets("表示").Range("A1:I100")へのコピーです

★あ!!そうでしたか!変更しました。

【53546】Re:リストボックスからの作業
発言  じゅんじゅん  - 08/1/21(月) 10:14 -

引用なし
パスワード
   ▼ポポ さん:
>じゅんじゅんさん>
>>インデックスのエラーは
>>Workbooks(Fn1)→引数にはフルパスではなくブック名だけを入れる
>
>★ ブック名が常時同じではないのでフルパスにしたのですが、この場合はどのようにしたらいいのでしょうか?

単にこれではダメですか?
Fn1 = Workbooks("開始画面.xls").Worksheets("開始").Range("A1").Value & ".xls"
開いているわけですよね?
開きたいのならDirもわかるのですが。

【53547】Re:リストボックスからの作業
発言  りん E-MAIL  - 08/1/21(月) 10:15 -

引用なし
パスワード
   ポポ さん、こんにちわ。

>Workbooks(Fn1).Worksheets(表示).Range("A1:I100") = Workbooks("開始画   面").Worksheets("発注検収").Range("A12:I112")

変数の中身はさておき、気になるところを。
 Workbookの引数が 「開始画面」 → 「開始画面.xls」
 コピー元と先でRangeの大きさが違います。 コピー先(上)100行 コピー元(下)101行

【53548】Re:リストボックスからの作業
発言  ハト  - 08/1/21(月) 11:00 -

引用なし
パスワード
   ▼ポポ さん:
>じゅんじゅんさん>
> 初めて知りました(^^;)、確認したところFn1:"07SIMO.xls"、表示:"事務用品"になっていました。でもハトさんのご指摘だと、フルパスはだめなんですね。
>
>ハトさん>
>>>>
>>>>1.正しいシート名はどちら?
>>
>>インデックスのエラーは
>>Workbooks(Fn1)→引数にはフルパスではなくブック名だけを入れる

ああ、勘違いしてました
Dir使ってるので、Fn1自体にはブック名しか入ってませんね(^^;
失礼しました

Indexエラーだと
・Book、Sheet名等の間違い
・正しいけど、そのブックが開かれていない
が原因として考えられます。

名称が正しいとすると、Bookが開かれていないのが
第一候補なんですが・・・
ブック名、シート名に半角・全角、スペース等の微妙な違いとかありませんか?

【53551】Re:リストボックスからの作業
発言  ポポ  - 08/1/21(月) 11:27 -

引用なし
パスワード
   じゅんじゅんさん、りんさん、ハトさんありがとうございます。
出来ました。

Fn1 = Workbooks("開始画面.xls").Worksheets("開始").Range("A1").Value & ".xls"にし、

Workbooks("開始画面.xls").Worksheets("発注検収").Range("A12:I112") = Workbooks(Fn1).Worksheets(表示).Range("A1:I100")
に変更したらエラーが出なくなりました。
でもコピーされないんです。 =ではなくcopyとpasteでやったほうがいいのでしょうか?

【53552】Re:リストボックスからの作業
お礼  ポポ  - 08/1/21(月) 17:13 -

引用なし
パスワード
   rangeをcellsにしたみたら出来ました。
皆様ありがとうございました。

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