Excel VBA質問箱 IV

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

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


7533 / 13645 ツリー ←次へ | 前へ→

【38414】異なるブックの指定方法 ハーレーダビットソン 06/6/2(金) 10:08 質問[未読]
【38415】Re:異なるブックの指定方法 Statis 06/6/2(金) 10:17 回答[未読]
【38423】Re:異なるブックの指定方法 ハーレーダビットソン 06/6/2(金) 13:08 質問[未読]
【38424】Re:異なるブックの指定方法 Statis 06/6/2(金) 13:38 発言[未読]
【38427】Re:異なるブックの指定方法 ハーレーダビットソン 06/6/2(金) 15:44 発言[未読]
【38428】Re:異なるブックの指定方法 Statis 06/6/2(金) 16:08 発言[未読]
【38505】Re:異なるブックの指定方法 ハーレーダビットソン 06/6/5(月) 14:01 お礼[未読]
【38429】Re:異なるブックの指定方法 ハト 06/6/2(金) 16:25 回答[未読]
【38418】Re:異なるブックの指定方法 Kein 06/6/2(金) 11:06 発言[未読]
【38419】Re:異なるブックの指定方法 Kein 06/6/2(金) 11:11 発言[未読]

【38414】異なるブックの指定方法
質問  ハーレーダビットソン  - 06/6/2(金) 10:08 -

引用なし
パスワード
   Dim WB1 As Workbook, WB2 As Workbook
Dim WS1 As Worksheet, WS2 As Worksheet

Set WB1 = ThisWorkbooks("test-2date")
Set WB2 = ThisWorkbooks("test-2DB")

Set WS1 = WB1.Worksheets("sheet1")
Set WS2 = WB2.Worksheets("sheet1")

のように、異なるブックのsheet1の指定をしたいのですが
何故だかうまくいきません。一体どこがおかしのか指摘をお願いします。
(この後にWS1のセルとWS2のセルの値の比較をしていきます)
よろしくお願いします。

【38415】Re:異なるブックの指定方法
回答  Statis  - 06/6/2(金) 10:17 -

引用なし
パスワード
   こんにちは

こんな感じです。

Dim WB1 As Workbook, WB2 As Workbook
Dim WS1 As Worksheet, WS2 As Worksheet

Set WB1 = Workbooks("test-2date.xls")
Set WB2 = Workbooks("test-2DB.xls")

Set WS1 = WB1.Worksheets("sheet1")
Set WS2 = WB2.Worksheets("sheet1")


または

Set WS1 = Workbooks("test-2date.xls").Worksheets("sheet1")
Set WS2 = Workbooks("test-2DB.xls").Worksheets("sheet1")


「ThisWorkbookプロパティ」はコードを記載しているファイルの事です
なんので下記になります。
Set WS1 = ThisWorkbook.Worksheets("Sheet1")

【38418】Re:異なるブックの指定方法
発言  Kein  - 06/6/2(金) 11:06 -

引用なし
パスワード
   ThisWorkbookの間違い以外で

Worksheets("sheet1")
      ↑ここを大文字にしていないことが、失敗の原因になりそうですが・・。

【38419】Re:異なるブックの指定方法
発言  Kein  - 06/6/2(金) 11:11 -

引用なし
パスワード
   sheet ではなく Sheet の誤りではないか ? ということです。
デフォルトでは決して sheet になりません。意図的にシート名を
変更しない限り、"S"が"s"にはならないのです。
オブジェクトを名前で指定するときは、大文字・小文字や
半角・全角の違いも正確にやらないと、必ずエラーになります。

【38423】Re:異なるブックの指定方法
質問  ハーレーダビットソン  - 06/6/2(金) 13:08 -

引用なし
パスワード
   ▼Statis さん:
ありがとうございました。
ちなみに今こんな感じで異なるbookのsheet1同士を比較しています。
質問はWS1は固定値で、対するWS2の値が全角・半角、大文字・小文字
でも値や文字列が同一ならば「同一、成功」にする条件ってつけられますか?

Sub 判定()

Dim WB1 As Workbook, WB2 As Workbook
Dim WS1 As Worksheet, WS2 As Worksheet

Set WB1 = Workbooks("test-2date.xls")
Set WB2 = Workbooks("test-2DB.xls")

Set WS1 = WB1.Worksheets("sheet1")
Set WS2 = WB2.Worksheets("sheet1")

X = 8

Do While Cells(X, 5) <> ""

If WS1.Cells(X, 5) = WS2.Cells(2, 53) Then
  WS2.Cells(X, 58).Value = "同一"
   Else: WS2.Cells(X, 58).Value = ""
End If

If WS1.Cells(X, 7).Value >= WS2.Cells(2, 55) And WS1.Cells(X, 7).Value <= WS2.Cells(2, 56) Then
  WS2.Cells(X, 59).Value = "big"
  WS2.Cells(X, 60).Value = "mid"
  WS2.Cells(X, 61).Value = "reg"
End If

If WS1.Cells(X, 13).Value = WS2.Cells(X, 59).Value Or _
  WS1.Cells(X, 13).Value = WS2.Cells(X, 60).Value Or _
  WS1.Cells(X, 13).Value = WS2.Cells(X, 61).Value Then
  WS2.Cells(X, 62).Value = "成功"
Else
  WS2.Cells(X, 62).Value = "失敗"
End If

If WS2.Cells(X, 58).Value = "同一" And WS2.Cells(X, 62).Value = "成功" Then
  WS1.Cells(X, 14).Value = "★"
Else
  WS1.Cells(X, 14).Value = "☆"
End If

X = X + 1
Loop

WS2.Columns(58).Value = ""
WS2.Columns(59).Value = ""
WS2.Columns(60).Value = ""
WS2.Columns(61).Value = ""
WS2.Columns(62).Value = ""
WS2.Columns(63).Value = ""
WS2.Columns(64).Value = ""
WS2.Columns(65).Value = ""

End Sub

よろしくお願いします。

【38424】Re:異なるブックの指定方法
発言  Statis  - 06/6/2(金) 13:38 -

引用なし
パスワード
   ▼ハーレーダビットソン さん:
こんにちは
>ちなみに今こんな感じで異なるbookのsheet1同士を比較しています。
>質問はWS1は固定値で、対するWS2の値が全角・半角、大文字・小文字
>でも値や文字列が同一ならば「同一、成功」にする条件ってつけられますか?
記載のコードでは上手く行かないと行く事ですか?

WS1の固定値とはどう言うことですか?
コードも見るとWS2の一定のセルの値とWS1の変動させるセルの値を
比較しているように思いますが?

各ファイルのシートレイアウトを記載してどのようにしたいのか
具体的に記載下さい。

【38427】Re:異なるブックの指定方法
発言  ハーレーダビットソン  - 06/6/2(金) 15:44 -

引用なし
パスワード
   ▼Statis さん:
>▼ハーレーダビットソン さん:
>こんにちは
>>ちなみに今こんな感じで異なるbookのsheet1同士を比較しています。
>>質問はWS1は固定値で、対するWS2の値が全角・半角、大文字・小文字
>>でも値や文字列が同一ならば「同一、成功」にする条件ってつけられますか?
>記載のコードでは上手く行かないと行く事ですか?
 現状のコードでは
(例1)WS1:カタカナ⇔WS2:カタカナ:同一
    WS1:カタカナ⇔WS2:カタカナ:不一致
(例2)WS1:0004⇔0004:同一
    WS2:0004⇔0004:不一致
になってしまいます。
上記の例の不一致になってしまう値を同一とさせることは可能なのでしょうか?

【38428】Re:異なるブックの指定方法
発言  Statis  - 06/6/2(金) 16:08 -

引用なし
パスワード
   こんにちは

Option Compare ステートメントを使ってみては如何でしょうか?

subプロシージャの前に記載します。


Option Compare Text
Sub Test()

記載コード


End Sub

【38429】Re:異なるブックの指定方法
回答  ハト  - 06/6/2(金) 16:25 -

引用なし
パスワード
   こんにちは

▼ハーレーダビットソン さん:
>▼Statis さん:
>>▼ハーレーダビットソン さん:
>>こんにちは
>>>ちなみに今こんな感じで異なるbookのsheet1同士を比較しています。
>>>質問はWS1は固定値で、対するWS2の値が全角・半角、大文字・小文字
>>>でも値や文字列が同一ならば「同一、成功」にする条件ってつけられますか?
>>記載のコードでは上手く行かないと行く事ですか?
> 現状のコードでは
>(例1)WS1:カタカナ⇔WS2:カタカナ:同一
>    WS1:カタカナ⇔WS2:カタカナ:不一致
>(例2)WS1:0004⇔0004:同一
>    WS2:0004⇔0004:不一致
>になってしまいます。
>上記の例の不一致になってしまう値を同一とさせることは可能なのでしょうか?

比較しているところを

ではなく
StrComp
を使ってみるとよいかと思います

If WS1.Cells(X, 5) = WS2.Cells(2, 53) Then
 ↓
If StrComp(WS1.Cells(X, 5).Value, WS2.Cells(2, 53).Value, 1) = 0 Then

【38505】Re:異なるブックの指定方法
お礼  ハーレーダビットソン  - 06/6/5(月) 14:01 -

引用なし
パスワード
   ▼Statis さん:
ありがとうございました。
バッチリ動きました。
またよろしくお願いします。

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