Excel VBA質問箱 IV

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

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


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

【56279】新規入力行を選択して、データを代入していく方法 roxy 08/6/12(木) 14:59 質問[未読]
【56280】Re:新規入力行を選択して、データを代入し... マクロマン 08/6/12(木) 15:04 発言[未読]
【56282】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 15:10 発言[未読]
【56283】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 15:16 質問[未読]
【56285】Re:新規入力行を選択して、データを代入し... マクロマン 08/6/12(木) 15:19 発言[未読]
【56286】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 15:21 発言[未読]
【56287】Re:新規入力行を選択して、データを代入し... マクロマン 08/6/12(木) 15:26 発言[未読]
【56288】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 15:31 お礼[未読]
【56289】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 15:37 質問[未読]
【56290】Re:新規入力行を選択して、データを代入し... マクロマン 08/6/12(木) 15:43 発言[未読]
【56291】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 16:10 お礼[未読]
【56293】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 16:32 質問[未読]
【56294】Re:新規入力行を選択して、データを代入し... マクロマン 08/6/12(木) 16:37 発言[未読]
【56296】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 17:05 発言[未読]
【56299】Re:新規入力行を選択して、データを代入し... マクロマン 08/6/12(木) 17:12 発言[未読]
【56301】Re:新規入力行を選択して、データを代入し... roxy 08/6/12(木) 17:21 発言[未読]
【56306】Re:新規入力行を選択して、データを代入し... じゅんじゅん 08/6/12(木) 18:40 発言[未読]
【56315】Re:新規入力行を選択して、データを代入し... roxy 08/6/13(金) 9:31 質問[未読]
【56318】Re:新規入力行を選択して、データを代入し... roxy 08/6/13(金) 9:41 発言[未読]
【56324】Re:新規入力行を選択して、データを代入し... じゅんじゅん 08/6/13(金) 11:32 発言[未読]
【56326】Re:新規入力行を選択して、データを代入し... roxy 08/6/13(金) 11:53 回答[未読]

【56279】新規入力行を選択して、データを代入して...
質問  roxy  - 08/6/12(木) 14:59 -

引用なし
パスワード
   1. データが入力されている最終行をセルを選択し、そこのセルに値を代入、
2. またその隣に値を代入
3. またその隣に値を代入

1.から3.までのステップです。しかしうまく行きません。

1.では、

 Kaishi = Worksheets("出力").Range("A4").End(xlDown).Offset(1).Select

と記述したのですが、Kaishiという名の変数に1.の最終行セルは代入されない
のでしょうか??2.、3.と進むためには、KaishiにOffsetをつければ出来るのかな
と思ったりするのですが・・・。

どなたかご教授くださるとうれしいです。

【56280】Re:新規入力行を選択して、データを代入...
発言  マクロマン  - 08/6/12(木) 15:04 -

引用なし
パスワード
   >Kaishi

変数の型は?

Range型でしたら
Set Kaishi = Worksheets("出力").Range("A4").End(xlDown).Offset(1)
としなければなりません。

で、セットしたKaishiに値を代入してやります。

【56282】Re:新規入力行を選択して、データを代入...
発言  roxy  - 08/6/12(木) 15:10 -

引用なし
パスワード
   ▼マクロマン さん:

早々レスを有難うございます。

なるほどー。
ちょっとトライしてみます。

出来るかな...

【56283】Re:新規入力行を選択して、データを代入...
質問  roxy  - 08/6/12(木) 15:16 -

引用なし
パスワード
   Set Kaishi = Worksheets("出力").Range("A4").End(xlDown).Offset(1)


にしてみましたが、定義エラーと出ます・・・。
何故でしょう?
offset(1)のあとに.Selectはいらないんですよね?

【56285】Re:新規入力行を選択して、データを代入...
発言  マクロマン  - 08/6/12(木) 15:19 -

引用なし
パスワード
   再掲です。

>変数の型は?

【56286】Re:新規入力行を選択して、データを代入...
発言  roxy  - 08/6/12(木) 15:21 -

引用なし
パスワード
   ▼マクロマン さん:
>再掲です。
>
>>変数の型は?

KaishiはRangeです。

【56287】Re:新規入力行を選択して、データを代入...
発言  マクロマン  - 08/6/12(木) 15:26 -

引用なし
パスワード
   A4セルが最終行ということはないですか?
もしそうでしたら、
Worksheets("出力").Range("A4").End(xlDown)
でA65536セルが取得されます。
そこから下はないので、
Offset(1)
でエラーになります。

こういうときは、
Worksheets("出力").Range("A65536").End(xlUp).Offset(1)
で最終行の次の行が取得されます。
途中にブランクセルがある場合によく使う方法です。

【56288】Re:新規入力行を選択して、データを代入...
お礼  roxy  - 08/6/12(木) 15:31 -

引用なし
パスワード
   ▼マクロマン さん:
>A4セルが最終行ということはないですか?
そうでした!!!!!!!!!!!

きっと単純なことでうまくいかないんだと思っていましたが、
ご指摘くださってありがとうございます。
単純に最終行の選択方法がいろいろありすぎて、ごちゃごちゃに
なってたようです。

無事に表示されました!
マクロマンさん、どうもありがとうございました。

【56289】Re:新規入力行を選択して、データを代入...
質問  roxy  - 08/6/12(木) 15:37 -

引用なし
パスワード
   続いて質問です。

その、Kaishi のセルの隣に値を代入したいのですが
どのように記述したらよいでしょうか・・・。

教えていただけたらと思います。

【56290】Re:新規入力行を選択して、データを代入...
発言  マクロマン  - 08/6/12(木) 15:43 -

引用なし
パスワード
   Kaishi.Offset(,1)
で一つ右隣のセルを取得します。

【56291】Re:新規入力行を選択して、データを代入...
お礼  roxy  - 08/6/12(木) 16:10 -

引用なし
パスワード
   どうもありがとうございました。

【56293】Re:新規入力行を選択して、データを代入...
質問  roxy  - 08/6/12(木) 16:32 -

引用なし
パスワード
   新規追加が、どんどん同じセルに上書きされてしまいます。
Kaishiのセルの下に追加して値を入れたいのですが・・・。

どなたかご教授ください、お願いします。

【56294】Re:新規入力行を選択して、データを代入...
発言  マクロマン  - 08/6/12(木) 16:37 -

引用なし
パスワード
   Offset(1)
を付け忘れているのでは?

【56296】Re:新規入力行を選択して、データを代入...
発言  roxy  - 08/6/12(木) 17:05 -

引用なし
パスワード
   kaishi= Offset.kaishi(1)
ですよね?

記述の場所が、
DoEvents
Loop

の前ですよね?
 

んんんー違うかしら・・・。

【56299】Re:新規入力行を選択して、データを代入...
発言  マクロマン  - 08/6/12(木) 17:12 -

引用なし
パスワード
   VBAヘルプで
Offsetプロパティ

RangeオブジェクトのOffsetプロパティ
を参照してください。
使い方が分かると思います。

>記述の場所が、
>DoEvents
>Loop

>の前ですよね?

いままでのコードで出てきてませんでしたが??
コード全体を見てみないとなんとも。

【56301】Re:新規入力行を選択して、データを代入...
発言  roxy  - 08/6/12(木) 17:21 -

引用なし
パスワード
   んー分かりません・・・・・・。

>コード全体を見てみないとなんとも。
以下、コードです。分かりにくくて申し訳ないです。

'納品管理台帳の番号がなくなるまで
  Y = I_START_Y

'出力開始設定
 Dim Kaishi As Range
 Set Kaishi = Worksheets("出力").Range("A65536").End(xlUp).Offset(1)
  
  Do Until IRAIws.Cells(Y, I_KEY_x).Value = ""
    If Trim(IRAIws.Cells(Y, I_TANTODAY_x).Value) = "" And _
      Trim(IRAIws.Cells(Y, I_UNOHINJISEKI_x).Value) <> "" Then
      If IRAIws.Cells(Y, I_UNOHINJISEKI_x).Value < Date - 6 Then
      

  '出力に出す
  
       Kaishi = Trim(IRAIws.Cells(Y, I_HYOKIKBN_x).Value)    
       Kaishi.Offset(, 1) = Trim(IRAIws.Cells(Y, I_NO_x).Value) & "-" & Trim(IRAIws.Cells(Y, I_EDA_x).Value)                                       
        Kaishi.Offset(, 2) = Trim(IRAIws.Cells(Y, I_ANKEN_x).Value)     
        Kaishi.Offset(, 3) = Trim(IRAIws.Cells(Y, I_TYUSYUTUTANTO_x).Value)     
       
      Kaishi.Offset(, 4) = Trim(IRAIws.Cells(Y, I_KANRYOU_x).Value)


  End If
 End If
      
    Y = Y + 1


    DoEvents
  Loop

【56306】Re:新規入力行を選択して、データを代入...
発言  じゅんじゅん  - 08/6/12(木) 18:40 -

引用なし
パスワード
   >Set Kaishi = Worksheets("出力").Range("A65536").End(xlUp).Offset(1)
この後にDO〜LOOPで変数Kaishiは同じ位置(セル番地)を繰り返して
いるのでは?

>Y = Y + 1
みたいに

Set Kaishi = Kaishi.Offset(1)
が必要に思うのですが。。

【56315】Re:新規入力行を選択して、データを代入...
質問  roxy  - 08/6/13(金) 9:31 -

引用なし
パスワード
   >Set Kaishi = Kaishi.Offset(1)

上記が必要なのはわかります。
どこに記述したらよいのか・・・。

【56318】Re:新規入力行を選択して、データを代入...
発言  roxy  - 08/6/13(金) 9:41 -

引用なし
パスワード
   Set Kaishi = Kaishi.Offset(1)

できました!!無事思ったように出力されした。

それで単純な質問で申し訳ないのですが、
どうして
Kaishi = Kaishi.Offset(1) ではなく、
あたまにSetがつくのですか?
Setはどういうときにつくのですか?
ずっと、上記で記述していてエラーになっていました。

【56324】Re:新規入力行を選択して、データを代入...
発言  じゅんじゅん  - 08/6/13(金) 11:32 -

引用なし
パスワード
   ▼roxy さん:
>Set Kaishi = Kaishi.Offset(1)
>
>できました!!無事思ったように出力されした。
>
>それで単純な質問で申し訳ないのですが、
>どうして
>Kaishi = Kaishi.Offset(1) ではなく、
>あたまにSetがつくのですか?
>Setはどういうときにつくのですか?
>ずっと、上記で記述していてエラーになっていました。

まず、ヘルプ・入門編のサイトや書籍をご覧になられてみては?
(というか、”何故”と聞かれて”こうだから”と答えられる程、
 私も理解しきれてないんです。)

【56326】Re:新規入力行を選択して、データを代入...
回答  roxy  - 08/6/13(金) 11:53 -

引用なし
パスワード
   ▼じゅんじゅん さん:
調べました。
オブジェクト変数という事です。
いろいろ勉強になりました。

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