2017-03-27 16 views
0

if-thenステートメントを実行するコードがあります。範囲を再選択したいかどうかをユーザーに尋ね、最後に選択した範囲を使用します。私はそれの最初の部分を持っていますが、私は範囲のアドレスを格納するとき、私はそれを戻す方法を理解することはできません。コードについては以下を参照してください。範囲のアドレスをセル値として保存し、VBAの後の範囲で使用します。

NewNS = MsgBox("Would you like to pick new Force ID's in the North-South direction?", vbYesNo, "Roof North-South") 
    If NewNS = vbYes Then 
    Worksheets("ShearWalls").Activate 
    Do Until CheckNS = vbYes 
     On Error Resume Next 
     Set rngNS = Application.InputBox("Select your Force ID's (North-South)", "Roof North-South", Type:=8) 
     On Error GoTo EndJump 
     CheckNS = MsgBox("The cells selected were " & rngNS.Address & " for North-South. Is this correct?", vbYesNo, "Roof North-South") 
    Loop 
    Worksheets("Reference").Range("B739").Value = rngNS.Address 
    Else 
     Setrng = Worksheets("Reference").Range("B739").Value 
     Set rngNS = Range(Setrng) 
    End If 

いくつかの点で単純化することができますが、私はそれが最初に機能することを確認したいと思います。ありがとうございました!

答えて

1

セル値として格納されているアドレスを使用して範囲を構築します。 Worksheets("ShearWalls").Activateを使用していますが、Range("B739")に格納されているアドレスの親を認定していません。

それはあなたが参照しようとしているワークシートあなたの物語からは不明ですが、私はあなたがリファレンスワークシートではなく、ShearWallsワークシートからthte範囲をしたいと仮定するつもりです。

with Worksheets("Reference") 
    Setrng = .Range("B739").Value2 
    Set rngNS = .Range(Setrng) 
end with 
+0

ワークシートが重要かどうかはわかりませんが、そのコードは機能していないようです。私は何をしようとしているのかを説明し、別のコードがうまくいくかどうかを説明します。 A1セルに '$ A $ 18:$ A $ 20'と入力します。私は自分のVBAコードにA1で指定したセル範囲を取得させたいと思っていました。もし私が望むのであれば、手動で変更することができました。 ご協力いただきありがとうございます。 @Jeeped – CameronJBest

+0

私は今あなたが@Jeepedを意味するものを理解したと思う。 私は 'エルス Setrng =ワークシート( "リファレンス")状態に、コードの' Else'セクションを変更しました。レンジ( "B739")。バリュー 設定rngNS =ワークシート( "Shearwalls")。レンジ(Setrng) End If' 必要な値を入力してください。再度、感謝します。 – CameronJBest

関連する問題