質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

解決済

文字制限を超えたセルに処理をしたい

memem12
memem12

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1回答

0評価

0クリップ

2閲覧

投稿2021/01/21 07:45

前提・実現したいこと

毎回お世話になっています。
現在、符号をA列、個数をB列、番号をC列に入れたリストを作っており
同じ符号を持った番号があれば上の行に個数と番号を入れる処理を作っています。
今回はその番号を入れたセルが20文字を超した時、セルを行挿入して結合する処理を作りたいのですが、
結合のコードが間違っているようで、エラーメッセージが表示されています。
どのように書けばよいのでしょうか。ご教授いただければ幸いです。

発生している問題・エラーメッセージ

Rangeメソッドは失敗しました。 WorkSheetオブジェクト

該当のソースコード

VBA

Private Sub Worksheet_Change(ByVal Target As Range) Dim SearchRange As Range Dim ResultRange As Range Dim KeyItem As String Dim ResultNumber As String Dim ResultValue As Long, Num As Long Dim Rng As Variant Set SearchRange = Range("A2:A1000") '探す符号の範囲 With Target If Target.Count > 1 Then Exit Sub If .Column = 3 And .Row >= 2 And .Value <> "" Then Application.EnableEvents = False If .Value <> "" Then .Value = "(" & .Offset(0, -1).Value & ")" & .Value KeyItem = .Offset(0, -2).Value '符号をキーにして探す For Each Rng In SearchRange 'SearchRangeのセル範囲をRngに代入して処理を繰り返す If Rng = KeyItem And Rng.Row <> Target.Row Then 'RngがKeyItemのセル中身と一致し、異なる行を選んだ ResultNumber = Rng.Offset(0, 2) & "," & Target.Value '部品番号を入れる ResultValue = Rng.Offset(0, 1) + Target.Offset(0, -1).Value '個数を足す Rng.Offset(0, 1) = ResultValue Rng.Offset(0, 2) = ResultNumber Target.Offset(0, -2).Resize(1, 3).ClearContents '選んだセルの範囲の1行3列をクリア Num = Len(Rng.Offset(0, 2)) If Num >= 20 Then '番号を入れたセルが20文字を超えた時 Rows(Rng.Row).Insert '行挿入 Application.DisplayAlerts = False Rng.Offset(-1, 0) = Rng.Offset(0, 0) 'それぞれ一行上に値を挿入してからMerge Rng.Offset(-1, 1) = Rng.Offset(0, 1) Rng.Offset(-1, 2) = Rng.Offset(0, 2) Rng.Offset(0, 0).Resize(1, 3).ClearContents Range(Rng.Offset(0, 0) & ":" & Rng.Offset(-1, 0)).Merge Range(Rng.Offset(0, 1) & ":" & Rng.Offset(-1, 1)).Merge Range(Rng.Offset(0, 2) & ":" & Rng.Offset(-1, 2)).Merge Application.DisplayAlerts = True End If Exit For End If Next End If End If End With Application.EnableEvents = True End Sub

補足情報(FW/ツールのバージョンなど)

使用したExcel:Excel2013

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。