エクセルマクロの分割方法について
Sub リスト登録()
'
' Macro3 Macro
' マクロ記録日 : 2008/6/2
'
ActiveSheet.Unprotect Password:="1234"
If Range("G33").Value > 5 Then
Sheets("リスト").Select
ActiveSheet.Shapes("AutoShape 44").Select
Selection.Copy
Sheets("シート").Select
Range("A15").Select
ActiveSheet.Paste
End If
Dim Btn As Integer
Dim strMsg As String
strMsg = "リストに登録しますか?"
Btn = MsgBox(strMsg, vbYesNo + vbQuestion, "MsgBox")
If Btn = vbNo Then
Dim YU As Shape
For Each YU In ActiveSheet.Shapes
If YU.Type = msoAutoShape Then
YU.Delete
End If
Next
If Btn = vbYes Then
End If
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("C11").Select
End
End If
Dim newRange1 As Range, newRange2 As Range, newRange3 As Range
Select Case Sheets("").Range("B3").Value
Case 1
Set newRange1 = Sheets("リスト").Range("I6")
Set newRange2 = Sheets("リスト").Range("AH6")
Set newRange3 = Sheets("リスト").Range("AI6")
中略
Case 1000
Set newRange1 = Sheets("リスト").Range("I1005")
Set newRange2 = Sheets("リスト").Range("AH1005")
Set newRange3 = Sheets("リスト").Range("AI1005")
ActiveWorkbook.Save
Case Else
End Select
Application.ScreenUpdating = False
Sheets("シート").Range("G8,G10,G12:G23,G25:G29,G31:G32").Copy
newRange1.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
newRange1.UnMerge
Sheets("シート").Range("D34").Copy
newRange2.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("シート").Range("I29").Copy
newRange3.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("シート").Select
Range("C11").Select
Range("D34,G8:G32,I29").Select
Selection.ClearContents
Range("C11").Select
Dim SP As Shape
For Each SP In ActiveSheet.Shapes
If SP.Type = msoAutoShape Then
SP.Delete
Range("D34:K34").Select
Application.CutCopyMode = False
Selection.Merge
Range("B3").Select
End If
Next
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
上記のマクロを作成しましたが、64Kを超えてしまう為、分割したいのですが、どのように分割すればよいのか方法がわかりません、どなたかお分かりの方がいらっしゃいましたら宜しくお願いします。
マクロシート1~2~3といったつなぎの構文がわかりません宜しくお願い致します。
お礼
ご回答有難うございます。確かにそういう方法もありますが、スマートなコード文(一部分)ではありませんが下記の方法で事なきを得ました。重ねがさねお礼申しあげます。 Private Sub WorkSheet_Change(ByVal Target As Range) Dim c As Range For Each c In Target Select Case c.address(0, 0) Case "C1" If Intersect(Target, Range("C1")) Is Nothing Then Exit Sub '検査範囲 Application.EnableEvents = False '再帰実行の停止 If Range("C1").Value <> Sheets("祝祭日").Range("A1").Value Then MsgBox ("祝日の設定を反映するため年度を同じにしてください。") End If Application.EnableEvents = True Case Else Select Case c.address(0, 0) Case "G1" If Range("G1") = 4 Then '4月データの表示 Dim ret As Integer ret = MsgBox(Format(ActiveSheet.Range("G2").Value, "ge年mm月") & "の勤務割表の編集&入力保存データを元に表示します。" & vbCrLf & "よろしいですか?", _ vbOKCancel + vbQuestion, "勤務割表表示切替確認") Select Case ret Case vbOK UserForm8.Show vbModeless UserForm8.Repaint 当月データのクリア Sheets("編集").Select Application.EnableEvents = False Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Sheets("編集").Range("G1").Select ActiveCell.FormulaR1C1 = "4" 編集データの復元4月 Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.Cursor = xlDefault Application.EnableEvents = True メインデータの復元4月 Sheets("メイン・1").Select Unload UserForm8 CommandButton4_Click Case vbOKCancel Exit Sub End Select