Excel VBA質問箱 IV

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

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


6629 / 13646 ツリー ←次へ | 前へ→

【16911】名前の定義の変更 ポンタ 04/8/16(月) 10:37 質問[未読]
【16913】Re:名前の定義の変更 IROC 04/8/16(月) 11:25 回答[未読]
【16929】Re:名前の定義の変更 ポンタ 04/8/16(月) 17:18 質問[未読]
【16932】Re:名前の定義の変更 IROC 04/8/16(月) 17:35 回答[未読]
【16933】Re:名前の定義の変更 ポンタ 04/8/16(月) 17:44 質問[未読]
【16935】Re:名前の定義の変更 IROC 04/8/16(月) 17:56 回答[未読]
【16936】Re:名前の定義の変更 ポンタ 04/8/16(月) 18:00 質問[未読]
【16937】Re:名前の定義の変更 IROC 04/8/16(月) 18:15 回答[未読]
【16938】Re:名前の定義の変更 IROC 04/8/16(月) 18:24 回答[未読]
【16939】Re:名前の定義の変更 IROC 04/8/16(月) 18:28 回答[未読]
【16954】Re:名前の定義の変更 ポンタ 04/8/17(火) 11:00 質問[未読]
【16955】Re:名前の定義の変更 IROC 04/8/17(火) 11:21 回答[未読]
【16956】Re:名前の定義の変更 ポンタ 04/8/17(火) 11:52 質問[未読]
【16957】Re:名前の定義の変更 IROC 04/8/17(火) 13:12 回答[未読]
【16958】Re:名前の定義の変更 IROC 04/8/17(火) 13:13 回答[未読]
【16959】削除は巧くいきました!! ポンタ 04/8/17(火) 13:27 質問[未読]
【16960】Re:削除は巧くいきました!! IROC 04/8/17(火) 13:56 回答[未読]
【16965】Re:削除は巧くいきました!! ポンタ 04/8/17(火) 16:17 質問[未読]
【16966】Re:削除は巧くいきました!! IROC 04/8/17(火) 16:23 回答[未読]
【16968】Re:削除は巧くいきました!! ポンタ 04/8/17(火) 17:12 質問[未読]
【16969】Re:削除は巧くいきました!! IROC 04/8/17(火) 17:25 回答[未読]
【16970】少し直して巧くいきました。 ポンタ 04/8/17(火) 18:30 お礼[未読]
【16971】Re:少し直して巧くいきました。 IROC 04/8/17(火) 18:37 回答[未読]
【16972】Re:少し直して巧くいきました。 ポンタ 04/8/17(火) 19:01 質問[未読]
【16973】Re:少し直して巧くいきました。 IROC 04/8/17(火) 19:50 回答[未読]
【16974】Re:少し直して巧くいきました。 ポンタ 04/8/17(火) 21:01 お礼[未読]

【16911】名前の定義の変更
質問  ポンタ  - 04/8/16(月) 10:37 -

引用なし
パスワード
   名前の定義が50個くらいあるBOOKがあったのですが、
BOOKをコピーしたところ、全部前のBOOKからの参照になってしまい
パニクっています。

いちいち、名前を変更して行くしかないのでしょうか?
マクロで一気に変えてしまうことはできませんか?

なお、マクロ記録で少しやってみたのですが、
rc参照が現れ(よく知らないために)とても扱い難い状態です。

【16913】Re:名前の定義の変更
回答  IROC  - 04/8/16(月) 11:25 -

引用なし
パスワード
   何を、どのように変更したいのでしょうか?

具体例を書いて頂けないでしょうか?

【16929】Re:名前の定義の変更
質問  ポンタ  - 04/8/16(月) 17:18 -

引用なし
パスワード
   ▼IROC さん:
>何を、どのように変更したいのでしょうか?
>
>具体例を書いて頂けないでしょうか?

早々のレスありがとうございます。

最初「2004年度モデル.xls」というBOOKで名前を定義していたのですが、例えば、以下のようであったとします。

DS1=Cholesky分解!$F$34
DS2=Cholesky分解!$F$35
・・・
DS49=Cholesky分解!$F$82
DS50=Cholesky分解!$F$83

このBOOKをエクスプローラー上でコピーしたら

DS1='D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]Cholesky分解'!$F$34
DS2='D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]Cholesky分解'!$F$35
・・・
DS49='D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]Cholesky分解'!$F$82
DS50='D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]Cholesky分解'!$F$83

となって、昔の「2004年度モデル.xls」を参照するように指定されてしまいました(;_;)

要は、これを単純に

DS1=Cholesky分解!$F$34
DS2=Cholesky分解!$F$35
・・・
DS49=Cholesky分解!$F$82
DS50=Cholesky分解!$F$83

として新BOOKに定義したいのです。
・・・ができません(;_;)。

1個1個名前を定義しなおすのも面倒だし・・・(゚゚)
マクロもあまり巧くないし(上記は例です。実際には、こんなにきれいに整合性ある名前をつけているわけではありません)・・・

何か、良い方法はないものでしょうか?

【16932】Re:名前の定義の変更
回答  IROC  - 04/8/16(月) 17:35 -

引用なし
パスワード
   一般機能の「置換」で出来ませんか?

【16933】Re:名前の定義の変更
質問  ポンタ  - 04/8/16(月) 17:44 -

引用なし
パスワード
   ▼IROC さん:
>一般機能の「置換」で出来ませんか?

挿入⇒名前⇒定義
でかかれているデータに置換を使うことができるのですか??

1件1件
名前の定義⇒(変更)⇒追加
で修正して行くしか思いつかなかったのですが・・・
もしかしたら、何か、すごく簡単な方法で置換できるのでしょうか?

【16935】Re:名前の定義の変更
回答  IROC  - 04/8/16(月) 17:56 -

引用なし
パスワード
   >'D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]
 ↓
 "" (なし)

に「置換」すればよいかと思いました。

【16936】Re:名前の定義の変更
質問  ポンタ  - 04/8/16(月) 18:00 -

引用なし
パスワード
   ▼IROC さん:
>>'D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]
>  ↓
> "" (なし)
>
>に「置換」すればよいかと思いました。

名前の定義を開いている状態で、置換をかけるかけかたが判らないのです。
名前の定義ボックスが開かれている時、置換機能は使えないと思っています。
どのように使うのですか?

又、仮に
名前の定義ボックスが開かれている状態で置換ができたとして、
50回繰り返さないといけないのでしょうか?

【16937】Re:名前の定義の変更
回答  IROC  - 04/8/16(月) 18:15 -

引用なし
パスワード
   >名前の定義を開いている状態で、置換をかけるかけかたが判らないのです。
>名前の定義ボックスが開かれている時、置換機能は使えないと思っています。
>どのように使うのですか?

ごめんなさい。数式と完全に勘違いしてました。
これから対策を検討してみます。

【16938】Re:名前の定義の変更
回答  IROC  - 04/8/16(月) 18:24 -

引用なし
パスワード
   エクスプローラでコピーしても名前の定義に変化はありませんでした。

普通に考えると、ファイルをコピーしただけで、
中身が変化するとは考えにくいですけど・・?

【16939】Re:名前の定義の変更
回答  IROC  - 04/8/16(月) 18:28 -

引用なし
パスワード
   置き換えのマクロです。

'D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]
の53文字を除いて、54文字目以降を設定します。


Sub aaa()
Dim n As Name
  For Each n In ActiveWorkbook.Names
    n.Value = Mid(n.Value, 54)
  Next n
End Sub

【16954】Re:名前の定義の変更
質問  ポンタ  - 04/8/17(火) 11:00 -

引用なし
パスワード
   ▼IROC さん:
ありがとうございます。
早速試してみました。

以下で流しました。
Sub aaa()
Dim n As Name
  For Each n In ActiveWorkbook.Names
    n.Value = Mid(n.Value, 55)
  Next n
End Sub

すると、
='D:\My Documents\ポンタ\ポンタ1\連合会\ALM連合会用\[2004年度モデル.xls]LB プライス・リターン'!$A$3



="LB プライス・リターン'!$A$3"

となるのですが、""に囲まれます。
この""はいいのでしょうか?

あと、仰られるように、コピーしただけでは
たしかに、パスは、ついてこないみたいです。
なんでこんな風に出たのかよく分からなくなりました。
ごめんなさい。

いらない名前の定義をマクロで自動的に削除する方法をご教授願えないでしょうか?

【16955】Re:名前の定義の変更
回答  IROC  - 04/8/17(火) 11:21 -

引用なし
パスワード
   >となるのですが、""に囲まれます。
>この""はいいのでしょうか?

Value ではダメなようですね。検証不足ですみません。

Sub xxx()
Dim n As Name
  For Each n In ActiveWorkbook.Names
    n.RefersTo = "=" & Mid(n.Value, 54)
  Next n
End Sub


>いらない名前の定義をマクロで自動的に削除する方法をご教授願えないでしょうか?

いらない名前の定義は、何を基準に判断するのでしょうか?

【16956】Re:名前の定義の変更
質問  ポンタ  - 04/8/17(火) 11:52 -

引用なし
パスワード
   ▼IROC さん:

以下で流すと1004エラーになります。

>Sub xxx()
>Dim n As Name
>  For Each n In ActiveWorkbook.Names
>    n.RefersTo = "=" & Mid(n.Value, 54)
>  Next n
>End Sub

少し工夫して、以下も試したのですが依然 ""がついてきます。

Sub xxx()
Dim n As Name
  For Each n In ActiveWorkbook.Names
    n.RefersTo = Mid(n.Value, 55)
  Next n
End Sub

>いらない名前の定義は、何を基準に判断するのでしょうか?

とりあえず50個ある名前の定義を全部削除できれば良いです。
(移した方で実際使っているのは数個なので)

【16957】Re:名前の定義の変更
回答  IROC  - 04/8/17(火) 13:12 -

引用なし
パスワード
   >>    n.RefersTo = "=" & Mid(n.Value, 54)
 ↓
  n.RefersTo = "=" & Mid(n.RefersTo, 55)

で如何でしょうか?

【16958】Re:名前の定義の変更
回答  IROC  - 04/8/17(火) 13:13 -

引用なし
パスワード
   削除はこれでよいかと。

Dim n As Name
  For Each n In ActiveWorkbook.Names
    n.Delete
  Next n
  

【16959】削除は巧くいきました!!
質問  ポンタ  - 04/8/17(火) 13:27 -

引用なし
パスワード
   ▼IROC さん:

どうもありがとうございました。
削除は巧くいきました。


名前変更の方は、
以下でやるとやはり1004エラーになります。

  n.RefersTo = "=" & Mid(n.RefersTo, 55)

以下では流れるのですが、式の間に、””がついてしまいます。
  n.RefersTo = Mid(n.RefersTo, 55)

お手数をお掛けして申し訳ありません。

削除はできましたので、
若し、名前の追加の方がやりやすければ、
以下を、名前の定義にマクロで入力する方法を
ご教授願えないでしょうか?

A1=LB プライス・リターン!$A$1
A2=LB プライス・リターン!$A$2
A3=LB プライス・リターン!$A$3

【16960】Re:削除は巧くいきました!!
回答  IROC  - 04/8/17(火) 13:56 -

引用なし
パスワード
   >以下では流れるのですが、式の間に、””がついてしまいます。
>  n.RefersTo = Mid(n.RefersTo, 55)

私の方では、問題ないのですけど・・


>若し、名前の追加の方がやりやすければ、
>以下を、名前の定義にマクロで入力する方法を
>ご教授願えないでしょうか?
>
>A1=LB プライス・リターン!$A$1
>A2=LB プライス・リターン!$A$2
>A3=LB プライス・リターン!$A$3

私の環境(Excel2000 )では A1 という名前は定義できないです。

Excelは何をお使いですか?

【16965】Re:削除は巧くいきました!!
質問  ポンタ  - 04/8/17(火) 16:17 -

引用なし
パスワード
   ▼IROC さん:
>私の方では、問題ないのですけど・・

変に気を回しすぎすみません。m(__)m
名前の定義の入れ方をご教授ください。


>私の環境(Excel2000 )では A1 という名前は定義できないです。
>
>Excelは何をお使いですか?

2002です。

【16966】Re:削除は巧くいきました!!
回答  IROC  - 04/8/17(火) 16:23 -

引用なし
パスワード
   >>私の環境(Excel2000 )では A1 という名前は定義できないです。
>>
>>Excelは何をお使いですか?
>
>2002です。

2002は、A1 という名前を定義できるのですか?

【16968】Re:削除は巧くいきました!!
質問  ポンタ  - 04/8/17(火) 17:12 -

引用なし
パスワード
   ▼IROC さん:
>>>私の環境(Excel2000 )では A1 という名前は定義できないです。
>>>
>>>Excelは何をお使いですか?
>>
>>2002です。
>
>2002は、A1 という名前を定義できるのですか?

ごめんなさい。
AAA1なら定義できます。

【16969】Re:削除は巧くいきました!!
回答  IROC  - 04/8/17(火) 17:25 -

引用なし
パスワード
   >ごめんなさい。
>AAA1なら定義できます。

Dim i As Long

  For i = 1 To 3
    ActiveWorkbook.Names.Add _
    Name:="AAA" & i, RefersToR1C1:="=LB プライス・リターン!$A$" & i
  Next i


これで如何でしょうか?

【16970】少し直して巧くいきました。
お礼  ポンタ  - 04/8/17(火) 18:30 -

引用なし
パスワード
   IROCさん、大変にありがとうございました。
これで目的が達成できそうです。

お教えいただいた部分は、一部下記のように変更したら巧く流れました。
  ActiveWorkbook.Names.Add Name:="AAA" & i, RefersToLocal:="=LBプライス・
RC表示にA1は入らないようです。


お教えいただいた集大成を以下に掲示しておきます。


Sub 定義の削除と新しい名前の取得()
  
Dim i As Long
Dim n As Name
  
'定義の削除
  For Each n In ActiveWorkbook.Names
    n.Delete
  Next n

'新しい名前の取得
  For i = 1 To 3
  ActiveWorkbook.Names.Add Name:="AAA" & i, RefersToLocal:="=LBプライス・リターン!$A$" & i
  Next i

End Sub


勉強になりました。ありがとうございました。

【16971】Re:少し直して巧くいきました。
回答  IROC  - 04/8/17(火) 18:37 -

引用なし
パスワード
   記録したマクロをいじったので失敗しました。

片手間な回答なのでミスが多くてすみませんでした。

【16972】Re:少し直して巧くいきました。
質問  ポンタ  - 04/8/17(火) 19:01 -

引用なし
パスワード
   ▼IROC さん:
名前の定義でここまで盛り上がったので、(^。^)

この際なのでもう1つだけお伺いしておきたいのですが、
削除PGで、ある特定の文字を含むものだけ削除
(例えば名前に「ポンタ」を含めば削除)
って、簡単にできるのでしょうか?

特にワイルドカードみたいなのがこの場合使えるかが知りたいのですが。

Sub ddd()
 
  Dim n As Name
  For Each n In ActiveWorkbook.Names
    n.Delete
  Next n
  
End Sub

【16973】Re:少し直して巧くいきました。
回答  IROC  - 04/8/17(火) 19:50 -

引用なし
パスワード
   >Sub ddd()
> 
>  Dim n As Name
>  For Each n In ActiveWorkbook.Names
    if instr(n.RefersTo, "ポンタ") > 0 then 
>     n.Delete
    end if
>  Next n
>  
>End Sub

これで出来るかと思います。

【16974】Re:少し直して巧くいきました。
お礼  ポンタ  - 04/8/17(火) 21:01 -

引用なし
パスワード
   IROC さま

できました。ありがとうございました。
ずいぶん色々と勉強になったと思います。

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