Excel VBA質問箱 IV

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

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


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

【18315】定義のエラー [名前なし] 04/9/21(火) 12:17 質問[未読]
【18317】Re:定義のエラー Asaki 04/9/21(火) 12:22 回答[未読]
【18318】Re:定義のエラー [名前なし] 04/9/21(火) 12:29 回答[未読]
【18322】Re:定義のエラー shousuke 04/9/21(火) 14:39 発言[未読]
【18414】Re:定義のエラー 名無し 04/9/22(水) 22:00 回答[未読]

【18315】定義のエラー
質問  [名前なし]  - 04/9/21(火) 12:17 -

引用なし
パスワード
   '最終行の取得
Set LstCell = Worksheets("台帳").Range("A6").End(xlDown)
If LstCell.Row = 65536 Then
  LstCell = Worksheets("台帳").Range("A6")
End If
If LstCell = Worksheets("台帳").Range("A6") Then
  lblNo.Caption = 1
Else
  lblNo.Caption = LstCell.Value + 1
End If

'書き込み
With LstCell
  .Offset(1, 0) = Val(lblNo)
  .Offset(1, 1) = cName.Value
End With


書き込み以下の所で
"アプリケーション定義またはオブジェクト定義のエラーです。"
と止まってしまいます。
どうしたらよいでしょうか??

【18317】Re:定義のエラー
回答  Asaki  - 04/9/21(火) 12:22 -

引用なし
パスワード
   こんにちは。
>  .Offset(1, 1) = cName.Value
cName って、なんでしょうか?
定数ですか?
定数であれば、.Value は不要です。

【18318】Re:定義のエラー
回答  [名前なし]  - 04/9/21(火) 12:29 -

引用なし
パスワード
   ▼Asaki さん:
>こんにちは。
>>  .Offset(1, 1) = cName.Value
>cName って、なんでしょうか?
>定数ですか?
>定数であれば、.Value は不要です。


'書き込み
With LstCell
  .Offset(1, 0) = Val(lblNo)
  .Offset(1, 1) = cName.Value



End With

本当は以下にも続いているんですが・・・
cNameはコンボボックスの名前です(^^ゞ
最終行の取得の段階で、初期に何も書いてない場合にエラーが出るのですよ。
初期に書いてあれば次からきちんと記入されていくのですが・・・

【18322】Re:定義のエラー
発言  shousuke WEB  - 04/9/21(火) 14:39 -

引用なし
パスワード
   変数の定義など、どうなっていますか?
もう少し載せていただけると、わかるかもしれません。

【18414】Re:定義のエラー
回答  名無し  - 04/9/22(水) 22:00 -

引用なし
パスワード
   こんばんは。

>'最終行の取得
>Set LstCell = Worksheets("台帳").Range("A6").End(xlDown)
>If LstCell.Row = 65536 Then
>  LstCell = Worksheets("台帳").Range("A6")
  ↑これがA65536にA6の値を代入してるだけなので、
  
   Set LstCell = Worksheets("台帳").Range("A6")

   にしないとLstCellはA65536のまま

>End If
>If LstCell = Worksheets("台帳").Range("A6") Then
  なので、かならずここを通る
>  lblNo.Caption = 1
>Else
>  lblNo.Caption = LstCell.Value + 1
>End If
>
>'書き込み
↓A65536の下の行はないのでエラー
>With LstCell
>  .Offset(1, 0) = Val(lblNo)
>  .Offset(1, 1) = cName.Value
>End With

A7以下のセルに1,2,3・・・と入れていくんだと思いますが、
参考までにこうするとすっきりするかも。
ただし、A6にタイトルか何かが入力されている必要があります。

With Worksheets("台帳").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
 lblNo.Caption = .Row - 6
 .Value = .Row - 6
 .Offset(0, 1).Value = cName.Value
End With

A6に何も入力されてないなら、A6に適当に値を入れてから
上のコードを実行し、終わったらA6の値をクリアすればいいかと。
もしLstCellを他にも使用してるなら、最初の1行を

Set LstCell = Worksheets("台帳").Cells(Rows.Count, 1).End(xlUp)
With LstCell.Offset(1, 0)

にしてみてください。

やりたいことと違っていたらすみません。

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