Private Sub AddButton_Click()
'顧客情報を追加する
Dim insertRow As Long '挿入する行位置
'シートの保護を解除する
Sheets("顧客").Unprotect
'最下行に1行挿入する
insertRow = Range("顧客一覧").Rows.Count
Range("顧客一覧").Range(insertRow).Insert
shift:=xlDown
'データをせるに入力する
renge("顧客一覧").Cells(insertRow, 1) =
CompanyNameBox.Text
renge("顧客一覧").Cells(insertRow, 2) =
ZipBox.Text
renge("顧客一覧").Cells(insertRow, 3) =
AddressBox.Text
renge("顧客一覧").Cells(insertRow, 4) =
sectionbox.Text
renge("顧客一覧").Cells(insertRow, 5) =
personmamebox.Text
'シートを保護する
Sheets("顧客").Protect
'顧客の追加ダイアログを閉じる
Unload AddCustomerDlg
End Sub
ユーザーフォームに入力したデータをセルに転記するマクロですが上記のようにマクロを入れてマクロを実行するとコンバイルエラー 配列がありませんがでてしまい、デバッグするとPrivate Sub AddButton_Click()が黄色くドラックされ、insertRowドラックされます。 Dim insertRow As Long
を入力してエンターを押したら他の文字は大文字に変換られるのですが、insertRowのROWのRだけが小文字のままで大文字になりません(今度はRを大文字でいれると入り、以降のROWは自動で大文字じなります)
それと関係があるのでしょうか?
> renge("顧客一覧").Cells(insertRow, 1) = CompanyNameBox.Text
の部分、renge じゃなくて、Range じゃないですかね。
あと、Option Explicit 宣言はつけていますか?
> それと関係があるのでしょうか?
あまり気にする必要はないかと。VB/VBAは大文字小文字の違いを区別しない
言語であり、変数宣言とかは最後に宣言した物に統一されちゃう仕様です。
ありがとうございます。
たしかにRangeでした。訂正したらコンパイルエラーはでなくなりましたが、
今度は、実行時エラー1004 Rangeメソットは失敗しましたGlobalオブジェクトと出てinsertRow = Range("顧客一覧").Rows.Countが黄色く反転してしまいます。
Option Explicit宣言とはよくわかりませんが多分していないと思います
> Option Explicit宣言とはよくわかりませんが
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_030.html
を参考に
> Range("顧客一覧").
の"顧客一覧"には意味はあるのでしょうか?
普通はセルの範囲を指定して "A1:B2" という文字列を入れますけど。
# 別名付けれるならばスマソ
> Rangeメソットは失敗しました
メソッド、ですよね。(method)
> insertRow = Range("顧客一覧").Rows.Countが黄色く反転してしまいます。
現在操作中のシート(またはブック)に、"顧客一覧" という名前が
定義されているかどうかを確認してみてください。
>> Range("顧客一覧").
> の"顧客一覧"には意味はあるのでしょうか?
ありますよ。Microsoft Excel の[挿入]-[名前]-[定義]などで決定される名前ですね。
(数式バー左端のドロップダウンボックスに、直接名前を書く事でも定義できます)
ちなみに、この名前の一覧は、VBA 的には Names コレクションとして管理されています。
みなさんありがとうございました。
やはり名前をつけ忘れていたようです。
エラーもなく転記できました。
しかし難しいですね〜 まだ勉強をはじめたばかりなので
つまずいてばかりですが、がんばります また何かあったらよいアドバイス
をください。
本当にありがとうございました。
ツイート | ![]() |