• 締切済み

マクロ エラーに関して

91個のデータを以下のように10個ずつ横に並べ、 同じ数値のデータN列よりグラフを作成し、 A:Jの数値を変更した場合 N列に同期しグラフが変更される。 また、グラフのプロット(数値)が変更された場合も N列が変更され A:Jの数値と同期し変更するように考えています。 しかし、以下の現象でうまく動作しませんので教えて頂ければと思います。 A1⇒J1 = N1:N10 A2⇒J2 = N11:N20 A3⇒J3 = N21:N30 A4⇒J4 = N31:N40    A5⇒J5 = N41:N50  ⇔ グラフ A6⇒J6 = N51:N60 A7⇒J7 = N61:N70 A8⇒J8 = N71:N80 A9⇒J9 = N81:N90 A10   =  N91  【現象】 (1) A:Jの数値を変更した場合にエクセルがフリーズしたような状態になり操作が出来なくなる。 (2) グラフのプロット(数値)が変更された場合にA:Jの数値が変更されない もしくは、以下の部分でメッセージが表示されます。 NFromAJの以下の転記部分 Worksheets("PAT_01").Cells(tmp \ 10, tmp Mod 10 + 1).Value = Worksheets("PAT_01").Cells(i, "N").Value 【エラーメッセージ】 実行時エラー'13’ 型が一致しません。 【現在のソース】 '----------------------------------- Sheet1 モジュール Option Explicit Private LastTarget As Variant Private WithEvents Chart1 As Chart '対象埋め込みグラフに関連付けるChartクラス Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Chartクラスを「このワークシートの埋め込みグラフ1」 に関連付ける〔Chartobject 番号★要修正〕 If Chart1 Is Nothing Then Set Chart1 = Me.ChartObjects(1).Chart End If '現在のN列の値を IDプロパティにCopyしておく If Len(Range("N2").ID) = 0 Then Dim c As Range For Each c In Range("N1:N91") c.ID = CStr(c.Value2) Next MsgBox "N列の値を IDプロパティにCopyしました" End If End Sub '(1) A:Jのほうで変更があったとき Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, tmp As Long If Not Application.Intersect(Range("A1:J9,A10"), Target) Is Nothing Then If Target.Value <> LastTarget Then Application.EnableEvents = False For i = 1 To 91 tmp = i + 9 Cells(i, "N").Value = Cells(tmp \ 10, tmp Mod 10 + 1).Value Next Application.EnableEvents = True End If End If End Sub '(2) グラフの系列1のPointがドラッグされ値が変更されたとき Private Sub Chart1_Calculate() Module1.NFromAJ End Sub '----------------------------------- 標準モジュール(Module1) Option Explicit Sub NFromAJ() Dim i As Long, tmp As Long For i = 1 To 91 tmp = i + 9 Worksheets("PAT_01").Cells(tmp \ 10, tmp Mod 10 + 1).Value = Worksheets("PAT_01").Cells(i, "N").Value Next End Sub

みんなの回答

  • ple_mania
  • ベストアンサー率42% (9/21)
回答No.1

こんにちは。ソースをあまりよくみていないのですが、 ご説明の中で気になることがありましたので。 ==================== A:Jの数値を変更した場合 N列に同期しグラフが変更される。 また、グラフのプロット(数値)が変更された場合も N列が変更され A:Jの数値と同期し変更するように考えています。 ==================== A.「A:Jの数値を変更」したら「N列を変更」 B.「N列を変更」したら「A:Jの数値を変更」 これってつながっているように見えませんか? ==================== (1) A:Jの数値を変更した場合にエクセルがフリーズしたような状態になり操作が出来なくなる。 ==================== の原因がここにあるということはないでしょうか? ボタンを二つ用意しておいて、ボタンAを押したらA.の処理、 ボタンBを押したらB.の処理をやっているであればよいのですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • すべてのシートでマクロを実行したい

    以下のプログラムでは、選択したシートのみマクロが動作しています。ネット検索で見よう見まねで作ったため何がまちがっているのかわかりません。ご教示いただけるとありがたいです。 ・月の予定表で利用者が休みの日に斜線を引くマクロ ・入力ミスを防ぐためシート保護をしている Sub すべてのシート() Dim s As Worksheet For Each s In Worksheets s.Select Call 斜線 Next End Sub Sub 斜線() ActiveSheet.Unprotect Password:="1234" For i = 1 To Range("E10").End(xlDown).Row Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlNone If Range("E10").Value = 0 Then Exit Sub If Cells(i, "E").Value = "日" And Range("BP9").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If If Cells(i, "E").Value = "月" And Range("BP10").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If If Cells(i, "E").Value = "火" And Range("BP11").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If If Cells(i, "E").Value = "水" And Range("BP12").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If If Cells(i, "E").Value = "木" And Range("BP13").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If If Cells(i, "E").Value = "金" And Range("BP14").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If If Cells(i, "E").Value = "土" And Range("BP15").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If If Cells(i, "AY").Value = "祝日" And Range("BP16").Value = 0 Then Range("AS" & i).Borders(xlDiagonalUp).LineStyle = xlContinuous End If Next i ActiveSheet.Protect Password:="1234" End Sub

  • 抽出後にすべて表示

    こんにちわ。教えて下さい。VBAに関しては初心者です。。。 今下記のコードによって、抽出をしていますが、これを コマンドボタンをクリックすることによって、すべて表示させたいと 思っています。いろいろ調べましたが、オートフィルタから全てを 表示するのはできるのですが、オートフィルタの設定をしていないので、すべて表示ができません。 どのようにすればいいか、教えていただけますでしょうか。。。 Private Sub CommandButton1_Click() Call 検索 Unload Me End Sub Private Sub UserForm_Initialize() 'A列 作業項目をComboBox1 へ登録 Dim i As Long With Sheets("リスト1") i = .Cells(.Rows.Count, "a").End(xlUp).Row ComboBox1.List = .Range("A2:A" & i).Value End With End Sub Sub 検索() Dim i&, j&, F As Boolean, tmp Dim n As Integer With Sheets("シート") tmp = .Cells(1, 1).CurrentRegion.Value For i = 4 To UBound(tmp) For j = 4 To UBound(tmp, 2) Step 6 If tmp(i, j) = ComboBox1.Value Then F = True Exit For End If Next If F = False Then .Rows(i).Hidden = True F = False Next End With End Sub

  • エクセル2010でマクロが動きません

    こんにちは。 マクロ超初心者です。 頑張ってエクセル2016でマクロ作成しましたが、エクセル2010で途中から動かず…。 何が悪いんでしょうか… ここから動きません…と書いたところから動きません(涙) Private Sub シート編集_Click() Application.ScreenUpdating = False Dim i Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim Sh4 As Worksheet Set Sh1 = Worksheets("あ") Set Sh2 = Worksheets("い") Set Sh4 = Worksheets("う") Dim dayCutoff As Date dayCutoff = Application.InputBox("年月日を入力してください", "お支払期限 年月日を入力", Format(Date, "yyyy/mm/dd")) Sh4.Range("D12").Value = DateSerial(Year(dayCutoff), Month(dayCutoff) + 2, 0) 'お支払期限 dayCutoff = Application.InputBox("年月日を入力してください", "請求書発行 日を入力", Format(Date, "yyyy/mm/dd")) Sh4.Range("AC3").Value = Format(Date, "yyyy/mm/dd") '発行日 Sh1.Cells.Clear With Sh1 'edit .Range("A2") = "番号" .Range("B2") = "会社名" .Range("C2") = "判定" .Range("D2") = "契約番号" .Range("E2") = "拠点" .Range("F2") = "税率" .Range("G2") = "月額(税抜)" .Range("H2") = "消費税" .Range("I2") = "月額(税込)" .Range("J2") = "今回" .Range("K2") = "全回" .Range("L2") = "店番" ここから動きません………… For i = 3 To Sh2.Cells(.Rows.Count, 1).End(xlUp).Row .Cells(i, 1) = Sh2.Cells(i, 2) .Cells(i, 2) = Sh2.Cells(i, 4) .Cells(i, 4) = Sh2.Cells(i, 3) .Cells(i, 5) = Sh2.Cells(i, 4) & "(" & Sh2.Cells(i, 6) & ")" .Cells(i, 6) = Sh2.Cells(i, 9) & "%課税" .Cells(i, 7) = Sh2.Cells(i, 8) .Cells(i, 8) = Sh2.Cells(i, 10) .Cells(i, 9) = Sh2.Cells(i, 11) .Cells(i, 10) = Sh2.Cells(i, 12) .Cells(i, 11) = Sh2.Cells(i, 7) .Cells(i, 12) = Sh2.Cells(i, 2) If Sh1.Cells(i, 10) > Sh1.Cells(i, 11) Then .Cells(i, 3) = "×" Else .Cells(i, 3) = "〇" End If If Sh1.Cells(i, 3) = "×" Then .Cells(i, 2) = "" End If Next i End With '空白行を削除 Dim j As Integer, myFlag As Boolean Dim c As Range With Worksheets("edit").Range("A2").CurrentRegion For j = .Rows.Count To 2 Step -1 myFlag = False For Each c In .Cells(j, 2) If c.Value <> "" Then myFlag = True Exit For End If Next If myFlag = False Then .Rows(j).Delete End If Next End With MsgBox "データの転記が終わりました" End Sub

  • 現マクロに列の塗りつぶし追加したい

    マクロについては素人の私です。 図を参照いただきたいですが、J2にリストで「入金済み」と入力したとき下記のマクロでは F2 G2 I2 J2がグレーに塗りつぶしています。 但しE2には次のような式が入っています。 =IF(OR(B2="",C2=""),"",TEXT(B2,"yymmdd")&C2) このような式が入っていてもE2の塗りつぶしは可能でしょうか。可能ならば追加したいです。不可能ならE2は除きます。 もし可能ならばこれを B2 C2 D2 E2 もグレーでセルを塗りつぶすのを追加したいが下記のマクロをどうすればよろしいでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Long Dim r As Byte i = Sheets("入金記入").Range("B65536").End(xlUp).Row + 1 r = Target.Row If Target.Value = "入金済" Then With Sheets("入金記入") .Cells(i, 2).Value = Date .Cells(i, 3).Value = Cells(r, 3).Value .Cells(i, 4).Value = Cells(r, 4).Value End With End If End Sub ご指導の程、よろしく御願いします。

  • 重複行を完全削除するエクセルのマクロ

    Sub sakujyo() Dim i, ii As Long For i = 1 To Range("a65336").End(xlUp).Row For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1 If Cells(i, 4).Value = Cells(ii, 4).Value _ And Cells(i, 13).Value = Cells(ii, 13).Value Then Delete Shift:=xlUp End If Next ii Next i End Sub マクロに関しては、素人でございます。 こちらのマクロを作ってみたのですがうまくいきません。 4列目と13列目の列が重複したときのみ重複した行をすべて削除させたいと思っております。どうぞお教えください。

  • マクロエラー処理

    下記のマクロを実行すると、If (.Range のところでコンパイルエラー参照が不正または不完全です。というメッセージが出るのですが、どこを修正すればよいのでしょうか 教えてください。 Sub 再表示1() Dim SheetName As String Dim i As Integer Dim LastRow As Integer Dim rng As Range LastRow = 3000 '最終行の番号 Sheets("ACT").Select For i = 6 To LastRow If (.Range("D" & i) = "A310" Or .Range("D" & i) = "A505") And .Range("V" & i) < 0 Then .Cells(i, "W").Resize(1, 3).ClearContents End If Next Stop End With End Sub

  • excelのマクロで2007だとエラーが。

    excel2003では動いていたマクロが2007では、エラーになってしまいます。 中断→デバッグ→再開→中断→デバッグ→再開、、、、 と中断しながらも10~20行ずつ進みます。 解決法がありましたら教えてください。 ※デバッグで確認すると「end if」で中断します。 Sub 仕分() Dim n As Long Dim nRow As Long Worksheets("シート名").Activate nRow = Range("A1").End(xlDown).Row For n = 2 To nRow If Cells(n, 6) = "条件1" Then Cells(n, 22) = "仕分け" ElseIf Cells(n, 6) = "条件2" Then Cells(n, 22) = "仕分けしない" ElseIf Cells(n, 6) = "条件1" And Cells(n, 7) = "条件2" Then Cells(n, 22) = "仕分け2" Else Cells(n, 22) = "OK" End If Next n End Sub

  • エクセル マクロ チェックボックス

    sheet1にチェックボックスが3つあり、マクロを実行するコマンドボタンが1つあります。 チェックボックスにレ点を入れることにより、sheet4のデータからsheet2にグラフを作成しようと考えてますが、エラーが出てしまい解決できません。 どのように訂正したらいいのか教えて頂けないでしょうか。 Private Sub CommandButton1_Click() Dim GraphRange As String Dim Graph As ChartObject Dim lastRow As Long Set Graph = Sheets("sheet2").ChartObjects.Add(150, 27, 350, 200) lastRow = Sheets("sheet4").Range("A" & Rows.Count).End(xlUp).Row GraphRange = Sheets("sheet4").Range(Cells(1, 1), Cells(lastRow, 1)).Value If Sheets("sheet1").CheckBox1.Value = True Then 'CheckBox1にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 2), Cells(lastRow, 2)).Value End If If Sheets("sheet1").CheckBox2.Value = True Then 'CheckBox2にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 3), Cells(lastRow, 3)).Value End If If CheckBox3.Value = True Then 'CheckBox3にチェックがあれば GraphRange = Sheets("sheet4").Range(Cells(1, 4), Cells(lastRow, 4)).Value End If Graph.Chart.ChartWizard Source:=Sheets("sheet4").Range(GraphRange).Value, _ Gallery:=xlLine, Format:=1, PlotBy:=xlColumns, _ CategoryLabels:=1, SeriesLabels:=1, HasLegend:=True End Sub

  • 判定してセルを塗りつぶすマクロについて

    判定してセルを塗りつぶすマクロについて教えて下さい。 現在下記のようなマクロがあります。 Sub オニオン判定() Dim i As Integer, j As Integer, r As Integer Dim k As Double Range(Cells(17, 9), Cells(26, 14)).Interior.ColorIndex = 0 Range(Cells(30, 9), Cells(39, 14)).Interior.ColorIndex = 0 k = Cells(5, 2) 'B5セルの値 For j = 9 To 14 For i = 17 To 26 For r = 30 To 39 If Abs(Cells(i, j).Value - Cells(r, j).Value) <= 0.05 Then Cells(r, j).Interior.Color = vbYellow Cells(i, j).Interior.Color = vbYellow End If Next  Next   Next End Sub 対象のIf Abs(Cells(i, j).Value - Cells(r, j).Value) <= 0.05 Then で、それぞれ見比べて、0.05以上のずれがあるとセルが塗りつぶされないというマクロなのですが これを、If Abs(Cells(i, j).Value - Cells(r, j).Value) = 0 Thenという条件も追加して その時はセルを青に塗りつぶし、逆に0.05以上のずれがあるセルは赤に塗りつぶす。 みたいなマクロを書きたいです。 If Abs(Cells(i, j).Value - Cells(r, j).Value) = 0 Thenは一度追加してみましたが 上手く機能しませんでした。 やりたい事 ・数値が動いているけど、0.05以内の時は黄色 ・数値変動が0の場合は青 ・数値変動が0.05以上の場合は赤 です。 宜しくお願いします。

  • このマクロ、どこがおかしいですか?

    i5とj5のセルの文字が同じ場合はセル同士を結合して一つ下の行へ行き、i5とj5のセルに何も書かれていないときはそのまま一つ下の列へ行き、行った先のセルでも同じように処理(i6とj6のセルの文字が同じ場合はセル同士を結合して一つ下の行へ行き、i6とj6のセルに何も書かれていないときはそのまま一つ下の列へ行き)を繰り返し、と言うことをi33とj33のセルまで続けたいと思っています。 Sub よろしくお願いします() Dim i As Integer For i = 5 To 33 Cells(i, 9).Select If Cells(i, 9).Value = Cells(i, 10).Value Then Range(Cells(i, 9), Cells(i, 10)).Merge Selection.Offset(i + 1).Select ElseIf Cells(i, 9).Value = "" Then Selection.Offset(i + 1).Select Next i End If End Sub と書いたのですが、『Nextに対応するForがありません』と言われてしまいます。どうすれば思い通りにできるでしょうか? 極めて初心者で、伝わりにくい点があるかもしれません。よろしくお願いします。

このQ&Aのポイント
  • FAX受信時に子機を間違えて取ってしまった場合、MFC-J998DNを使用している場合の対応方法について教えてください。
  • FAX受信時に子機を取ってしまった場合、MFC-J998DNの対応方法はどうすればいいですか。
  • FAX受信時に子機を誤って取得した場合、MFC-J998DNの適切な対処方法は何ですか。
回答を見る