Excel VBA質問箱 IV

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

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


9987 / 13646 ツリー ←次へ | 前へ→

【22475】範囲内でのセル指定 ほい 05/2/22(火) 14:45 質問[未読]
【22477】Re:範囲内でのセル指定 IROC 05/2/22(火) 15:11 回答[未読]
【22478】Re:範囲内でのセル指定 G-Luck 05/2/22(火) 15:12 回答[未読]
【22507】Re:範囲内でのセル指定 ほい 05/2/23(水) 1:24 お礼[未読]
【22833】Re:範囲内でのセル指定 ほい 05/3/4(金) 16:41 質問[未読]
【22836】Re:範囲内でのセル指定 G-Luck 05/3/4(金) 17:09 発言[未読]
【23041】Re:範囲内でのセル指定 ほい 05/3/10(木) 16:03 質問[未読]
【23043】Re:範囲内でのセル指定 G-Luck 05/3/10(木) 16:56 発言[未読]
【24423】Re:範囲内でのセル指定 ほい 05/4/21(木) 22:21 お礼[未読]

【22475】範囲内でのセル指定
質問  ほい  - 05/2/22(火) 14:45 -

引用なし
パスワード
   Sub s()
Dim i As Long
Dim h As Variant
i = 1
h = Range(Cells(I*15-5, 3), Cells(i*15, 3))
Range(h.End(xlUp).Offset(1)).Select
End sub

C10からC14のセル範囲内で一番上にある空白のセルを「Cells」をつかった構文で選択したいのですがどうすればよいですか?

【22477】Re:範囲内でのセル指定
回答  IROC  - 05/2/22(火) 15:11 -

引用なし
パスワード
   これでよいでしょうか?

Cells(9, 3).End(xlDown).Offset(-1).Select

【22478】Re:範囲内でのセル指定
回答  G-Luck  - 05/2/22(火) 15:12 -

引用なし
パスワード
   ▼ほい さん:
>Sub s()
>Dim i As Long
>Dim h As Variant
>i = 1
>h = Range(Cells(I*15-5, 3), Cells(i*15, 3))
>Range(h.End(xlUp).Offset(1)).Select
>End sub
>
>C10からC14のセル範囲内で一番上にある空白のセルを「Cells」をつかった構文で選択したいのですがどうすればよいですか?

Range(Cells(I*15-5, 3), Cells(i*15, 3))._
 SpecialCells(xlCellTypeBlanks).Cells(1).Select

でどうでしょう?
SpecialCells(xlCellTypeBlanks)
は、空白セルだけを選んでいます。
.Cells(1)
で、最初のセルとなります。
順番は左上のセルから右へ、最後まで行ったら一行下がって左から右へと進みます。今回の場合、縦に一列なので、上記のようにしました。

【22507】Re:範囲内でのセル指定
お礼  ほい  - 05/2/23(水) 1:24 -

引用なし
パスワード
   ▼IROC さん G-Luckさん:
  ありがとうございました

【22833】Re:範囲内でのセル指定
質問  ほい  - 05/3/4(金) 16:41 -

引用なし
パスワード
   Sub ff()
Dim i As Variant
Dim data As Variant
i = 1

data = Worksheets("2").Range("c1").Offset(i, 0)
With Worksheets("納品書").Range("c5").Offset(i * 15 - 15, 0)
If (.Value) = data Then
Range(Cells(i * 15 - 5, 3), Cells(i * 15, 3)). _
SpecialCells(xlCellTypeBlanks).Cells(1).Select
Selection = 3

End If
End With
End Sub

これではC10−C14の空白セルがなくなるまで「3」を入力し続けますが

「納品書」のC5=「2」のC1であれば(同じでなければ「納品書」のC20・C35・・・をチェック)選択セルの5-10下のセルのなかで最初の空白セルの値を3と入力処理を一度済ませば、(5-10下のセルの中に)空白セルの有無に関わらず1回目の処理を終わらせる。

そして2回目の処理は、(「納品書」のC20=「2」のC2であればC列の10-14のなかで最初の空白セルの値を3と入力処理でなく)「納品書」のC5=「2」のC2であれば(同じでなければ「納品書」のC20・C35・・・をチェック)選択セルの5-10下のセルの中で最初の空白セルの値を3と入力処理を一度済ませば、(5-10下のセルの中の)空白セルの有無に関わらず2回目の処理を終わらせる。

そして3回目の処理は、(「納品書」のC35=「2」のC3であればC列の10-14のなかで最初の空白セルの値を3と入力処理でなく)「納品書」のC5=「2」のC3であれば(同じでなければ「納品書」のC20・C35・・・をチェック)選択セルの5-10下のセルの中で最初の空白セルの値を3と入力処理を一度済ませば、(5-10下のセルの中の)空白セルの有無に関わらず3回目の処理を終わらせる・・・。

にしたいのですが、どうすれば良いでしょうか?

【22836】Re:範囲内でのセル指定
発言  G-Luck  - 05/3/4(金) 17:09 -

引用なし
パスワード
   ▼ほい さん:
Helpで、For Next または Do Loop を調べてみてください。
そこまで出来ていれば、上記のヘルプで十分できると思います。
がんばってください。

わからない点があれば、また、質問してください

【23041】Re:範囲内でのセル指定
質問  ほい  - 05/3/10(木) 16:03 -

引用なし
パスワード
   Help機能がついていないので、本を見てFor Nextを使ってみましたが

Sub ff()
Dim i As Variant
Dim h As Variant
Dim nouhin As Variant
Dim data As Variant
i = 1
For h = 1 To 10
'
data = Worksheets("2").Range("c1").Offset(h, 0)
With Worksheets("納品書").Range("c5").Offset(h * 15 - 15, 0)
If (.Value) = data Then
Range(Cells(i * 15 - 5, 3), Cells(i * 15, 3)). _
SpecialCells(xlCellTypeBlanks).Cells(1).Select
Selection = Worksheets("2").Range("d1").Offset(i, 0)

End If
End With
Next h
End Sub

結局、自力回答は無理のようですので教えてください。

「納品書」C5セルが「2」C2セルと一致すると「納品書」C10-14の一番上の空白セルとその下のセルに「2」D2セルの値が入力され終了してしまいます。まず、「納品書」C5セルが「2」C2セルと一致すると「納品書」C10-14の一番上の空白セルだけに「2」C2セルの値を入力したい。

その処理が終わったら、「納品書」C5・20・35・・・セルが「2」C3セルと一致すると「納品書」シートで該当するセルの下5−9の一番上の空白セルだけに「2」D3セルの値を入力したいのですが。

【23043】Re:範囲内でのセル指定
発言  G-Luck  - 05/3/10(木) 16:56 -

引用なし
パスワード
   ▼ほい さん:

>Sub ff()

'Dim i As Variant

>Dim h As Variant

'Dim nouhin As Variant

>Dim data As Variant

'i = 1

>For h = 1 To 10
>'
>data = Worksheets("2").Range("c1").Offset(h, 0)
>With Worksheets("納品書").Range("c5").Offset(h * 15 - 15, 0)
>If (.Value) = data Then

'Range(Cells(i * 15 - 5, 3), Cells(i * 15, 3)). _
Range(Cells(h * 15 - 5, 3), Cells(h * 15, 3)). _

>SpecialCells(xlCellTypeBlanks).Cells(1).Select

'Selection = Worksheets("2").Range("d1").Offset(i, 0)
Selection = Worksheets("2").Range("c1").Offset(h, 0)

>End If
>End With
>Next h
>End Sub

やりたい動作がいまいちつかめませんが、以前のおっしゃっていた内容ですと
上記の様な感じでしょうか?

【24423】Re:範囲内でのセル指定
お礼  ほい  - 05/4/21(木) 22:21 -

引用なし
パスワード
   とても遅くなりすみません。
ありがとうございました。

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