- ベストアンサー
VBA どこでもセル選択
- VBAのコードで、どのセルにも対応できるようにしたい場合、具体的な方法を教えてください。
- VBAのコードを使用して、セル選択を任意のセル(行)に適用する方法を教えてください。
- VBAのコードで、どの行にも適用できるようにセル選択を変更する方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>パセリの行が2とか4になっても対応させたいです。 以下のVBAコードと置き換えてください。 添付画像のような場合は5行目が項目になりますので '★取得する項目行を設定 の値を「5」としてください。 ■VBAコード Sub Macro1() Dim Ws01 As Worksheet Dim Counter As Long, i As Long, j As Long Dim INP As String Dim myRow As Integer Set wS = Worksheets("Sheet4") '★取得する項目行を設定 myRow = 5 wS.Cells.ClearContents For i = myRow To ActiveSheet.UsedRange.Rows.Count INP = "" For j = Selection(1).Column To Selection(Selection.Count).Column If Cells(i, j) = 1 Then INP = INP & Cells(myRow, j) & "," End If Next j Counter = Counter + 1 If INP <> "" Then wS.Cells(Counter, "A") = Left(INP, Len(INP) - 1) End If Next i End Sub
その他の回答 (4)
- mar00
- ベストアンサー率36% (158/430)
A_No.4様の回答でできると思います。 ただ For i = myRow To ActiveSheet.UsedRange.Rows.Count とすると1行目が必ず空白行になると思いますので For i = myRow+1 To ActiveSheet.UsedRange.Rows.Count にすればいいと思います。
お礼
1行目からになりました! ありがとうございます。
- eden3616
- ベストアンサー率65% (267/405)
No1のものです。 「どこでも」ということなので列同様に行もセル選択で範囲指定したいということでしょうか。 であればコードを以下のようにしてください。 ■VBAコード Sub Macro1() Dim Ws01 As Worksheet Dim Counter As Long, i As Long, j As Long Dim INP As String Set wS = Worksheets("Sheet4") wS.Cells.ClearContents For i = Selection(1).Row To Selection(Selection.Count).Row INP = "" For j = Selection(1).Column To Selection(Selection.Count).Column If Cells(i, j) = 1 Then INP = INP & Cells(2, j) & "," End If Next j Counter = Counter + 1 If INP <> "" Then wS.Cells(Counter, "A") = Left(INP, Len(INP) - 1) End If Next i End Sub
お礼
ありがとうございます。
- keithin
- ベストアンサー率66% (5278/7941)
作成例: sub macro1() dim w as worksheet dim r as long dim c as long dim n as long dim res as string set w = worksheets("Sheet4") w.cells.clearcontents w.range("A1") = "Results" for r = 3 to cells.specialcells(xlcelltypelastcell).row res = "" for c = 1 to cells(r, columns.count).end(xltoleft).column if cells(r, c) = 1 then res = res & "," & cells(2, c) end if next c w.cells(rows.count, "A").end(xlup).offset(1) = mid(res, 2) next r end sub >3としないでどのセル(行)にも対応させたい 1行目は使ってないし,2行目には項目を並べてるのだから,どの行にもしたらダメでしょう。 そもそも「何をしたくて」そういうマクロを教わったのか,その説明から無いのは手抜きが過ぎるでしょう。
お礼
ありがとうございます。 手抜きですみません。
- eden3616
- ベストアンサー率65% (267/405)
選択シートの使用中のセルをSheet4のA列に1行目から順にカンマで区切り書き出すマクロかな? 取得範囲として選択範囲の列に対し、3行目~使用されている行数分(?)を対象としているようですね。 3行目を開始行として、4、5行・・・・と順に処理をおこなっているようですが それで不都合があるということでしょうか。 (ループ回数指定方法が変な気がしますが・・・・) >どのセル(行)にも対応させたいのですが どのように処理範囲を変更したいのか意図・目的がはっきりしませんので、補足願います。
補足
http://okwave.jp/qa/q8689085.html g h i j パセリ クレソン メキャベツの葉 ごぼう 1 1 1 1 パセリの行が2とか4になっても対応させたいです。 わからなければまた補足します。
お礼
出来ました! ありがとうございます。