漫画『酒男子』のAIボットを作ると高級日本酒が当たる!! >>

特定範囲のセルはEnterした時に右などにカーソル移動するマクロを作りましたが、文字数は3万文字を超え、ビット数の肥大化により保存終了に時間がかかります。このマクロを簡潔にできないでしょうか?何卒ご教授願います。尚、マクロのテキストは長すぎるので以下リンクに掲載しています。
※Win8.1/7、Excel2010です。

http://4vote.sakura.ne.jp/macro.html

A 回答 (2件)

まずは、シートイベントを使ってください。


一例です。
指定したいシート名のタブを右クリックして
コードの表示をクリックして、VBエディターを起動します。
この時点でシートモジュールが選択されています。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 6 Then
Target.Offset(0, 1).Activate
End If
End Sub
を張り付けて閉じてみてください。
意味は、6列目までで、セルの内容が変更されたら
右隣のセルをアクティブにするという意味です。
    • good
    • 0

1つ右のセルに移動するだけなら、IF式で動作範囲を指定して、offset関数を利用すればいいと思います。

    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコードの簡略化 VBA

dim a as string

dim b as string

dim c as string

dim d as string

dim e as string

dim f as string

dim g as string

dim h as string

dim i as string


a = "○○"

b = "○○"

c = "○○"

d = "○○"

e = "○○"

f = "○○"

g = "○○"

h = "○○"

i = "○○"



上記のような形でたくさん宣言しているのですが、
実際はもっとあり、これだととても長いコードになってしまいます(・・;)

なんとか簡略化したいとは考えたのですがよい方法が見つからず
皆さんよろしくお願いいたします_(_^_)_

Aベストアンサー

1つの変数の宣言と初期化を1行で済ませたいのなら、
 Dim a As String : a = "○○"
 Dim b As String : b = "○○"
 Dim c As String : c = "○○"
 (以下略)
と書くと多少はすっきりします。

そうではなく、「変数が多すぎて大変……」という話であれば、
1つのメソッドにいろいろと詰め込みすぎなのかもしれません。
設計を見直し、処理を複数のメソッドに小分けするといいでしょう。

Q【Excel VBA】Ifマクロを簡潔にしたい マクロの簡略化2

"H133"のセルが今月の数字になっており、その数字に応じてシートを選択するマクロを作りましたが、明らかに初心者が作ったような非効率なマクロになっているようで、保存時間に影響がでるので、なるべく短く訂正したいのですが、どうかご指導頂けると幸いです。
※Win8.1/7、Excel2010です。

Sub シートの選択()
If Range("H133") = 1 Then
Worksheets("1月").Select
End If
If Range("H133") = 2 Then
Worksheets("2月").Select
End If
If Range("H133") = 3 Then
Worksheets("3月").Select
End If
If Range("H133") = 4 Then
Worksheets("4月").Select
End If
If Range("H133") = 5 Then
Worksheets("5月").Select
End If
If Range("H133") = 6 Then
Worksheets("6月").Select
End If
If Range("H133") = 7 Then
Worksheets("7月").Select
End If
If Range("H133") = 8 Then
Worksheets("8月").Select
End If
If Range("H133") = 9 Then
Worksheets("9月").Select
End If
If Range("H133") = 10 Then
Worksheets("10月").Select
End If
If Range("H133") = 11 Then
Worksheets("11月").Select
End If
If Range("H133") = 12 Then
Worksheets("12月").Select
End If
If Range("F1") <> Range("H134") Then
MsgBox "この体温表は " & Range("F1") & " 年分です。" & vbCrLf & "   (現在は " & Range("H134") & " です)"
Worksheets("1月").Select
End If

"H133"のセルが今月の数字になっており、その数字に応じてシートを選択するマクロを作りましたが、明らかに初心者が作ったような非効率なマクロになっているようで、保存時間に影響がでるので、なるべく短く訂正したいのですが、どうかご指導頂けると幸いです。
※Win8.1/7、Excel2010です。

Sub シートの選択()
If Range("H133") = 1 Then
Worksheets("1月").Select
End If
If Range("H133") = 2 Then
Worksheets("2月").Select
End If
If Range("H133") = 3 Then
Wo...続きを読む

Aベストアンサー

Sub シートの選択()
If Range("H133") >= 1 And Range("H133") <= 12 Then
Worksheets(Range("H133") & "月").Select
End If

If Range("F1") <> Range("H1") Then
MsgBox "この体温表は " & Range("F1") & " 年分です。" & vbCrLf & "   (現在は " & Range("H134") & " です)"
Worksheets("1月").Select
End If

End Sub

QExcel マクロ VBA プロシージャが大きすぎます のエラー対処方法

プロシージャにDATAを書き込み実行していましたが,DATAを追加していくうち,[プロシージャが大きすぎます]のエラーメッセージが出てしまいました。
対策を教えて下さい。
出来れば,プロシージャの容量を大きく出来ないものでしょうか。

Aベストアンサー

Subを分ければ良いと思います。

元が
Sub Macro1()
 (1)
 (2)
End Sub

なら

Private Sub Macro1()
 (1)
End Sub

Private Sub Macro2()
 (2)
End Sub

のように分けてから、それを連続実行するプロシージャを書きます。
分割したやつを Private Sub にしておけば、マクロ名が表示されません。

Sub Jikkou()
  Macro1
  Macro2
End Sub


人気Q&Aランキング