• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA どこでもセル選択)

VBA どこでもセル選択

このQ&Aのポイント
  • VBAのコードで、どのセルにも対応できるようにしたい場合、具体的な方法を教えてください。
  • VBAのコードを使用して、セル選択を任意のセル(行)に適用する方法を教えてください。
  • VBAのコードで、どの行にも適用できるようにセル選択を変更する方法を教えてください。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.4

>パセリの行が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

meronsodanomu
質問者

お礼

出来ました! ありがとうございます。

その他の回答 (4)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.5

A_No.4様の回答でできると思います。 ただ For i = myRow To ActiveSheet.UsedRange.Rows.Count とすると1行目が必ず空白行になると思いますので For i = myRow+1 To ActiveSheet.UsedRange.Rows.Count にすればいいと思います。

meronsodanomu
質問者

お礼

1行目からになりました! ありがとうございます。

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.3

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

meronsodanomu
質問者

お礼

ありがとうございます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

作成例: 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行目には項目を並べてるのだから,どの行にもしたらダメでしょう。 そもそも「何をしたくて」そういうマクロを教わったのか,その説明から無いのは手抜きが過ぎるでしょう。

meronsodanomu
質問者

お礼

ありがとうございます。 手抜きですみません。

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

選択シートの使用中のセルをSheet4のA列に1行目から順にカンマで区切り書き出すマクロかな? 取得範囲として選択範囲の列に対し、3行目~使用されている行数分(?)を対象としているようですね。 3行目を開始行として、4、5行・・・・と順に処理をおこなっているようですが それで不都合があるということでしょうか。 (ループ回数指定方法が変な気がしますが・・・・) >どのセル(行)にも対応させたいのですが どのように処理範囲を変更したいのか意図・目的がはっきりしませんので、補足願います。

meronsodanomu
質問者

補足

http://okwave.jp/qa/q8689085.html g    h     i     j パセリ クレソン メキャベツの葉 ごぼう 1                1 1      1 パセリの行が2とか4になっても対応させたいです。 わからなければまた補足します。

関連するQ&A