ここをクリックして文字を入力すると、そのセルに自分で名前を付けることができます。
今度はこれを自動化します。
セルA5に「せる」と名前を付ける
1.
2.
3.
4.
'マクロの記録そのまま
Sub setName()
ActiveWorkbook.Names.Add name:="せる", RefersToR1C1:="=sheet1!R5C1"
End Sub
変数を使って書き換え
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub setName()
Dim i, j As Integer
Dim str As String 'ワークシートの名前
Dim name As String 'セルにつける名前
str = ActiveSheet.name
i = 5
j = 1
name = "せる"
ActiveWorkbook.Names.Add name:=name, _
RefersToR1C1:="=" & str & "!R" & i & "C" & j
End Sub
文字列の扱いが力任せな気がしますが、ほかの方法を思いつかなかったんです。
でも、&で文字列がつなげるのは便利ですね。
自分で付けた名前(ここでは「せる」)を消す
1.
2.
3.
Sub delN()
ActiveWorkbook.Names("せる").Delete
End Sub
全ての名前を消す
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub delN()
Dim name As String
Dim i As Integer
i = 1
For Each nm In ActiveWorkbook.Names
name = nm.NameLocal
ActiveWorkbook.Names(name).Delete
i = i + 1
Next
End Sub
ループなんかを使ってたくさんのセルを処理させるとき、
セルを選択→処理
を繰り返すため画面が下や横に高速で流れていきます。
別に、流れていく画面を見る必要がないなら、マクロ実行中画面を更新しないようにするといいです。
画面更新の一時停止
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub macro()
'画面を更新しない
Application.ScreenUpdating = False
'なんかの処理
'画面を更新する
Application.ScreenUpdating = True
End Sub
0 件のコメント:
コメントを投稿