Excel VBA質問箱 IV

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

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


3699 / 13644 ツリー ←次へ | 前へ→

【60638】マッチングしたIPアドレスを抽出したい こまつ 09/3/6(金) 10:19 質問[未読]
【60639】Re:マッチングしたIPアドレスを抽出したい neptune 09/3/6(金) 10:33 発言[未読]
【60641】Re:マッチングしたIPアドレスを抽出したい Jaka 09/3/6(金) 10:57 発言[未読]
【60642】Re:マッチングしたIPアドレスを抽出したい こまつ 09/3/6(金) 11:31 質問[未読]
【60643】Re:マッチングしたIPアドレスを抽出したい こまつ 09/3/6(金) 11:34 発言[未読]

【60638】マッチングしたIPアドレスを抽出したい
質問  こまつ  - 09/3/6(金) 10:19 -

引用なし
パスワード
   Option Explicit

Sub pro1()
'変数の宣言
  Dim SH1 As Worksheet
  Dim SH2 As Worksheet
  Dim C As Long '行
  Dim L As Long '列
  Dim H As Variant
  Dim H2 As Variant
  Dim buf As Variant
  Dim buf2 As Variant
'定数の宣言
  Const AL = 1 'A列
  Const BL = 2 'B列

  Set SH1 = Worksheets("VRSRV11")
  Set SH2 = Worksheets("IPアドレス")
  
H = SH1.Range("B1:B525")
H2 = SH2.Range("A1:A865")
  
  For L = 1 To 865
    buf = H(L, BL) ←この部分で引数のエラーになります。
    buf2 = H2(L, AL)
      If buf = buf2 Then
        Debug.Print buf
      End If
  Next L
End Sub

VRSRV11シートのB1:B525には、IPアドレスが入っております。
そのIPアドレスと同じIPアドレスがIPアドレスシートにあった場合は、
表示するとしてるのですが、上記矢印部分でエラーとなります。
原因を教えていただけないでしょうか?

【60639】Re:マッチングしたIPアドレスを抽出したい
発言  neptune  - 09/3/6(金) 10:33 -

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

>H = SH1.Range("B1:B525")
>H2 = SH2.Range("A1:A865")
>  
>  For L = 1 To 865
>    buf = H(L, BL) ←この部分で引数のエラーになります。
>    buf2 = H2(L, AL)

ブレークポイントを
>←この部分で引数のエラーになります。
の行に置いてストップさせ、ローカルウィンドウで
HとL,BLのデータを観察したら原因はわかるんじゃないですか?

【60641】Re:マッチングしたIPアドレスを抽出したい
発言  Jaka  - 09/3/6(金) 10:57 -

引用なし
パスワード
   >'定数の宣言
>  Const AL = 1 'A列
>  Const BL = 2 'B列

>H = SH1.Range("B1:B525")  1列分しかない
>H2 = SH2.Range("A1:A865")  1列分しかない


>  
>  For L = 1 To 865
>    buf = H(L, BL) ←この部分で引数のエラーになります。
BLの初期値は2なので、配列Hには存在しない2列目を見るから...。
BLを1にしても、今度は525行分の配列しかないのに、それを超えた865まで見ようとするとエラーになります。

補足、
配列のイメージ、行列関係?は人それぞれだと思いますが、私の配列イメージはセルと同じ構造で創造しています。
実際メモリ上で、表を作るわけがないですけど。

【60642】Re:マッチングしたIPアドレスを抽出したい
質問  こまつ  - 09/3/6(金) 11:31 -

引用なし
パスワード
   ▼Jaka さん:
Option Explicit

Sub pro1()
'変数の宣言
  Dim SH1 As Worksheet
  Dim SH2 As Worksheet
  Dim C As Long '行
  Dim L As Long '列
  Dim H As Variant
  Dim H2 As Variant
  Dim buf As Variant
  Dim buf2 As Variant
'定数の宣言
  Const AL = 1 'A列
  Const BL = 2 'B列

  Set SH1 = Worksheets("VRSRV11")
  Set SH2 = Worksheets("IPアドレス")
  
H = SH1.Range("A1:B525")
H2 = SH2.Range("A1:B865")
Application.ScreenUpdating = False
  For L = 1 To 525
    buf = H(L, BL)
    For C = 1 To 512
      buf2 = H2(C, AL)
      If buf = buf2 Then
        SH1.Range(C, 4).Value = buf ←この部分でエラー
         'Debug.Print buf
      End If
    Next C
  Next L
Application.ScreenUpdating = True
End Sub

ご回答ありがとうございます。
先ほどの質問は解決したのですが、得られた結果を
転記する際にエラーとなってしまうのです。
rangeメソッドエラーとなってしまいます。
原因の教示をお願いします。

【60643】Re:マッチングしたIPアドレスを抽出したい
発言  こまつ  - 09/3/6(金) 11:34 -

引用なし
パスワード
   すいません。
自己解決致しました。
raneg(x,x)ではダメですよね。
cellsにしました。

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