アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロを作成しておりますして、わかりづらいか質問もしれませんが宜しくお願いします。
(1)マクロを配布し先方(複数拠点)で持っているブックに変更をかけ
 たい。
(2)そのブック内には複数シートがあり、計算式で他シートを参照して
 いる。
(3)その計算式を変更かけたい。が(2)でいう参照シートのシート名を各
 拠点にて変更しているので、計算式も変更後のシート名が入って
 いる。

例えば、
シート1のA1セルに「=(xxxxx)!B1/C5」という式を埋め込みたい。 
  ※(xxxxx)はシート名。
でも、(xxxxx)のシート名は拠点によってシート名がことなることが
問題。尚、シート名以降の計算式は全拠点共通。

そこで、こんなことがやれればのイメージですが
イメージ1:
シート1の他のセル(D1)で(xxxxx)と同じシート名を参照している
式が必ず存在している。拠点毎にシート名は異なるがセル(D1)の
場所は共通。
このセル(D1)の式からシート名を抽出し、上の「=(xxxxx)!B1/C5」
の(xxxxx)に入れて、シート1のA1セルにこの計算式を記載する
マクロを作る

イメージ2:
もし「=(xxxxx)!B1/C5」の(xxxxx)部分に仮名称を入れたものを
マクロでシート1のA1セルに書き込んだあと、各拠点にて(xxxxx)
→それぞれ拠点で使っているシート名に置換する ような方法があ
るか?(存在しない参照シート名のまま書き込むとファイル指定の
ダイアログが開くので、開かないような汎用的な記述を一旦仮置き
できないか?)

以上宜しくお願いしたします

A 回答 (2件)

こちらでどうでしょうか。


Split関数で文字列を区切る
http://officetanaka.net/excel/vba/tips/tips62.htm
    • good
    • 0
この回答へのお礼

ありがとうございました とても助かりました!

お礼日時:2009/06/14 09:15

数式からシート名の抽出例


数式の、= 直後にシート名がある場合です。

Dim f As String
Dim n As Integer
f = Sheets("シート1").Range("D1").Formula
n = InStr(f, "!")
MsgBox Mid(f, 2, n - 2)
とか
Dim f As String
f = Sheets("シート1").Range("D1").Formula
MsgBox Split(Split(f, "=")(1), "!")(0)


D1セルの数式からシート名を抽出
参照シート名を当てはめてからA1に書き込む
というようにすればどうでしょうか。

Dim f As String
Dim ws As String
f = Sheets("シート1").Range("D1").Formula
ws = Split(Split(f, "=")(1), "!")(0)
Sheets("シート1").Range("A1").Formula = "=" & ws & "!B1/C5"

この回答への補足

ありがとうございます。教えていただいた
 Dim f As String
 Dim ws As String
 f = Sheets("シート1").Range("D1").Formula
 ws = Split(Split(f, "=")(1), "!")(0)
 Sheets("シート1").Range("A1").Formula = "=" & ws & "!B1/C5"
で、うまくいきそうです。
Splitは知らなくてネット見ても今一使い方が?なんで、宜しければ意味が分かればと・・・
4行目の「f」→対象も文字列、「"="」→区切り?、「(1)」「(0)」の
意味は?  

補足日時:2009/06/13 09:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています