A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
No.4の回答で、勉強させていただきました。
Sub mmb()
Range("A2:A" & Rows.Count).Select
' A列の2行目以下の全行のセルを選択
Selection.Find(What:="あ", LookAt:=xlPart).Activate
' 選択している範囲で、セルの値が"あ"である一番目のセルをアクティブに
ActiveCell.Interior.ColorIndex = 6
Set yyyy = Selection.ColumnDifferences(ActiveCell)
' 選択している範囲で、セルの値が"あ"ではないセルを yyyyとする
yyyy.Interior.ColorIndex = 7
Set yyyys = yyyy.SpecialCells(xlCellTypeConstants)
' yyyyの中で、固定値(文字、数値)、論理値(True,False)、エラーのセルを yyyysとする
Set yyyyv = yyyy.SpecialCells(-4123)
' yyyyの中で、数式のあるセルを yyyyvとする
Union(yyyys, yyyyv).Select
' yyyysの範囲とyyyyvの範囲との両方を選らぶ
Selection.Interior.ColorIndex = 4
' 選択している内部の色を 綠に
End Sub
No.4
- 回答日時:
質問文からは読み取れない仕様を都合よく解釈して良いのであれば、こんなのでも行けそうな気がします。
Sub sample()
Range("A2:A" & Rows.Count).Select
Selection.Find(What:="あ", LookAt:=xlPart).Activate
Selection.ColumnDifferences(ActiveCell).Select
Selection.SpecialCells(xlCellTypeConstants, 23).Select
End Sub
No.3
- 回答日時:
#1です
ご指摘ありがとうございます
ざっくりでしたのでざっくりコードのみで回答してしまいました。
>A列”あ”セルの下のセルからデータのある最終セルまでを選択してコピーしたい。
乗りかかった船なので プロシージャにしてコード、ロジックを書きました
やり方は色々あると思いますので一例です
説明を1つ1つ書いた方が良いと思いましたのでコメントとして書きましたので参考にしてください
Sub Sample()
'変数宣言 すべてセル範囲などを示すオブジェクト型
Dim r As Range, rng As Range
Dim firstCell As Range, lastCell As Range
'オブジェクト型変数への代入はSetで行う
Set firstCell = ActiveSheet.Range("A1")
Set lastCell = ActiveSheet.Cells(Rows.Count, "A") '一番下のセル
'Find メソッドで"あ"を含むセルを検索(VBA Findで要検索)
Set r = Range(firstCell, lastCell.End(xlUp)).Find(What:="あ", LookAt:=xlPart)
'見つかれば Not Nothing で無いの否定
If Not r Is Nothing Then
'シート関数CountBlankで空白セルをカウント
'1行目からなので見つけた行№ -1より少なければどこかに値がある
If Application.CountBlank(Range(firstCell, r.Offset(-1))) < r.Row - 1 Then
'見つけた1つ上のセルが空白でなければ
If r.Offset(-1) <> "" Then
'A1から見つけた1つ上のセルまでを変数にセット
Set rng = Range(firstCell, r.Offset(-1))
Else
'見つけた1つ上のセルが空白ならば、
'A1から 見つけた1つ上のセルより上方の値のあるセルまで変数にセット
Set rng = Range(firstCell, r.Offset(-1).End(xlUp))
End If
End If
'見つけたセルの下に値のあるセルがあるか
If r.End(xlDown) <> lastCell Then
'値があれば見つけたセルの1つ下のセルから値のある最後のセルまでを変数にセット
Set rng = Union(rng, Range(r.Offset(1), lastCell.End(xlUp)))
End If
End If
'上記説明で出てきたので割愛
If Not rng Is Nothing Then rng.Copy
End Sub
コピーで終了しています
補足
Rows.Count シートの行数(総数)を表します
.End(xlUp) Ctrl+↑キー操作同様? (記録できます)
.End(xlDown) Ctrl+↓キー操作同様?
.Offset セル参照位置の変更 Range("A1").Offset(1,1) この場合B2
Unionメソッド セル範囲を合体するようなもの(調べて)
If 条件分岐 調べて
>基礎や法則をまだ理解しきれておらず四苦八苦しています。
分かり難い書き方、回答かと思いますが、一応説明、補足を付けました
解らない所はメソッドやプロパティで調べてください
No.2
- 回答日時:
こんばんは
>”あ”が入っているセル
というのは、"あ"が含まれているという解釈で良いのですよね?
また、該当範囲が存在しない場合の記述がありませんけれど、その場合は、勝手に「B1セルが選択された状態になる」としてあります。
"あ"が複数存在する場合は、最初の(=行番号の小さい)セルを基準にします。
以下のような感じではいかがでしょうか?
Sub Q13091910()
Dim c As Range, r As Long
Range("B1").Select
Set c = Columns(1).Find(What:="あ", LookAt:=xlPart, After:=Cells(Rows.Count, 1))
If Not c Is Nothing Then
For r = c.Row - 1 To 1 Step -1
If Cells(r, 1).Value <> "" Then Cells(1, 1).Resize(r).Select: Exit Sub
Next r
End If
End Sub
※ 差し出がましくて申し訳ありませんけれど、No1様のロジックだと以下のようなケースで上手くいかないかもしれません。
・"あ"が1行目に存在する場合(これは問題ないかもですが)
・"あ"があるセルの、直上のセルまで値が入っている場合
No.1
- 回答日時:
こんばんは
Dim r As Range
Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Find(What:="あ", LookAt:=xlPart)
If Not r Is Nothing Then Range("A1", r.Offset(-1).End(xlUp)).Select
"あ"を含む値のセルは上から最初に見つかったセルが基準になります
"あ"の値がある場合処理され、無ければ処理されません
処理された場合に上全てに値が無くともA1は選択されます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) エクセルの掛け算 3 2022/12/13 14:49
- Visual Basic(VBA) セルに抜けた番号の代わりに空白を挿入する 4 2023/04/10 20:29
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) マクロを教えてください 3 2023/07/31 21:57
- Excel(エクセル) マクロを教えてください 2 2023/07/30 23:05
- その他(Microsoft Office) 選択行の列範囲に二重線を引く 3 2022/06/08 12:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
枠に収まらない文字を非表示に...
-
エクセルの書式設定の表示形式...
-
対象セル内(複数)が埋まった...
-
Excel2003 の『コメント』の編...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセルの関数VLOOKUP...
-
エクセルで休憩時間を引く時と...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルのセルの枠を超えて文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 足して割る
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
Excelで数式内の文字色を一部だ...
-
Excelでのコメント表示位置
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
セルをクリック⇒そのセルに入力...
-
【Excel】 セルの色での判断は...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
excelのCOUNTIF関数で、『範囲=...
-
(Excel)数字記入セルの数値の後...
-
枠に収まらない文字を非表示に...
-
Excel2003 の『コメント』の編...
-
Excel 例A(1+9) のように番地の...
-
複数のセルのいずれかに数字が...
おすすめ情報
早速のご回答ありがとうございます。
ここから質問するのが失礼である事は承知の上で、さらに以下についても教えていただけますか?
ご回答いただいたA1からA3までのセル選択プラス、A列”あ”セルの下のセルからデータのある最終セルまでを選択してコピーしたい。(”あ”はA列内に一つのみ存在します)
最近マクロの勉強を始めたばかりで色々調べてはいるものの、『マクロの登録』で少しカスタマイズはできても、基礎や法則をまだ理解しきれておらず四苦八苦しています。
どうかよろしくお願いします。
ありがとうございます。
色々と情報不足で申し訳ありません。
”あ”が含まれている、という解釈で大丈夫です。
また、”あ”セルは少なくとも1行目には存在せず、”あ”セルの直上のセルだけは必ず空白です。
”あ”セルの直下以降、該当範囲内にデータが存在しない場合もあり、その場合は選択しない、という設定はできますか。
以下が想定されるケースです。
《ケース1:”あ”セル直下にデータあり》
→A1からA3とA7からA8を選択したい
A B C
1 000
2 111
3 222
4
5
6 あ
7 333
8 444
9
《ケース2:”あ”セル直下以降にデータなし》
→A1からA4のみ選択
A B C
1 000
2 111
3 222
4 555
5
6 あ
7
8
9
以上で情報は足りますでしょうか。