• 締切済み

マクロのコードについて

いつも大変お世話になっております。 https://okwave.jp/qa/q9884968.htmlにて、質問した者です。 回答してくださった方のとおりにやってみたのですが、背景の色が消えません。 Sub ボタン1_Click() If Application.Intersect(Selection, Range("A1:F3")) Is Nothing _ Or Selection.Count > 1 Then Exit Sub End If Application.EnableEvents = False Selection.Interior.Color = xlNone Application.EnableEvents = True End Sub 上記のように教えていただき、コピペしてやってみたのですが、背景の色は変わらなかったです。 私のやり方がだめでしょうか? マクロのボタンを作成し、コードを入力しました。 エラーも出たので、エラー検索し https://okwave.jp/qa/q9885232.html 上記も設定済です。 回答してくださった方々には大変失礼なことを聞いているのもわかっています。本当に申し訳ございません。

みんなの回答

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

ボタンを押したときに A1:F3の範囲の中で選択されたセルがひとつの場合 選択しているセルの色を無くすという動作で .Color = xlNoneでいけたのですが .ColorIndex = xlNoneの方が本来みたいなので Selection.Interior.Color = xlNone を Selection.Interior.ColorIndex = xlNone に変更してみてください。

関連するQ&A

  • マクロボタンのリセットについて

    いつも大変お世話になっております。 以前こちらで、、、、https://okwave.jp/qa/q9846043.html を質問し、コードを教えていただき、シートにマクロが組まれた状態です。 今回はそのシートにマクロが組まれた状態で、マクロボタンを作成しそのボタンに、数字は守りつつ背景のカラーをリセットしたいボタンを作りコードを教えていただきました。 シートのマクロはうまくいくのですが、マクロボタンはうまくいきません。 私のやり方が間違っているのでしょうか?(『開発』→コントロールの『挿入』→フォームコントロールのボタン→『ボタン1_Click』と登録しました。) コードは以下です。 Sub ボタン1_Click() If Application.Intersect(Selection, Range("D16:CJ48")) Is Nothing _ Or Selection.Count > 1 Then Exit Sub End If Application.EnableEvents = False Selection.Interior.ColorIndex = xlNone Application.EnableEvents = True End Sub 誹謗中傷等ははお断りしています。

  • excel 2007 VBA コードの記述

    Excel 2007 を使用しています。 TEST.xlsm というブック内に テスト01 というシートを作成し、そのタブを右クリックして コードの表示 を選択。 表示されたVBAコード入力シートに下記のコードを記述して使用してます。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("E3:E33,G3:G33,AH3:AH33,AJ3:AJ33,BK3:BK33,BM3:BM33")) Is Nothing Or Selection.Count <> 1 Then Exit Sub Application.EnableEvents = False If Target <> "" Then If IsNumeric(Target) Then Target = Target - 23 End If End If Application.EnableEvents = True End Sub 'この行まで この条件に新たに下記のコードを追加したいと思い ネット検索しながらあれこれ試行錯誤してますが まだまだVBA初心者のため上手く機能してくれません。 ※上のコードだけなら思った通りに機能します。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("Y3:Y33,BB3:BB33,CE3:CE33")) Is Nothing Or Selection.Count <> 1 Then Exit Sub Application.EnableEvents = False If Target <> "" Then If IsNumeric(Target) Then Target = Target - 30 End If End If Application.EnableEvents = True End Sub 'この行まで どなたかこれら二種のコードを一つにまとめた記述方法を 教えて頂けますでしょうか?

  • エクセルのマクロコードについて

    お世話になります。 下記コードで、セルごとにクリアをすると、エラーなくうごくのですが、セルをまとめてセルを消すと実行時エラー13型が一致しません。とでてIf Target.Value = "" Thenがだめだよとでてしまいます。 どなたか、回避の方法をご教授ください。 宜しくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B2:E2,G2:J2")) Is Nothing Then Exit Sub If Target.Value = "" Then Exit Sub x = Target.Value With Application .ScreenUpdating = False .EnableEvents = False .Undo 'Range("B2").Value = x + Z Z = Target.Offset(1, 0).Value y = Target.Value Target.Value = x + y .EnableEvents = True .ScreenUpdating = True End With Target.Offset(1, 0).Value = x + Z End Sub

  • エクセルのマクロ

    セルの値が変わったら動くマクロですが、2つ書くとエラーが出ます。 どのように直したらいいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address If Intersect(Target, Range("EK22")) Is Nothing Then Exit Sub Else Range("EK24:EM28").Select Selection.ClearContents End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("EK24")) Is Nothing Then Exit Sub Else Range("EK27:EM28").Select Selection.ClearContents End If End Sub

  • エクセルのマクロコードについて

    エクセルのマクロコードに付いて教えて下さい。 下記のマクロコードがありますが、 Option Explicit ' Private Sub Worksheet_Change(ByVal Target As Range) '   Static Memo(1 To 3) As Long   Dim Cell As Range '   If Intersect([A1:C1], Target) Is Nothing Then     Exit Sub   End If '   For Each Cell In Target '     If Cell = "" Then       Memo(Cell.Column) = 0     End If   Next Cell   Set Cell = Target(1) '   If Not IsNumeric(Cell) Or Cell = "" Then     Exit Sub   End If '   Application.EnableEvents = False   Memo(Cell.Column) = Memo(Cell.Column) + Target   Target = Memo(Cell.Column)   Application.EnableEvents = True End Sub セル位置の指定を変更する場合は、どの様に書けば良いのですか? このコードですと、セルA1からc1の入力指定でなっていますが A1からAA1までとかにする場合やA1の結果を、A1ではなくA2に表示B1の結果をB2に表示する場合はどのように書くのでしょうか? マクロに付いて、殆ど知識が無いものですので 出来れば、分かり易い説明でお願いします。 宜しくお願いします。

  • 【ExcelVBA】 既にあるマクロの間で実行させたいのです。

    こんにちは 下のマクロを・・・ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "●入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "●" Then Target = "" Else Target = "●" End If End If End Sub このマクロの■ここで実行■で実行させたいのですが、どのようにしたらよいでしょう。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$D$1" Then Exit Sub Cancel = True Columns("A:U").Select Range("T1").Activate Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Selection.Replace What:="ああ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("D1").Select End Sub ■ここで実行■ Private Sub Worksheet_Change(ByVal Target As Range) strAddress = "A1:A2000" On Error GoTo ErrorHandler If Target.Count > 1 Then GoTo ErrorHandler If Not Intersect(Target, Range(strAddress)) Is Nothing Then Application.EnableEvents = False Range(strAddress).ClearContents Target.Value = "●" End If ErrorHandler: Application.EnableEvents = True End Sub

  • このマクロコードをダイエットするには?

    罫線を引き、配色し、文字に色を付ける。 このコードをどのようにダイエットすればよいのでしょうか? 罫線のマクロはこんなに大きいのですか? Withの使い方がよくわかりません。 よろしくお願い致します。 ------------ Sub Test1() Range("B1:O14").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Interior .ColorIndex = 56 .Pattern = xlSolid End With Selection.Font.ColorIndex = 33 End Sub

  • またまた エクセルのユーザー定義で

    前回以下のようなコードを教えていただきましたが、この変換を複数列で使えるようにするにはどうしたらいいのでしょうか? D,G,N,Q,X,AA,の列に効かせたいのですが。 Private Sub worksheet_change(ByVal Target As Range) If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Dim str As String str = Target Application.EnableEvents = False If Target <> "" Then If Len(str) = 7 Then Target = Left(str, 5) & "A" & Mid(str, 6, 1) & "-" & Right(str, 1) Else Target = Left(str, 5) & "A" & Mid(str, 6, 2) & "-" & Right(str, 1) End If End If Application.EnableEvents = True End Sub

  • シート保護をすると実行エラーになります。

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:A2000")) Is Nothing Then Exit Sub With Selection.Interior If .ColorIndex = xlNone Then .ColorIndex = 4 Else .ColorIndex = xlNone End If End With Cancel = True End Sub A列任意のセルをダブルクリックすると色が変わるコードを組んでいます。しかしながら、 A列のみロックを解除したのち、シート保護をすると、上記の実行がエラーになります。 どのようにすればエラーを回避できるのかお知恵をかしていただければ幸いです。

  • エクセル マクロ 初心者です

    エクセルマクロ初心者です。 以下の2つの Private Sub Worksheet_Change(ByVal Target As Range)を1つのシートで実行させたいのですが、 当方、初心者なので組み合わせ方が分かりません。 よろしくお願いします。 ===No1=== Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = StrConv(Target, vbUpperCase) Application.EnableEvents = True End Sub ===No2=== Private Sub Worksheet_Change(ByVal Target As Range) Dim Ans As Integer If Target.Count = 1 Then Ans = MsgBox("コピーは禁止!!", vbCritical) MsgBox "データを消去します。" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If If Target.Count = 1 Then Exit Sub Else MsgBox “複数セルのコピー禁止!" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If End Sub ------------ 上記の2つを1つのシートで動作させたいのですが、うまくいきません。 単体では、動作します。

専門家に質問してみよう