[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『名前の定義を自動的に付けれますでしょうか』(ど素人で判りません)
E1 E56 E111 E166 E221 E276 …… E1321 まで 続きます E列の1から 55行ごとです
それで、今までは そのセルに入った文字を 名前の定義を押して 名前を付けていました
E1 に 1月 山本邸 と入力したら 名前の定義で E1 に 1月 山本邸 と名前を付けていました E1321 まで 続けて合計25 の現場の名前です
これを わざわざ 名前の定義を押して 名前の定義を入れなくて 自然に名前の定義が E1に 1月 山本邸… と入力されたら 自然に E1セルに1月 山本邸… とE1321 まで それぞれの現場の名前が 自然に名前の定義 がされれば 凄い助かるのですが
左上の名前ボックス に一覧として 25個の名前がずらーっと 自動的にセルに入力された通りの名前が自動的に付く…
しかも E1のセルとかの 文字が、後日 変更されて 1月 山本邸 が 1月 山本太郎邸 と変更されたら
名前も 自動的に 1月 山本太郎邸… と変更される これって 不可能な事でしょうか?
< 使用 Excel:Excel2013、使用 OS:Windows8 >
何故に名前の定義が必要なんですか?
マクロ組めばできなくはないですけど、 そのセルだけ名前の定義する理由がわからないです。 (稲葉) 2015/05/27(水) 08:18
名前の定義は、一見して存在に気づかないため、前のブックをコピーし、中身を消して使うような人がいると、定義が蓄積し肥大化する原因になりますので、なるべく使わない方が良いです。
(???) 2015/05/27(水) 09:47
すみません もし出来たら 宜しくお願い致します
(ど素人で判りません) 2015/05/27(水) 20:01
状況が良く理解できなかったのですが、単一シートだけでの運用の前提です。 仕様を誤解していたら、読み捨ててください。
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range For Each r In Target If r.Column = 5 And r.Row Mod 55 = 1 Then UpdateName Exit Sub End If Next End Sub
Private Sub UpdateName() Dim nm For Each nm In ActiveWorkbook.Names nm.Delete Next
Dim r As Long Dim n As Long For r = 1 To 1321 Step 55 If Cells(r, "E").Value <> "" Then n = n + 1 ActiveSheet.Names.Add "No" & Format(n, "00") & "_" & Cells(r, "E").Value, Cells(r, "E") End If Next End Sub
シート構成や運用の工夫で済む気はしますが・・・。
(Mook) 2015/05/27(水) 22:08
それと… ちょっと間違って書いてしまいましたm(__)m
F2 F57… と 55ずつで最後が F1322 でしたm(__)m すみません
それで この式を 入れてみたのですが
開発→visual basic →表示→コード→白い画面が出てきてその一番上にはsheet1とか書いてあります→
で 上の式を貼付けて→ そして上の×で閉じてエクセルに戻る…
これでいいでしょうか(^_^;) m(__)m
すみません 判りませんm(__)m
これで入れてみましたが 今は最初の通りの E1とか E56とかに 田中邸 とか山本邸 とか入れてみましたが
左上の名前ボックスの▼マークを押しても
print_Area とだけしか羅列してきません (^_^;) すみません 何が間違っていますでしょうか
すみません 宜しくお願い致しますm(__)m
(ど素人で判りません) 2015/05/28(木) 02:05
Mookさんの例では、名前定義の前に番号を付加し、何番目か判りやすくする工夫がしてありますね。
Sub test() Dim i As Long
With ActiveWorkbook For i = .Names.Count To 1 Step -1 .Names(i).Delete Next i
For i = 2 To 1322 Step 55 If Cells(i, "F").Value <> "" Then .Names.Add Cells(i, "F").Value, "=" & Me.Name & "!" & Cells(i, "F").Address End If Next i End With End Sub (???) 2015/05/28(木) 09:29
請求書Noがわかるだけで良ければこんな感じでもいいんじゃないですか?? Sub test() Dim a a = Filter([TRANSPOSE(IF(MOD(ROW(E1:E1322),55)=1,"NO"&INT((ROW(E1:E1322)/55)+1)&"_"&E1:E1322,CHAR(2)))], Chr(2), False) If IsArray(a) Then MsgBox Join(a, vbNewLine) End If End Sub
(稲葉) 2015/05/28(木) 09:57
私が実現するならば、例えば1行目を行固定。A1セルをデータの入力規則で別表の範囲指定から選択式にする。
そして、Worksheet_Changeイベント時に飛ぶコーディングをしますね。
(???) 2015/05/28(木) 10:14
名前を変更しないで、どの現場がどのNoだけ分かれば そのNoに飛ぶっていう管理もできると思うんですけどねぇ・・・
現場名のところを、入力規則で可変にしてあげれば HyperLink関数とか使って、=HYPERLINK("#E"&MATCH(現場名,E:E,0),"リンク") でもいいと思うんですけどねぇ。 (稲葉) 2015/05/28(木) 10:42
(ど素人で判りません) 2015/05/29(金) 02:21
イベントじゃないからねぇ。 都度実行させないと???さんと私のものは動きませんよ。 Mookさんのものも、シートモジュールに入れないといけませんし。
http://www.happy2-island.com/excelsmile/smile01/capter00400.shtml
聞く前にまず調べてください。 素人は免罪符になりませんよ。 (稲葉) 2015/05/29(金) 08:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.