Excelマクロのエラーを修正する方法

このQ&Aのポイント
  • Excelマクロの作成時に矢印以外のあみかけや罫線がセルに表示されるエラーが発生しました。修正方法について教えてください。
  • 修正方法を教えていただければ幸いです。マクロ初心者のため、詳細な手順をお願いします。
  • Excelマクロを使って矢印のみを表示する方法について教えてください。
回答を見る
  • ベストアンサー

Excel マクロのエラーを直したいです。

いつもお世話になっております。 さて、下記マクロを作成(コピー&ペースト)したのですが、矢印以外のあみかけ、罫線などがセルに表示されてしまいます。 どのように修正すれば、矢印だけが表示されるようになるのでしょうか? 修正頂ければ、幸甚です。宜しくお願い致します。 ※マクロ初心者です。 (1)Sub 外部デイ利用() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2.5) LF = Selection.Left WD = Selection.Width ActiveSheet.Shapes.AddLine(LF, TP, LF + WD, TP).Select Selection.ShapeRange.Line.Weight = 1# Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle End Sub (2)Sub 認知デイ利用() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2.5) LF = Selection.Left WD = Selection.Width ActiveSheet.Shapes.AddLine(LF + 6, TP, LF + WD, TP).Select Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadOval Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

#私からの回答に寄せられたコメントや質問ではありませんので放置しようと思いました(コメントを受けた人が回答するのが筋ですし,それを横取りして回答するのも大層失礼な話ですからね)が。 #こう言っちゃ申し訳ないですが,任せておいて安心な方になら任せておきましたが。 エクセルもマクロもプロではありませんけど,少なくとも先に回答したとおり,ご質問で掲示されたマクロでは「エクセルのバージョンが変わろうが何だろうが,エラーは起こりません」し,「そのマクロを実行して何か変なゴミが余計にコピーされることもありません」というのが唯一の結論です。 もう一度行ってください: 1.まっさらのブックを用意します 2.あなたがご質問に掲示した「あなたがアヤシイと思った」マクロ2つを登録します 3.実行し,あなたの言う「エラー」が起こらないことを確認します。 そして次のステップとして: 4.あなたがご質問に掲示したマクロ以外のマクロで,試しにあなたが「Bookやコードを新しくしてみたが、エラーが表示されてしまう」が起こったほかのマクロを順繰り登録して,どれが悪さをしているのか見つけ出してください。

ciaoyeti
質問者

お礼

ご回答をありがとうございました。 どうしてもゝ、今回の疑問を解明したかったので、飛び込みでパソコン教室にデータを持ち込み、インストラクターにも質問をさせて戴きました。そうした所、次の様な答えを戴きました。 今回の問題は、画面の更新作業で解決しました。 Excelマクロの動作というのは、スクリーン画面に表示されるが、その裏ではPCがぐるぐると動いている状態のようです。そして、一連の流れの時に画面の更新のタイミングが約束されないと、マクロの動作の一部が画面に表示されてしまうそうです。(という言い方をしていました。) そこで、一時的に画面の更新をストップさせ、一連の処理を行い、処理が終わったタイミングで画面更新を再開させると良いそうです。 画面の更新のON・OFFはApplication.ScreenUpdatingで切り替えるそうです。 (1)Application.ScreenUpdating=False (2)Application.ScreenUpdating=True を次の箇所に挿入することで、○や罫線のかけらが出なくなりました。 (1)Sub 外部デイ利用() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2.5) LF = Selection.Left WD = Selection.Width ⇒(1)を挿入 ActiveSheet.Shapes.AddLine(LF, TP, LF + WD, TP).Select Selection.ShapeRange.Line.Weight = 1# Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle ⇒(2)を挿入 End Sub --- (2)Sub 認知デイ利用() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2.5) LF = Selection.Left WD = Selection.Width ⇒(1)を挿入 ActiveSheet.Shapes.AddLine(LF + 6, TP, LF + WD, TP).Select Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadOval Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle ⇒(2)を挿入 End Sub --- 今回、お二人のご回答はインストラクターとは違う方法でしたが、それは私の説明のせいであり、お二人のせいでは、決して、ありません。私は自分で4~5時間調べても分からなかったし、もうどうして良いか分からなかったので、救いの手を差し伸べてくださったお二人には尊敬と感謝の気持ちでいっぱいです。 私自身、もっとパソコンの勉強をしなくてはいけないな、と思いました。 又、機会がありましたら、どうか宜しくお願い致します。本当にありがとうございました。<ciaoyeti>

その他の回答 (2)

  • emaxemax
  • ベストアンサー率35% (43/121)
回答No.2

ひょとして、前からある既存の罫線や網掛けを消したいのでしょうか? ならば、 Dim TP, LF, WD の下に Selection.Borders.LineStyle = xlNone '追加 Selection.Interior.ColorIndex = xlNone '追加 を追加してみてください。

ciaoyeti
質問者

補足

ご回答くださったお二人共、本当にありがとうございます。 とてもゝ、嬉しかったです。 昨日、急ぎ会社より投稿させて戴きましたが、説明不足の為、補足を致します。 --- 【取扱いデータ】介護施設利用簿。 1.作成日時…約5年前。 2.記号…当所ショートステイ利用期間(点線右方向矢印)、外部ステイ利用期間(直線双方向矢印)を表している。○・●・×などでデイ利用を区別する。 3.日曜日には網掛けが施されている。 4.特徴…Bookには沢山の数式・記号・文字・オートシェイプが入っていて、Bookの使いまわしを繰り返している。 5.今回作成したマクロの数…9つ。 【昨日まで】  矢印のオートシェイプを横方向、任意の複数セルにマクロを使って線を引きたい。 任意のセルには、○や●、×、網掛け(日曜日)が入っている。 ホームページより、VBAをコピー&ペーストして、実行させた。その結果、Ver.2003ではエラーなし、OKだったがVer.2007、2010では選択範囲を複数にすると、セルの中に矢印の他にも○や罫線のかけらなどが入ってしまう。(新Ver.でも、セル1つではエラーなし。)こちらのアドバイスに従ってBookやコードを新しくしてみたが、エラーが表示されてしまう。 【使用パソコン】 ・Office2003…マクロを作成したPC。 ・Office2007…このファイルで開くと、エラーが出る。 ・Office2010…同上。 【私の考えと希望】  2003と2007、2010では、パソコンの感度が違ったり、VBAも少し違うのだろうか…とも思いました(良く分からない。)オートシェイプのマクロに関しては、私の提示したコードと違っても、エラーが出なければ一向に構わないです。  PCやVBAのプロフェッショナルの方々のご意見をお待ちしております。    また、問題の解決の際は、こちらに詳細にご報告致します。  どうか、宜しくお願い致します。<ciaoyeti>

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

ご質問で掲示されたマクロは,問題なく「矢印線を引く」だけの事しかしていません。 参考に,まっさらブックにこの2つのマクロを全く同じ内容で登録し,実行してみましょう。 #念のため マクロを登録する正しい方法:  ブックを開く  ALT+F11を押す  挿入メニューから標準モジュールを挿入する  「外部デイ利用」「認知デイ利用」の2つのマクロをコピーし貼り付ける  シートに戻り,マクロを実行する。 何か違う事をしていたときは,間違いに応じて間違った結果になることがあります。 とりあえず今言えることは: >矢印以外のあみかけ、罫線などがセルに表示されてしまいます。 これは,ご質問で掲示されたマクロが直接の原因ではありません。 他のマクロが動いているのかも知れませんし,勘違いで違うマクロを動かしているのが原因かも知れません。条件付き書式などが作動しているのかも知れません。 問題のブックをよく調べるなり,あるいは動作の判っているごジブンで作成したまっさらブックを用意し,そちらでマクロを使います。

関連するQ&A

  • エクセルで線の太さと色を変えるマクロ

    マクロ初心者です。ご教示願います。 エクセルのマクロで選択した任意のセルに●→を引くマクロを組みましたが、 線の太さと、色を変えるコードをどこにどう入れたらいのか教えてください。 Sub 線を引く() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2) LF = Selection.Left WD = Selection.Width ActiveSheet.Shapes.AddShape(msoShapeOval, LF, TP - 3, 6, 6).Select ActiveSheet.Shapes.AddLine(LF + 6, TP, LF + WD, TP).Select

  • 【エクセル】矢印のサイズ変更

    いつもお世話になっております。 計画表を作成するにあたり、行き詰ってしまったので 参考のサイトやアドバイスを教えて頂きたいです…。 まず図でいくと右上にあります【選択したセルに矢印を引く】をクリックしますと 選択したセルに矢印が引かれます。 そのプログラムは以下のようになってます。 Sub Test() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2) LF = Selection.Left WD = Selection.Width ActiveSheet.Shapes.AddLine(LF + 0, TP, LF + WD, TP).Select '始点のスタイル Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadShort '終点のスタイル Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle End Sub しかし矢印の三角部分が大きいので、これを一番小さいスタイルの矢印へ 変更したいのですが・・・うまく変更されません。 どう修正すれば変更されるのでしょうか。 わかる方いらっしゃいましたら教えて頂きたいです。 プログラムは同じような用途のものでしたら どんなのでも有り難いです。 宜しくお願い致します。

  • エクセルで簡単なオートシェイプのマクロをつくりました マクロの実行とステップごとの実行の結果がちがってしまいます

    オートシェイプを使った簡単な寸法線の入った図をマクロで書きました。 ステップごとだと期待どおりのアウトプットなのですが、ダイレクトにマクロを実行すると途中のステップがとんでしまうようです。 どうしてでしょうか。 教えてください。 1 Sub 寸法線1() 2 Dim l1, l2, l3, l4, lb, la1, la2, fig1, fig2, fig3, fig4 As Shape 3 x1 = 200 4 y1 = 500 5 x2 = x1 + 100 6 k = Cells(7, 5).Value / Cells(7, 4).Value 7 y2 = y1 - 100 * k 8 Set l1 = ActiveSheet.Shapes.AddLine(x1, y1, x2 + 20, y1) 9 Set l2 = ActiveSheet.Shapes.AddLine(x1, y1, x1, y2 - 15) 10 Set lb = ActiveSheet.Shapes.AddLine(x1, y1, x2, y2) lb.Line.Weight = 2# 11 Set l3 = ActiveSheet.Shapes.AddLine(x2 + 5, y2, x2 + 20, y2) 12 Set l4 = ActiveSheet.Shapes.AddLine(x2, y2 - 5, x2, y2 - 15) 13 Set la1 = ActiveSheet.Shapes.AddLine(x2 + 12.5, y1 - 2, x2 + 12.5, y2 + 2) 14 la1.Line.BeginArrowheadStyle = msoArrowheadTriangle 15 la1.Line.BeginArrowheadLength = msoArrowheadLengthMedium 16 la1.Line.BeginArrowheadWidth = msoArrowheadWidthMedium 17 la1.Line.EndArrowheadStyle = msoArrowheadTriangle 18 la1.Line.EndArrowheadLength = msoArrowheadLengthMedium 19 la1.Line.EndArrowheadWidth = msoArrowheadWidthMedium 20 Set la2 = ActiveSheet.Shapes.AddLine(x1 + 2, y2 - 10, x2 - 2, y2 - 10) 21 la2.Line.BeginArrowheadStyle = msoArrowheadTriangle 22 la2.Line.BeginArrowheadLength = msoArrowheadLengthMedium 23 la2.Line.BeginArrowheadWidth = msoArrowheadWidthMedium 24 la2.Line.EndArrowheadStyle = msoArrowheadTriangle 25 la2.Line.EndArrowheadLength = msoArrowheadLengthMedium 26 la2.Line.EndArrowheadWidth = msoArrowheadWidthMedium 27 Set fig1 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ x1 - 10, y1 + 5, 17, 17) 28 fig1.Select 29 Selection.Characters.Text = Str(Cells(6, 3)) 30 Selection.Characters.Font.Bold = True 31 Selection.ShapeRange.Line.Visible = msoFalse 32 Set fig2 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ x2 + 5, y2 - 20, 18, 18) 33 fig2.Select 34 Selection.Characters.Text = Str(Cells(7, 3)) 35 Selection.Characters.Font.Bold = True 36 Selection.ShapeRange.Line.Visible = msoFalse 37 Set fig3 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ x1 + (x2 - x1) * 0.5 - 13, y2 - 32, 45, 17) 38 fig3.Select 39 Selection.Characters.Text = Str(Cells(7, 4)) 40 Selection.ShapeRange.Line.Visible = msoFalse 41 Set fig4 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationUpward, _ x2 + 15, y1 - 0.5 * (y1 - y2) - 8, 17, 45) 42 fig4.Select 43 Selection.Characters.Text = Str(Cells(7, 5)) 44 Selection.ShapeRange.Line.Visible = msoFalse 45 MsgBox "pause" 46 Call l1.Select 47 Call l2.Select(False) 48 Call l3.Select(False) 49 Call l4.Select(False) 50 Call lb.Select(False) 51 Call la1.Select(False) 52 Call la2.Select(False) 53 Call fig1.Select(False) 54 Call fig2.Select(False) 55 Call fig3.Select(False) 56 Call fig4.Select(False) 57 MsgBox "hit any" 58 Selection.ShapeRange.Group.Delete 59 End Sub Cells(7, 5)=50 cells(7,4)=100 cells(6,3)=1 cells(7,3)=2 です。 左端に行番号をふってあります。 36から44まで飛んでしまいます。 節点 座標 X Y 1 0 0 2 100 50

  • Excelの罫線に関するマクロ

    Excelの罫線に関するマクロ 罫線を引き、それを赤くするマクロを作ったのですが、赤罫線の下にもうひとつ罫線が表示されてしまいます。どこを削除すればよいのでしょうか。 ご教示お願いいたします。 Sub 罫線() Dim T1 As Single, L1 As Single Dim T2 As Single, L2 As Single Dim myShp As Shape With Range("c15") T1 = .Top L1 = .Left End With With Range("d14") T2 = .Offset(1, 1).Top L2 = .Offset(1, 1).Left End With Set myShp = ActiveSheet.Shapes.AddLine(L1, T1, L2, T2) ActiveSheet.Shapes.AddLine(L1, T1, L2, T2).Select With Selection.ShapeRange.Line .Visible = msoTrue .Style = msoLineSolid .Weight = 5# .ForeColor.SchemeColor = 10 End With End Sub よろしくお願いします。

  • えくせるまくろで。

    お世話になっております。 基礎的な質問かもしれませんが、、 さっきからうまくいってませんです。 セルに入力された値によって変化し、オートシェイプの→の端につなげて→をかきたいんですが、、、 line1 line2はすでにあるものとして、 Sub sample1() ActiveSheet.Shapes("Line 1").Select Selection.ShapeRange.Item("Line 1").Left = 258.75 Selection.ShapeRange.Item("Line 1").Width = 67.5 / 6 * Range("A1") hako1 = ShapeRange.Item("Line 1").Left + 67.5 / 6 * Range("A1") ActiveSheet.Shapes("Line 2").Select Selection.ShapeRange.Item("Line 2").Left = hako1 Selection.ShapeRange.Item("Line 2").Width = 67.5 / 6 * Range("A2") End Sub と、こうしてたんですが、。 オブジェクトが必要です。とアラームがでます。 どうしたらいいか教えてください。

  • エクセルマクロでオブジェクトを選択する方法

    エクセル(2002)を使っています。マクロの記録機能を使って円を描くマクロを作成しました。 Sub Maru(xpos, ypos, hankei) ActiveSheet.Shapes.AddShape(msoShapeOval, xpos, ypos, hankei, hankei).Select Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Solid Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.ForeColor.SchemeColor = 64 Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) End Sub 次にこの円を削除したいと思い、同じようにマクロの記録機能を使ったところ、 Sub Macro3() ActiveSheet.Shapes("Oval 64").Select Selection.Delete End Sub となりました。"Oval 64"はオブジェクトの名前のようですが、名前がわかっていないオブジェクト(但し上記マクロで書いたので場所はわかっている)を選択するにはどうしたらいいでしょうか。

  • エクセル2007のマクロで画像挿入がうまくいきません。

    エクセル2007のマクロで画像挿入がうまくいきません。 写真のサイズ縦横比がセルにあっていないので伸びてしまいます。 下記のプログラムでサイズ変更も可能でしょうか? フォームのボタンの上に張り付けた場合、ボタンを隠す事は 出来ますか? ボタンの色は変更できるのでしょうか? いろいろわがままな質問で申し訳ありません。 マクロ初心者です。 Sub Pic_in2007() fname = Application.GetOpenFilename ActiveSheet.Pictures.Insert(fname).Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = range("B5:C6").height Selection.ShapeRange.Width = range("B5:C6").width Selection.ShapeRange.left = range("B5:C6").left Selection.ShapeRange.top = range("B5:C6").top End Sub

  • word2003のマクロが2007でエラーになる

    word2003(windows2000)で使っていたマクロを、人に頼まれてその人の2007のword(windowsXP)に入れたのですがエラーが出て動かないそうです。 マクロは以下のページにあったものの改造で、どこを直したらよいのかわかりません。 http://okwave.jp/qa/q2344318.html 答えでなく、ヒントでも良いのでどなたか教えてください。 h = Selection.ShapeRange.Heightという行で、「エラー5 プロシージャの呼び出し、または引数が不正です」というようなエラーが出るそうです。 2003ではエラーは出ず、選択されている画像の高さがhに入ります。 よろしくお願いします。 ----------------------------------- Public Sub ChgPest() '選択した画像をクリップボードの中身と入れ替えてemfで貼り付ける Dim T, L, h, W, cl, cr, ct, cb As Integer Dim FName As String Dim MyShape As Shape Dim fd As FileDialog Dim clp As Integer Application.ScreenUpdating = False T = Selection.ShapeRange.Top L = Selection.ShapeRange.Left h = Selection.ShapeRange.Height ←●デバッグするとここが黄色になっている W = Selection.ShapeRange.Width posi = Selection.ShapeRange.RelativeVerticalPosition cl = Selection.ShapeRange.PictureFormat.CropLeft cr = Selection.ShapeRange.PictureFormat.CropRight ct = Selection.ShapeRange.PictureFormat.CropTop cb = Selection.ShapeRange.PictureFormat.CropBottom Set myrange = Selection.Range Selection.Delete Selection.PasteSpecial datatype:=wdPasteEnhancedMetafile 'EMFでペースト clp = ActiveDocument.Shapes.Count 'すべてのshapeを数える Set MyShape = ActiveDocument.Shapes(clp) '最後にペーストしたshape ActiveDocument.Shapes(clp).LockAnchor = False 'アンカーを固定しない ActiveDocument.Shapes(clp).WrapFormat.Type = 3 MyShape.Select With Selection.ShapeRange.PictureFormat .CropLeft = cl .CropRight = cr .CropTop = ct .CropBottom = cb End With Selection.ShapeRange.RelativeVerticalPosition = posi Selection.ShapeRange.Top = T Selection.ShapeRange.Left = L Selection.ShapeRange.Height = h Selection.ShapeRange.Width = W Selection.ShapeRange.ZOrder msoSendToBack Application.ScreenUpdating = True End Sub

  • エクセル。マクロの記録で出来たVBAを書き直したい。

    エクセル2000(OSはWindows2000)でマクロの記録を行いました。 四角形を出してA1セルにリンクさせフォント等の設定をしたものです。 Sub Macro5() ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200#, 100#, 140#, 80#). _ Select ExecuteExcel4Macro "FORMULA(""=R1C1"")" With Selection.Font .Name = "Century Gothic" .FontStyle = "太字" .Size = 72 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoFalse End Sub これを、実際には四角形をセレクトしないで実行させたいのです。 With ActiveSheet.Shapes.AddShape~ End With といった形になるのでしょうが、どうもうまく出来ません。 ご教示いただければ幸いです。

  • Excel マクロでチェックボックスに枠線

    エクセルマクロについて教えて下さい。 Excel2003を使用しています。 1つのシートに、フォームツールボックスからチェックボックスを沢山(300個以上)配置しました。 チェックボックスをクリック(オン)するのと同時にチェックボックスに赤い枠線を付けたいのですが、1つのマクロでチェックボックスのオブジェクト名を取得しながら枠線を付けることは出来ませんでしょうか? 以下のマクロを試してみたのですが、Application.Callerの所でエラーになってしまいました。 Sub checkon() ActiveSheet.Shapes(Application.Caller).Select Selection.ShapeRange.Line.Weight = 3# Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 i = ActiveCell.Address(False, False, xlA1) Range(i).Select End Sub 特定のチェックボックスを指定した場合は、問題ないのですが・・。 (例)ActiveSheet.Shapes("Check Box 1").Select どなたか詳しい方、宜しくお願い致します。

専門家に質問してみよう