Excel VBA質問箱 IV

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

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


9821 / 13644 ツリー ←次へ | 前へ→

【25238】ワイルドカードについて うっち 05/5/25(水) 5:04 質問[未読]
【25239】Re:ワイルドカードについて kobasan 05/5/25(水) 7:01 回答[未読]
【25290】Re:ワイルドカードについて うっち 05/5/26(木) 16:40 お礼[未読]

【25238】ワイルドカードについて
質問  うっち  - 05/5/25(水) 5:04 -

引用なし
パスワード
   よろしくお願いします。
10桁の管理番号の1文字目がTで始まり、その右隣のセルの値がaaで始まる行の値をaaシートにコピーしたいのですが下のマクロだとうまくいきません。管理番号を10桁で指定してaaで始まる値を正しく入れるとうまく動作します。ワイルドカードではダメなのでしょうか?ご指導よろしくお願いします。
Sub TEST()
Dim a As Integer, i As Integer

a = Cells(65536, 2).End(xlUp).Row
For i = 2 To a
Cells(i, 2).Select
If ActiveCell.Value = "T*" And ActiveCell.Offset(, 1).Value = "aa*" Then
Range(Cells(i, 2), Cells(i, 10)).Select
Selection.Copy
Sheets("aa").Select
Cells(65536, 1).End(xlUp).Select
ActiveSheet.Paste
End If
Next

End Sub

【25239】Re:ワイルドカードについて
回答  kobasan  - 05/5/25(水) 7:01 -

引用なし
パスワード
   ▼うっち さん おはようございます。
>よろしくお願いします。
>10桁の管理番号の1文字目がTで始まり、その右隣のセルの値がaaで始まる行の値をaaシートにコピーしたいのですが下のマクロだとうまくいきません。管理番号を10桁で指定してaaで始まる値を正しく入れるとうまく動作します。ワイルドカードではダメなのでしょうか?ご指導よろしくお願いします。
ワイルドカードを使いたかったら Like を使うとよいでしょう。
selectは使わない方が速いです。

ワイルドカードを使いたかったら Like を使うとよいでしょう。
selectは使わない方が速いです。

Sub Sub TEST()
Dim lastCell As Range
Dim a As Integer, i As Integer

  Set lastCell = Cells(65536, 2).End(xlUp)
  For Each r In Range("b2", lastCell)
    If r.Text Like "T*" And r.Offset(0, 1).Text Like "aa*" Then
    'または
    'If Left(r.Text, 1) = "T" And Left(r.Offset(0, 1).Text, 2) = "aa" Then
      Range(r, r.Offset(0, 9)).Copy
      '-----貼付
      Sheets("aa").Cells(65536, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    End If
  Next
End Sub

【25290】Re:ワイルドカードについて
お礼  うっち  - 05/5/26(木) 16:40 -

引用なし
パスワード
   ▼kobasan さん:
ご指導ありがとうございました。早速試してみました。ちゃんと動作しました。
親切にご指導くださってありがとうございました。
>▼うっち さん おはようございます。
>>よろしくお願いします。
>>10桁の管理番号の1文字目がTで始まり、その右隣のセルの値がaaで始まる行の値をaaシートにコピーしたいのですが下のマクロだとうまくいきません。管理番号を10桁で指定してaaで始まる値を正しく入れるとうまく動作します。ワイルドカードではダメなのでしょうか?ご指導よろしくお願いします。
>ワイルドカードを使いたかったら Like を使うとよいでしょう。
>selectは使わない方が速いです。
>
>ワイルドカードを使いたかったら Like を使うとよいでしょう。
>selectは使わない方が速いです。
>
>Sub Sub TEST()
>Dim lastCell As Range
>Dim a As Integer, i As Integer
>
>  Set lastCell = Cells(65536, 2).End(xlUp)
>  For Each r In Range("b2", lastCell)
>    If r.Text Like "T*" And r.Offset(0, 1).Text Like "aa*" Then
>    'または
>    'If Left(r.Text, 1) = "T" And Left(r.Offset(0, 1).Text, 2) = "aa" Then
>      Range(r, r.Offset(0, 9)).Copy
>      '-----貼付
>      Sheets("aa").Cells(65536, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
>    End If
>  Next
>End Sub

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