|
かみちゃん さん
ありがとうございます。
色々やって無理やりできるようにはなったのですが、
検索行、検索列をアクティブでないブックのセル番地を
指定したときに、その絶対参照がNGです。
下記では、無理やりブック名、シート名を置換しています。
多分もっとスマートな方法があると思いますが
お時間ございましたら、ご教示お願い致します。^^;
'
Sub lookupウイザード()
'
'
Dim 数式, 置換後
Dim 検索列, 検索行, 検索対象, 対象行ベクトル, 対象列ベクトル
Dim 原価センタ開始位置, 勘定コード開始位置, ブック, シート
原価センタ開始位置 = "E$2"
勘定コード開始位置 = "$A4"
ブック = ActiveWorkbook.Name
シート = ActiveSheet.Name
検索行 = ""
検索行 = Application.InputBox("検索行の先頭セルを入力して下さい。", _
, , _
offset値x, offset値y, , , 8) _
.Address(True, True, xlA1, True)
If 検索行 = "" Then
Exit Sub
End If
検索列 = ""
検索列 = Application.InputBox("検索列の先頭セルを入力して下さい。", , _
, offset値x, offset値y, , , 8) _
.Address(True, True, xlA1, True)
If 検索列 = "" Then
Exit Sub
End If
置換後 = Left(Range(検索行).Address(True, True, xlA1, True), InStr(Range(検索行).Address(True, True, xlA1, True), "!") - 1)
Set 検索対象 = Range(Cells(Range(検索行).Row, Range(検索列).Column), Cells(Range(検索行).Row + 1000, Range(検索列).Column + 200))
Set 対象行ベクトル = Range(Cells(Range(検索行).Row, Range(検索行).Column), Cells(Range(検索行).Row + 1000, Range(検索行).Column))
Set 対象列ベクトル = Range(Cells(Range(検索列).Row, Range(検索列).Column), Cells(Range(検索列).Row, Range(検索列).Column + 200))
数式 = "=INDEX(" & 検索対象.Address(True, True, xlA1, True) & ",MATCH(" & 勘定コード開始位置 & "," _
& 対象行ベクトル.Address(True, True, xlA1, True) & ",0),MATCH(" & 原価センタ開始位置 & "," _
& 対象列ベクトル.Address(True, True, xlA1, True) & ",0))"
数式 = Replace(数式, "[" & ブック & "]" & シート, 置換後)
ActiveCell.Formula = 数式
'
End Sub
|
|