|
▼美貴 さん:
>ブックAのシートaが参照元、ブックBのシートbが参照先
>としますと、
>
>=INDEX('C:\[B.xls]b'!$D$311:$AH$612,MATCH($A4,'C:\[B.xls]b'!$B$311:$B$612,0),MATCH(E$2,'C:\[B.xls]b'!$D$7:$AH$7,0))
>のようにしたいです。
前レスに
>私がやりたいことですが、ブックを2つ開いておいて
とありますので、パス名は要らないような気もします。
>>ウィザードとして使用するなら、
>>UserFormで作ったほうが良いのでは?
>そうですね。
>うなくいったら、バージョンアップしてみます ^^;
これは「後から見直せる」という意味だけではなくて、
Application.InputBoxだと
他のBookの参照がうまくいかないからです。
(記憶違いならスイマセン)
UserFormにTextBox1,CommandButton1を配置
下記のコードを試してみてください。
モードレスにしたいのでSub Mainで呼び出してください。
エラー処理はテキトーですので、適時追加してください。
'標準モジュール
Sub Main()
UserForm1.Show False
End Sub
'UserForm1モジュール
Option Explicit
Private Sub CommandButton1_Click()
If TypeName(Selection) <> "Range" Then
MsgBox "セルの範囲を選択してください"
Exit Sub
End If
Me.TextBox1.Value = func_To_Adr(Selection)
End Sub
Private Function func_To_Adr(Rng As Range) As String
Dim Str As String
Str = "'" & Rng.Parent.Parent.Path 'Path
Str = Str & "\[" & Rng.Parent.Parent.Name & "]" 'Book名
Str = Str & Rng.Parent.Name & "'!" 'WorkSheet名
Str = Str & Rng.Address(0, 0) 'セルのアドレス
func_To_Adr = Str
End Function
|
|