Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11949 / 13645 ツリー ←次へ | 前へ→

【13144】セル(列)挿入について たくや 04/4/24(土) 8:03 質問
【13145】Re:セル(列)挿入について くーさん 04/4/24(土) 9:31 回答[未読]
【13148】Re:セル(列)挿入について たくや 04/4/24(土) 11:22 お礼[未読]
【13156】Re:セル(列)挿入について たくや 04/4/24(土) 22:00 質問[未読]
【13157】Re:セル(列)挿入について Asaki 04/4/24(土) 22:28 回答[未読]
【13161】Re:セル(列)挿入について たくや 04/4/25(日) 7:59 質問[未読]
【13164】Re:セル(列)挿入について たくや 04/4/25(日) 13:46 お礼[未読]

【13144】セル(列)挿入について
質問  たくや  - 04/4/24(土) 8:03 -

引用なし
パスワード
   データsheetでの、セル(列)挿入についてですが、

   A   B   C   D   E
4   日  種別 項目1 項目2 項目3
5  4/1  aaa  111  222  333
6  4/2  bbb  111  222  333
7  4/3  bbb  111  222  333
8  4/4  ccc  111  222  333
   (以下続く)

とある場合、種別が b とc の場合は、AとCの間に3行に挿入したいのですが、よい方法が

あれば教えてください。下記のようにしたいのですが。

   A   B   C   D   E  F   G   H
4   日  種別 項目1 項目2 項目3 項目4 項目5 項目6
5  4/1  aaa  111  222  333
6  4/2  bbb           111  222  333
7  4/3  bbb           111  222  333
8  4/4  ccc           111  222  333
   (以下続く)


いろいろ考えたのですが、初心者でわからなくなりました。
こんな感じでしょうか?(全然だめですが)

Sub 挿入()

  Dim i As Long

  For i = 1 To 3
   If Worksheets("データ").Range("A5").Value = "bbb,ccc" Then
     Worksheets("データ").column(i).Insert xlToRight
   End If
     Worksheets("データ").Range("A5").Value = "bbb,ccc" Then
     ---何もしない---
   Else

【13145】Re:セル(列)挿入について
回答  くーさん  - 04/4/24(土) 9:31 -

引用なし
パスワード
   こんにちは。
中途半端ですが、1つだけ右にずらす方法なら以下を参照して下さい。

Private Sub CommandButton1_Click()
Dim i As Long, LastRow As Long
LastRow = Worksheets("データ").Range("A65536").End(xlUp)
  
For i = 1 To LastRow
If Worksheets("データ").Cells(i, "B").Value = "bbb" Then
Worksheets("データ").Cells(i, "C").Insert Shift:=xlToRight
End If
If Worksheets("データ").Cells(i, "B").Value = "ccc" Then
Worksheets("データ").Cells(i, "C").Insert Shift:=xlToRight
End If
Next i
End Sub

Cells で2列以上を範囲指定する方法が分かれば良いのですが、いかんせん私も勉強中なので、現在は分かっておりません。
中途半端な答えで申し訳ない…。

【13148】Re:セル(列)挿入について
お礼  たくや  - 04/4/24(土) 11:22 -

引用なし
パスワード
   ありがとうございます。
早速シートにて、1つだけ右にずらす方法を確認しました。

私は初心者レベルですので、回答して頂きましたコードをヒントに、どうしたらいいか、もう少し考えていきたいと思います。

【13156】Re:セル(列)挿入について
質問  たくや  - 04/4/24(土) 22:00 -

引用なし
パスワード
   いろいろ挑戦しましたが、思うようにできません。
お知恵を貸してください。

種別が bbb とcccc の場合は、BとCの間に3列(セル)に挿入したいのですが、
できれば1列ずつではなく、一発で処理できる方法を目指したいです。


・B5以下データの最終行までで、セルデータが bbb とcccc の場合はとしたい
・BとCの間に3列(セル)挿入

【13157】Re:セル(列)挿入について
回答  Asaki  - 04/4/24(土) 22:28 -

引用なし
パスワード
   こんばんは。

↓こんなもんでどうでしょうか?
Sub test()
  Dim c    As Range
  For Each c In Range("B5", Cells(Rows.Count, 2).End(xlUp))
    Select Case c.Value
      Case "bbb", "ccc"
        c.Offset(, 1).Resize(, 3).Insert Shift:=xlToRight
    End Select
  Next c
End Sub

【13161】Re:セル(列)挿入について
質問  たくや  - 04/4/25(日) 7:59 -

引用なし
パスワード
   Asaki さん、ありがとうございます。
早速使用させてもらったのですが、処理(動作)実行がされませんでした。
コードを微調整しなければならないのかと思い、いろいろと調整したのですが、
VBA初心者で理解できず申し訳ありません。

データのあるB列に変数を使って処理しているということですね。コードの意味はそれなりに理解は出来ているのですが、なぜ動作しないのかわかりません。

>Sub test()
>  Dim c    As Range
>  For Each c In Range("B5", Cells(Rows.Count, 2).End(xlUp))
>    Select Case c.Value
>      Case "bbb", "ccc"
>        c.Offset(, 1).Resize(, 3).Insert Shift:=xlToRight
>    End Select
>  Next c
>End Sub

【13164】Re:セル(列)挿入について
お礼  たくや  - 04/4/25(日) 13:46 -

引用なし
パスワード
   どうも失礼しました。
再度チャレンジしていましたら、処理できるようになりました。
教えて頂いたコード自体には、問題はありませんでした。
本当に、ありがとうございます。

11949 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free