Excel VBA質問箱 IV

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

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


559 / 13645 ツリー ←次へ | 前へ→

【79698】テーブル名の一括変更 AAA 18/3/12(月) 16:39 質問[未読]
【79699】Re:テーブル名の一括変更 マナ 18/3/12(月) 20:41 発言[未読]
【79702】Re:テーブル名の一括変更 AAA 18/3/13(火) 9:17 質問[未読]
【79703】Re:テーブル名の一括変更 マナ 18/3/13(火) 9:51 発言[未読]
【79704】Re:テーブル名の一括変更 AAA 18/3/13(火) 9:55 質問[未読]
【79712】Re:テーブル名の一括変更 マナ 18/3/14(水) 12:58 発言[未読]
【79714】Re:テーブル名の一括変更 AAA 18/3/14(水) 16:38 発言[未読]
【79715】Re:テーブル名の一括変更 マナ 18/3/14(水) 21:27 発言[未読]
【79718】Re:テーブル名の一括変更 AAA 18/3/15(木) 10:19 質問[未読]
【79721】Re:テーブル名の一括変更 マナ 18/3/15(木) 20:04 発言[未読]
【79722】Re:テーブル名の一括変更 AAA 18/3/16(金) 10:18 発言[未読]
【79723】Re:テーブル名の一括変更 マナ 18/3/16(金) 18:42 発言[未読]
【79700】Re:テーブル名の一括変更 γ 18/3/12(月) 20:48 発言[未読]
【79717】Re:テーブル名の一括変更 γ 18/3/15(木) 7:39 回答[未読]

【79698】テーブル名の一括変更
質問  AAA  - 18/3/12(月) 16:39 -

引用なし
パスワード
   下記は、名前の定義の書出しと登録のマクロですが
テーブル名は、書きだされません。
テーブル名も同じようにすることは可能でしょうか?

どなたか宜しくお願い致します。


Sub NamesListsOut()
'名前定義書き出し
Dim i As Integer
With ActiveWorkbook
For i = 1 To .Names.Count
 Cells(i, 1).Value = .Names(i).Name
 Cells(i, 2).Value = "'" & .Names(i).RefersToLocal
Next i
End With
End Sub

'--------------------------------------------------
Sub NamesListsIn()
'名前定義登録
Dim n As Name
Dim i As Integer

With ActiveWorkbook

'一旦名前定義を削除
For Each n In .Names
 n.Delete
Next n
'登録
On Error Resume Next
For i = 1 To Range("A65536").End(xlUp).Row
  .Names.Add Cells(i, 1).Value, Cells(i, 2).Value
Next i
On Error GoTo 0
End With
End Sub

'--------------------------------------------------

【79699】Re:テーブル名の一括変更
発言  マナ  - 18/3/12(月) 20:41 -

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

>テーブル名の一括変更

テーブル名を変えるために、名前をループしないとだめなのですか。
最終的に、何がしたいか説明できますか。

Sub test()
  Dim ws As Worksheet
  Dim t As ListObject
  
  For Each ws In ActiveWorkbook.Worksheets
    For Each t In ws.ListObjects
      MsgBox t.Name
    Next
  Next
      
End Sub

【79700】Re:テーブル名の一括変更
発言  γ  - 18/3/12(月) 20:48 -

引用なし
パスワード
   例文のとっかかりです。ヘルプで確認して下さい。

Sub test()
  Dim lst As ListObject
  For Each lst In ActiveSheet.ListObjects
    Debug.Print lst.Name
  Next
End Sub

【79702】Re:テーブル名の一括変更
質問  AAA  - 18/3/13(火) 9:17 -

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

返信ありがとうございます。

最終的には、テーブル名をシートに書出して
そのシート上で編集(テーブル名の名前の変更)し
名前の定義に戻したいのです。
宜しくお願い致します。

【79703】Re:テーブル名の一括変更
発言  マナ  - 18/3/13(火) 9:51 -

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

何故そんなまわりくどいことをするのでしょうか。
「名前の管理」から変更では、駄目なのでしょうか。

【79704】Re:テーブル名の一括変更
質問  AAA  - 18/3/13(火) 9:55 -

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

単純に数が多いからです。
一括で変更することができる方法は、
可能でしょうか?

【79712】Re:テーブル名の一括変更
発言  マナ  - 18/3/14(水) 12:58 -

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

>単純に数が多いからです。

名前は手入力するならマクロにしても楽にはならないのでは?

ところで、提示したコードは参考になりませんでしたか。

【79714】Re:テーブル名の一括変更
発言  AAA  - 18/3/14(水) 16:38 -

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

>名前は手入力するならマクロにしても楽にはならないのでは?

一度シートに書出して、一括で置換しようと思います。
その後、置換えた名前を戻したいのです。

>ところで、提示したコードは参考になりませんでしたか。

すいません。
全然わからないです。

【79715】Re:テーブル名の一括変更
発言  マナ  - 18/3/14(水) 21:27 -

引用なし
パスワード
   ▼AAA さん:
>
>全然わからないです。

そうなると次に進めないです。
msgbox関数はわかりますか。
for each~nextはわりますか。

【79717】Re:テーブル名の一括変更
回答  γ  - 18/3/15(木) 7:39 -

引用なし
パスワード
   回答があったのですが、知らずにコメントしていました。

>例文のとっかかりです。ヘルプで確認して下さい。
マナさんへの発言で、
全くわかりません、とされていますが、
ヘルプで確認する意図は無いんですか?
一覧は、名前と同じ方法で、ListObjectオブジェクトのNameを
シートに列挙するだけですし、
更新は、ListObjectオブジェクトのNameプロパティを
書き換えるだけです。
Sheet1.ListObjects("テーブル1").Name = "テーブルA"

# 全くわからないなら、
# 手作業するしかないですかね。
# 自分では横着を決め込んでいて、
# まるまる実行できるコードを出せ、と言っているようだが、
# 無償のサポーターでもなんでもないので、
# 基本的にそんな義務はありません。

【79718】Re:テーブル名の一括変更
質問  AAA  - 18/3/15(木) 10:19 -

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

> msgbox関数はわかりますか。

わかります。

>for each~nextはわりますか。

繰返しですか?

ListObjectsプロパティは、Worksheetオブジェクトにだけにしか
ないのですね。

MsgBox t.Nameのところをシートに書きだすところが
わからないです。
宜しければ教えて下さいませ。

【79721】Re:テーブル名の一括変更
発言  マナ  - 18/3/15(木) 20:04 -

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

>MsgBox t.Nameのところをシートに書きだすところが
>わからないです。

↓が参考になりませんか。

>'名前定義書き出し
>Dim i As Integer
>With ActiveWorkbook
>For i = 1 To .Names.Count
> Cells(i, 1).Value = .Names(i).Name
> Cells(i, 2).Value = "'" & .Names(i).RefersToLocal
>Next i
>End With

【79722】Re:テーブル名の一括変更
発言  AAA  - 18/3/16(金) 10:18 -

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

レスありがとうございます。
書出しは、これでできました!
ありがとうございます。
次は、戻す方に挑戦してみます。

Sub test()

  Dim ws As Worksheet
  Dim t As ListObject
  Dim i As Integer

  With ActiveSheet
    i = 1
    For Each ws In ActiveWorkbook.Worksheets
     For Each t In ws.ListObjects
    
       .Cells(i, 1).Value = t.name
       .Cells(i, 2).Value = "'" & ws.name & "!" & t.Range.Address
       i = i + 1

     Next
    Next
  End With
   
End Sub

【79723】Re:テーブル名の一括変更
発言  マナ  - 18/3/16(金) 18:42 -

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

>.Cells(i, 2).Value = "'" & ws.name & "!" & t.Range.Address

戻すときのことを考えると
B列にシート名、C列にセル番地と
セルを別にしておくとよいかもしれません。

.Cells(i, 2).Value = ws.name
.Cells(i, 3).Value = t.Range.Address


>次は、戻す方に挑戦してみます。

γさんのコメントが参考になるはずです。

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