@yuchan0001

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Excel VBAに関してのトラブルの相談

解決したいこと

Excelのマクロに関して、
Windowsで動くマクロが、Macで行おうと思った際に実行するとエクセルが落ちてしまう(作業内容を回復し、再起動しますのエラーメッセージが出る)のですがどのような理由でしょうか?

発生している問題・エラー

作業内容を回復し、再起動します
というエラーメッセージが出てしまいます

該当するソースコード

Excel VBA

Sub AllDataAnalysis()

Dim cnt As Long

Dim i As Long
Dim TopRow As Long
Dim Top As String
Dim BottomRow As Long
Dim Number  As Long
Dim p As Long
Dim q As Long




cnt = Sheets.Count
 '変数・cntには、シートの総数が代入されている


Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Data List"

Cells(1, 1) = "WellName"
Cells(1, 2) = "No. of CH"
Cells(1, 3) = "総細胞数"
Cells(1, 4) = "陽性細胞数"
Cells(1, 5) = "陽性率"



Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Extract"

Worksheets(1).Columns(7).Copy
Worksheets("Extract").Columns(1).PasteSpecial
Application.CutCopyMode = False

Worksheets(1).Columns("O:W").Copy
Worksheets("Extract").Columns(2).PasteSpecial
Application.CutCopyMode = False


TopRow = 2
p = 0
q = 0

While Cells(TopRow, 1).Row < Cells(1, 1).End(xlDown).Row
i = 1
Top = Cells(TopRow, 1)


While Cells(TopRow + i, 1) = Top

i = i + 1

Wend


BottomRow = TopRow + i - 1
Number = BottomRow - TopRow + 1

q = q + 1


Range(Rows(TopRow), Rows(BottomRow)).Copy
Worksheets.Add after:=Worksheets(Worksheets.Count)
Cells(2, 1).PasteSpecial
Application.CutCopyMode = False

Worksheets(1).Cells(1, 1).Copy
Worksheets(Worksheets.Count).Cells(1, 1).PasteSpecial
Worksheets(1).Activate
Range(Cells(1, 15), Cells(1, 23)).Copy
Worksheets(Worksheets.Count).Cells(1, 2).PasteSpecial

Worksheets(Worksheets.Count).Name = "Data" & q
 'ここまでで新しいシートにデータを1つ切り出し


 'ここからはCH2のデータの解析を行う
p = p + 1
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Result " & p

ActiveSheet.Previous.Columns("A:B").Copy
Worksheets(Worksheets.Count).Columns("A:B").PasteSpecial
Application.CutCopyMode = False

ActiveSheet.Previous.Columns(5).Copy
Worksheets(Worksheets.Count).Columns(3).PasteSpecial
Application.CutCopyMode = False


Range("A3").Sort _
Key1:=Range("C1"), Order1:=xlAscending, _
Orientation:=xlSortColumns, Header:=xlYes



Worksheets(Worksheets.Count).Activate

Range("C1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select

'ここまででグラフの作成終わり




Cells(3, 7) = "総細胞数"
Cells(4, 7) = "陽性細胞数"
Cells(5, 7) = "陽性基準値"
Cells(6, 7) = "陽性率"
Cells(5, 8) = "1000000"


Cells(3, 8).Value = Cells((Rows.Count) - 1, 3).End(xlUp).Row - 1
Worksheets(Worksheets.Count).Cells(3, 8).Copy
Worksheets("Data List").Cells(p + 1, 3).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate

Cells(4, 8) = WorksheetFunction.CountIf(Columns(3), ">" & Cells(5, 8))
Worksheets(Worksheets.Count).Cells(4, 8).Copy
Worksheets("Data List").Cells(p + 1, 4).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate

Cells(6, 8) = Cells(4, 8) / Cells(3, 8) * 100
Worksheets(Worksheets.Count).Cells(6, 8).Copy
Worksheets("Data List").Cells(p + 1, 5).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate


Worksheets("Extract").Cells(TopRow, 1).Copy
Worksheets("Data List").Cells(p + 1, 1).PasteSpecial
Application.CutCopyMode = False
Worksheets("Extract").Cells(1, 5).Copy
Worksheets("Data List").Cells(p + 1, 2).PasteSpecial
Application.CutCopyMode = False


Worksheets(Worksheets.Count).Activate
'  ここまででCH2の計算と出力が終了


 'ここからはCH3のデータの解析を行う
p = p + 1
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Result " & p

Worksheets("Data" & q).Columns("A:B").Copy
Worksheets(Worksheets.Count).Columns("A:B").PasteSpecial
Application.CutCopyMode = False

Worksheets("Data" & q).Columns(6).Copy
Worksheets(Worksheets.Count).Columns(3).PasteSpecial
Application.CutCopyMode = False


Range("A3").Sort _
Key1:=Range("C1"), Order1:=xlAscending, _
Orientation:=xlSortColumns, Header:=xlYes




Worksheets(Worksheets.Count).Activate

Range("C1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select

'ここまででグラフの作成終わり


Worksheets(Worksheets.Count).Activate

Cells(3, 7) = "総細胞数"
Cells(4, 7) = "陽性細胞数"
Cells(5, 7) = "陽性基準値"
Cells(6, 7) = "陽性率"
Cells(5, 8) = "1000000"


Cells(3, 8).Value = Cells((Rows.Count) - 1, 3).End(xlUp).Row - 1
Worksheets(Worksheets.Count).Cells(3, 8).Copy
Worksheets("Data List").Cells(p + 1, 3).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate

Cells(4, 8) = WorksheetFunction.CountIf(Columns(3), ">" & Cells(5, 8))
Worksheets(Worksheets.Count).Cells(4, 8).Copy
Worksheets("Data List").Cells(p + 1, 4).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate

Cells(6, 8) = Cells(4, 8) / Cells(3, 8) * 100
Worksheets(Worksheets.Count).Cells(6, 8).Copy
Worksheets("Data List").Cells(p + 1, 5).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate



Worksheets("Extract").Cells(1, 6).Copy
Worksheets("Data List").Cells(p + 1, 2).PasteSpecial
Application.CutCopyMode = False


Worksheets(Worksheets.Count).Activate
'  ここまででC3の計算と出力が終了


 'ここからはCH4のデータの解析を行う
p = p + 1
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Result " & p

Worksheets("Data" & q).Columns("A:B").Copy
Worksheets(Worksheets.Count).Columns("A:B").PasteSpecial
Application.CutCopyMode = False

Worksheets("Data" & q).Columns(7).Copy
Worksheets(Worksheets.Count).Columns(3).PasteSpecial
Application.CutCopyMode = False


Range("A3").Sort _
Key1:=Range("C1"), Order1:=xlAscending, _
Orientation:=xlSortColumns, Header:=xlYes




Worksheets(Worksheets.Count).Activate

Range("C1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select

'ここまででグラフの作成終わり


Worksheets(Worksheets.Count).Activate

Cells(3, 7) = "総細胞数"
Cells(4, 7) = "陽性細胞数"
Cells(5, 7) = "陽性基準値"
Cells(6, 7) = "陽性率"
Cells(5, 8) = "1000000"


Cells(3, 8).Value = Cells((Rows.Count) - 1, 3).End(xlUp).Row - 1
Worksheets(Worksheets.Count).Cells(3, 8).Copy
Worksheets("Data List").Cells(p + 1, 3).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate

Cells(4, 8) = WorksheetFunction.CountIf(Columns(3), ">" & Cells(5, 8))
Worksheets(Worksheets.Count).Cells(4, 8).Copy
Worksheets("Data List").Cells(p + 1, 4).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate

Cells(6, 8) = Cells(4, 8) / Cells(3, 8) * 100
Worksheets(Worksheets.Count).Cells(6, 8).Copy
Worksheets("Data List").Cells(p + 1, 5).PasteSpecial
Application.CutCopyMode = False
Worksheets(Worksheets.Count).Activate



Worksheets("Extract").Cells(1, 7).Copy
Worksheets("Data List").Cells(p + 1, 2).PasteSpecial
Application.CutCopyMode = False


Worksheets(Worksheets.Count).Activate
'  ここまででC4の計算と出力が終了


Sheets("Extract").Activate

TopRow = TopRow + i


Wend

End Sub

自分で試したこと

Macのエクセルで他のマクロを動かす分には問題ありません。
マクロも有効になっています。

アンインストール、再インストール
プログラムの更新などは一通り試しました

0 likes

1Answer

基本に立ち返って、

  1. 動かない部分を探す

からやってみるのが近道だと思いますよ。

0Like

Your answer might help someone💌