アプリ版:「スタンプのみでお礼する」機能のリリースについて

『B列のとあるセルに「あああ」と入力されているなら
B1から「あああ」の一つ上の行まで削除する』というコードが知りたいです。

なので例えば
「あああ」がB100に入力されているとしたら
1行目から99行目まで削除して「あああ」を「B1」に持ってくるようにしたいです。

よろしくお願いします。

A 回答 (9件)

こんなところへ質問するよりマクロの記録をなぜとって見ないのですか。


それをみて変えるべきところ、変え方を勉強してこそ、力が付くのです。
ーー
>B列のとあるセルに「あああ」と入力されているなら
B1から「あああ」の一つ上の行まで削除する』というコードが知りたいです

>「あああ」がB100に入力されているとしたら
1行目から99行目まで削除して「あああ」を「B1」に持ってくるようにしたいです
は内容が違うのではないですか。質問表現はしっかり。
ーー
マクロの記録をとると
Sub Macro1()

Columns("B:B").Select
Selection.Find(What:="あああ", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
Range("B1:B6").Select
Range("B6").Activate
Selection.Delete Shift:=xlUp
End Sub
ここで問題はB6が実際では変わる。そこで
(Selectionなどマクロの冗長さを取り去り、)「あああ」の発見行番号を捉えるように改良して
Sub Macro1()

r = Columns("B:B").Find(What:="あああ", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False).Row
MsgBox r
Range("B1:B" & r).Select
Selection.Delete Shift:=xlUp
End Sub
とする。
ーー
Selection.Delete Shift:=xlUp
はセルの削除だが行の削除なら、WEBで
「エクセルVBA 行の削除」で照会のこと。
http://www.k1simplify.com/vba/tipsleaf/leaf238.h …
--
Sub Macro1()
Columns("B:B").Select
r = Selection.Find(What:="あああ", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False).Row

Rows("1:" & r).Delete
End Sub
    • good
    • 0
この回答へのお礼

もっと勉強してがんばります。大変参考になりました。ご回答ありがとうございます。

お礼日時:2007/12/13 23:03

#2です。


ゴメンナサイ。#7だと、1行目に見つかったときエラーになります。
以下に修正。

Sub Test()
Dim lngYLine As Long
Dim Obj As Object

Set Obj = Cells.Find("あああ")
If Obj Is Nothing Then
MsgBox "「あああ」は見つかりませんでした。 "
Else
lngYLine = Cells.Find("あああ").Row - 1
If lngYLine > 0 Then
Rows("1:" & lngYLine).Select
Selection.Delete Shift:=xlUp
Range("A1").Select
End If
End If
Set Obj = Nothing
End Sub
    • good
    • 0
この回答へのお礼

大変参考になりました。ご回答ありがとうございます。

お礼日時:2007/12/13 22:56

#2です。



Sub Test()
Dim lngYLine As Long
Dim Obj As Object

Set Obj = Cells.Find("あああ")
If Obj Is Nothing Then
MsgBox "「あああ」は見つかりませんでした。 "
Else
lngYLine = Cells.Find("あああ").Row - 1
Rows("1:" & lngYLine).Select
Selection.Delete Shift:=xlUp
Range("A1").Select
End If
Set Obj = Nothing
End Sub
    • good
    • 0
この回答へのお礼

大変参考になりました。ご回答ありがとうございます。

お礼日時:2007/12/13 22:55

VBAがお望みならこんな感じでしょうか。



Sub test01()
On Error GoTo line
x = Application.WorksheetFunction.Match("あああ", Columns("B:B"), 0)
If x = 1 Then
Exit Sub
Else
Rows("1:" & x - 1).Delete
End If
Exit Sub
line:
MsgBox "見当たりません", vbCritical, "Σ( ̄ロ ̄lll) "
End Sub
    • good
    • 0
この回答へのお礼

できました!
ご回答ありがとうございます。

お礼日時:2007/12/13 22:54

No.4です。


申し訳ありません。

「あああ」以外を空白行と勘違いしていました。
無視して下さい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2007/12/13 22:49

ご参考に!



Sub test()
Columns("B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2007/12/13 22:49

#2です。


「あああ」以降の行も生かすのならダメですね。忘れてください。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。

お礼日時:2007/12/13 22:48

荒技ですが、


1.「編集」-「検索」で「あああ」を探し、見つかったらその行全体を選択してコピー。
2.左上の列番号と行番号の交差する四角形をクリックして、シート全体を選択し、「DEL」キーを押して全て削除。
3.1行目全体を選択して、ぺースト

> コードが知りたいです。
と言われているので、「VBAでかな?」とも思いましたが、ご参考まで...
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2007/12/05 13:57

一般的な方法ですが


B1で左クリックB99で「Shift」キーを押しながら左クリック選択した範囲内で右クリック削除を選択
これでいかがですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
このような状況が何度も出てくるので自動化できるようにマクロを組みたいのですが。。。
よろしくお願いします。

お礼日時:2007/12/04 23:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!