• ベストアンサー

Excel2003 上手く動かなくなってしまいました!!

お世話になっております。 以前こちらでご教授いただいたマクロを登録して 上手い事 動作していて助かっていたのですが 自分が変な所をイジってしまった為に 上手く動作しなくなってしまいました。 どこが おかしいのか、再度ご教授ください。 宜しくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) Dim rOne As Range For Each rOne In Target Select Case (rOne.Value) Case 1 Range("Q" & rOne.Row).Select Case 2 Range("Y" & rOne.Row).Select Case 3 Range("AA" & rOne.Row).Select Case Else End Select Next rOne というマクロをいただき、リストで 1~3の数字を選ぶようにしていたのですが そのリストをイジってしまい、 1、あああ 2、いいい 3、ううう というように文字列を挿入した結果「Q」「Y」「AA」列にセルが飛ばなくなってしまいました。 解決方法をご教授ください。 宜しくお願い致します。

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

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.12

L列が左側の列と結合されていないですか? 例えば、K列と結合してK列を非表示しているとか デバッグで、Target.Column の中身を確認してみては。 止まった状態で、カーソルをTarget.Columnの上に持って行けば 中身の内容が表示されます。12 ではない事は入力列がL列ではない事です。 例えば、Target.Columnの内容が 11 ならば以下を   If Target.Column <> "11" Then Exit Sub  に変更すれば良いです。

ookami1969
質問者

お礼

すみません。。。。 今さら こんな事は言いにくいのですが どうやら 僕の勘違いだったようで リストは「L列」ではなく「P列」でした。。。 本当にすみません。。。 なのでご教示いただいた内容を当てはめますと数字を「15」に変更すれば良いという事に なりますよね。 実際に 15 に変更してみたら上手く動作してくれました。 何度も ご回答くださりありがとう御座いました。 お陰様で望み通りのシートが完成致しました。 ありがとうございます。 自分が間違っている事に気付けたのも 今回の回答で 12という数字が 列番号を表しているのだと分かった事で初めて気付けました。 根気よく ご回答くださり誠にありがとう御座いました。 たかが「ありがとうポイント」ぐらいしか差し上げられませんが ご査収ください。 長い間 本当にありがとう御座いました。

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

その他の回答 (11)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Select Case (rOne.Value) を Select Case (Left(rOne.Value, 1)) か Select Case Val(Left(rOne.Value, 1)) でってことかな。

ookami1969
質問者

お礼

ご回答ありがとう御座います。 ご提示の通りにやってみたのですが「何とかエラー」の表示が出てしまいました。。。 どうやら >Private Sub Worksheet_Change(ByVal Target As Range) この部分に問題があるようで、そこが黄色くなり 左に→が出ています。 再度 ご教授お願い致します。

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

関連するQ&A

  • Excel2003 マクロをご教授ください!

    いつもお世話になっております。 ここで 様々な方にご教授いただいて Excelのマクロを反映させられたのですが マクロを貼り付けた後で列を削除したり、各種編集をしていたら 今まで動作していたマクロが動作しなくなってしまいました。 以下 前文を記しますが 動作しないのは 下のマクロです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim rOne As Range Dim intNo As Integer If Target.Column <> "15" Then Exit Sub For Each rOne In Target intNo = Val(StrConv(rOne.Value, vbNarrow)) Select Case (intNo) Case 1 Range("p" & rOne.Row).Select Case 2 Range("x" & rOne.Row).Select Case 3 Range("z" & rOne.Row).Select Case Else End Select Next rOne If Intersect(Target, Range("L3:L3001")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub Application.ScreenUpdating = False Application.EnableEvents = False With Target.Offset(0, 1).Validation .Delete .Add Type:=xlValidateInputOnly .IMEMode = xlIMEModeHiragana End With If Target Like "###-####" Then Target.Offset(0, 1).Select SendKeys Target.Value SendKeys "{ }" SendKeys "{ENTER}" End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub 上のマクロ(セルを飛ばす)は正常に動作してくれるのですが 下のマクロで郵便番号を自動的に隣のセル(M列)に反映してくれなくなってしまいました。 M列のとなり(たしかN列だったと思うのですが)を削除したあたりから この郵便番号マクロが動作しなくなってしまいました。 どこか おかしな所はないか見ていただけますでしょうか。 宜しくお願い致します。

  • Range("B19:T19").Select

    よろしくお願いします Private Sub Worksheet_Change(ByVal Target As Range) 内のマクロで Range("B19:T19").Selectの 19をTarget.Rowで表現すると Range("B19:T19").Selectをどう直したらいいでしょうか? こんな簡単なことが分かりません どなたか教えてください

  • アクティブセルの右側にユーザーフォームから入力したい。

    アクティブセルの右側にユーザーフォームから入力したい。 すいません初心者で困ってます。 Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 7 Then '色付けをColumn=??に限定 Select Case .Value '反応させる文字列の入力と(.Row ?)~(.Row?)で色塗り範囲指定 Case "完了" Range(Cells(.Row, 3), Cells(.Row, 13)).Interior.ColorIndex = 0 UserForm2.Show Case "提出中" Range(Cells(.Row, 3), Cells(.Row, 13)).Interior.ColorIndex = 6 Case Else Range(Cells(.Row, 3), Cells(.Row, 13)).Interior.ColorIndex = 0 End Select End If End With End Sub 台帳を作ってるんですが、リストから選択して”完了”と入力されるとUserForm2が開いて完了日を入力したいと思っております。 UserForm2はスピンボタンでそこそこ完成したんですが、”完了”に切り替えたセルの隣のセルに入力の方法が分からなくて困っております。 どなたか御教授ください。

  • マクロ、カーソルの相対移動

    下記マクロはカーソルの相対移動で教えいいただいたものです。 セルに値を入力しないで、Enterを押下した時もこのように動作させるためにはどのように記述したらいいでしょうか。教えてください。よろしくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) if Target.Column = 2 Then Cells(Target.Row,5).Select if Target.Column = 5 Then Cells(Target.Row,7).Select if Target.Column = 7 Then Cells(Target.Row + 1, 2).Select End Sub

  • Rows("20:20").Selectについて

    よろしくお願いします こんな簡単なことが分かりません どなたか教えてください マクロを記録すると Rows("20:20").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove と記録されました また Private Sub Worksheet_Change(ByVal Target As Range)内のマクロで Debug.Print Target.Row と書くと 20が表示されます そこで Rows("20:20").Select の20をTarget.Rowに置き換えるには、マクロではどう書いたらよいでしょうか 色々試しましたがエラーで進みません うまく表現できていませんが、どなたか教えてください  

  • エクセルVBA プルダウンのリスト 指定範囲以外で

    こんにちは。 現在、業務で案件の簡単な進捗表を作成しています。 VBAで他の、ご質問/回答を基にマクロを組んで遊んで?いますが、 以下の問題に困っています。 現在作成中のエクセルファイルのステータスですが、 (1)A列に”入力規則”でプルダウン(終了,延期)を設けています。 (2)マクロでA列のプルダウンで”終了”の場合はA:AFまでグレーアウト  同様に”延期”の場合はA:AFまで黄色 (3)マクロでC列に”土”ならフォントを青で日なら赤 やりたい事ですが、 (1)の事を”マクロ”でやりたいんです。 リストで元の値を指定してマクロを組む方法は、 いくらでもネット上に転がっているのですが、 元の値を範囲ではない方法、つまり、 入力規則⇒リスト⇒ ”=$A$1:$A$10” ではなく、”りんご,ばなな、みかん”のように、 マクロのコード内で範囲を構成したい、、、 うまくいえませんが、簡単に言うと、プルダウンメニューが2つしかないのに、 わざわざ、データ用の別シートを作ったりしたくない、、、という理由です。 このプルダウンメニューのマクロを今の下記コードに組み込ませたいのですが、 どなたか、ご教授願います。 ※今後の事も考え拡張性(プルダウンメニューの追加とか)を考慮したものを書きたいです。 マクロが面白くなってきたから勉強しているのであって、 入力規則の今のままでいいのでは?という野暮な回答はご遠慮します。 上記の(2)と(3)を他の質問から見よう見まねで組み合わせ、 動作は確認出来ています。 以下が組み合わせたものとなります。 Private Sub Worksheet_Change(ByVal Target As Range) Dim RngA1 As Range Dim RngA2 As Range Dim RngC1 As Range Dim RngC2 As Range Dim RngE1 As Range Dim RngE2 As Range Dim rr As Range Dim i As Long Dim c As Range Dim myColor As Long Dim clr As Integer '#########################Aの処理######################### Set RngA1 = Range("A:A") '判定の対象となる列 Set RngA2 = Range("A:AF") '色を変える列 If Intersect(Target, RngA1) Is Nothing Then GoTo SYORI_C For Each c In Intersect(Target, RngA1) With c Select Case .Value Case "終了": myColor = 48 Case "延期": myColor = 27 Case Else myColor = xlColorIndexNone End Select Intersect(c.EntireRow, RngA2).Interior.ColorIndex = myColor End With Next '#########################Cの処理######################### SYORI_C: Set RngC1 = Range("V:V") '判定の対象となる列 Set RngC2 = Range("V:W") '色を変える列 If Intersect(Target, RngC1) Is Nothing Then GoTo SYORI_E For Each c In Intersect(Target, RngC1) With c Select Case .Value Case "無し": myColor = 48 Case Else myColor = xlColorIndexNone End Select Intersect(c.EntireRow, RngC2).Interior.ColorIndex = myColor End With Next '#########################Eの処理######################### SYORI_E: Set RngE1 = Range("X:X") '判定の対象となる列 Set RngE2 = Range("X:Y") '色を変える列 If Intersect(Target, RngE1) Is Nothing Then GoTo SYORI_G For Each c In Intersect(Target, RngE1) With c Select Case .Value Case "無し": myColor = 48 Case Else myColor = xlColorIndexNone End Select Intersect(c.EntireRow, RngE2).Interior.ColorIndex = myColor End With Next '######################################################## SYORI_G: If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub For Each rr In Intersect(Target, Range("C:C")) For i = 1 To Len(rr.Value) Select Case Mid$(rr.Value, i, 1) Case "土": clr = 5 Case "日": clr = 3 Case Else: clr = xlAutomatic End Select rr.Characters(i, 1).Font.ColorIndex = clr Next Next '######################################################## End Sub

  • Worksheet_Changeイベントでのセル設定

    マクロ初心者です。Excel2003です。 Sheet1に下記のイベントを記述しましたが、(3)だけ動作してくれません。 シート上では、N27とO27の2つのセルが結合されており、入力規則でリスト選択(3択)する設定になっています。(1)や(2)のように認識してくれるようにするにはどうしたらいいでしょうか? どなたか教えてください。よろしくお願いします!! Private Sub Worksheet_Change(ByVal Target As Range)  Select case Target.Address   (1)Case "$E$5"     ・・・   (2)Case "$E$6", "$E$24", "$N$6"     ・・・   (3)Case "$N$27"     ・・・  End Select End Sub

  • 結合されたセルを列方向に検索したい

    excel2003 結合されたセルを列方向に検索したい Bセルで同じ文字列が入っているセルをダブルクリックすると、順繰りに検索する。 下記が、マクロの内容です。 ------------------------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Err GoTo Myerr: Dim MyRange As Range Dim FirstRow As Integer Application.EnableEvents = False If Target.Column = 2 And Target.Value <> "" Then If Target.Row = Range("B" & Rows.Count).End(xlUp).Row Then FirstRow = 1 Else FirstRow = Target.Row End If With Range("B" & FirstRow & ":B" & Range("B" & Rows.Count).End(xlUp).Row) Set MyRange = .Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) If FirstRow = Target.Row Then Set MyRange = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, After:=ActiveCell) MyRange.Select Else MyRange.Select End If End With End If Application.EnableEvents = True Myerr: Application.EnableEvents = True End Sub ------------------------------------------------------------------------- 上記内容で、単独セルであれば動作するのですが、 行方向に結合されている(B1とB2が結合されている)セルをダブルクリックすると 実行時エラー’13’: 型が一致しません。 というエラーが発生します。 上記マクロでどこを修正したらよいのか、教えていただきたく。 B列は、結合されたセル、単独のセルが混在しています。

  • Excel2013 ExcelVBAで散布図

    Excel2013 ExcelVBAで散布図を書く方法を教えてください。 Excel2013にてA列とC列で散布図を作成するため excelVBAで以下のコードを書いています。 Sub hogehoge() Dim aa As Range Dim cc As Range Dim aacc As Range Set aa = Range(Cells(1, 1), Cells(6, 1)) Set cc = Range(Cells(1, 3), Cells(6, 3)) Set aacc = Union(aa, cc) aacc.Select ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatterLinesNoMarkers End Sub 上記を実行すると左側のグラフになってしまうのですが 右側のグラフを書きたいんですがどうしたらいいのでしょうか? よろしくお願いします。

  • 【Excel VBA】チェンジイベント

    Excel2003を使用しています。 マクロの記録を元に、チェンジイベントを下記のように作成しました。 下記は、B列の11行目以降のセルのデータが変化したら、その行のF列に入力規則を設定するように作成したつもりです。 テストもしてみましたが、きちんと動作しました。 さらに、B列の11行目以降のセルのデータがクリアされたら、その行のF列に設定した入力規則もクリアしたく  If Target.Columns(2).ClearContents And Target.Row >= 11 Then   Cells(Target.Row, 6).Validation.Delete  End If 分からないながらにも、↑このように追加して試してみたのですが、何も動作しなくなりました(^_^;) こういう場合は、どのようにコードを書いたらいいのでしょうか? よろしくお願いします。 -------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 2 And Target.Row >= 11 Then   With Cells(Target.Row, 6).Validation    .Delete    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _    xlBetween, Formula1:="=$F$3:$F$7"    .IgnoreBlank = True    .InCellDropdown = True    .InputTitle = ""    .ErrorTitle = ""    .InputMessage = ""    .ErrorMessage = ""    .IMEMode = xlIMEModeNoControl    .ShowInput = True    .ShowError = False   End With  End If End Sub ------------------------------------------------

専門家に質問してみよう