• 締切済み

VBAいらないコードが分からない!いらないものを削って軽くしたい

エクセルで仕入帳を作っています。ユーザーホームを作って、その中にリストボックスとコマンドボタンをつくりました。 リストボックスはシートが増えるとそこにシートの名前が追加され、クリックするとシートを切替できるようにつくってあります。 リストボックスでシートを選択し、コマンドボタンで入力したい月に飛ぶように設定してあるのですが、コードが月ごとに分かれていて凄く重くなってしまいました。コマンドボタンで、例えば1月なら名前の定義が入力されている1月に飛ぶようになっています。 コードはこんな感じです。 Private Sub CommandButton5_Click() On Error Resume Next Range("_1月").Select On Error GoTo 0 End Sub 仕入帳なのでこのコードが〆月の9月から8月までそれぞれあります。 これを9月から8月までまとめて書く方法はあるのでしょうか?

みんなの回答

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.3

重くなってるのはデータ量が原因でVBAの問題じゃないと思いますよ。 今回のVBAの問題解決ならユーザーツールバーを作ってそこにマクロを登録しましょう。 シート毎にボタンは不要になります。 ツールバーを該当ブックに添付しておけば別マシンにも持っていってもツールバーが有効になりますから。 ブックを閉じる時に削除するように書いておけば他の人が使う時に気になりませんしね

  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.2

お示しになられたコードはエラーリカバーのコードでして、これの有無は 処理速度にほとんど(全く?)関係ないです。ですので原因はVBAの側に あるんじゃなく、ワークシート構成そのものにあると思われます。 串刺しやシート間参照が多くありませんか? これが多いと、各シートの データを更新しつつ処理しますので、どうしても処理が重くなります。 例えば「ツール」「オプション」の「計算方法」タブで、「計算方法」 を「手動」にした上、マクロを実行してみてください。これであっさり 動作するなら、原因はワークシート側にあります。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

質問だけでは何がしたいのか良くわかりませんが、ユーザーフォームに9月~8月までの12個のボタンがあって、ボタンそれぞれに各月に対応したセルを選択するコードが埋め込まれている。これを何とか短くしたい。 と、言うことでしょうか? 各月、"_1月"の様に名前定義されているセルを選択するのですよね。 それなら、月の選択をコンボボックスで行い、ボタンを1つだけにすれば良いのでは無いですか。 コンボボックスを9月、10月、・・・、8月とリストで選択できるようにしておきます。コマンドボタンはこんな感じで↓。エラー処理等は入れていません。 Private Sub CommandButton1_Click()  Dim sRange As String  sRange = "_" & ComboBox1.SelText  Range(sRange).Select End Sub

関連するQ&A

専門家に質問してみよう