質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2342閲覧

オブジェクトが必要です。とエラーが出てます。

ffhtfttfh

総合スコア18

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/10/23 05:08

編集2018/10/23 06:59

お世話になっております。

テキストボックスとコンボボックスで入力した値を、エクセルの表に反映させル表を作りたいと思います。
Setをいろいろなところにつけてみたり、変数を変えたりしたんですがわからなく
デバッグもしてみたんですが、1行目の段階でエラーが出てしまっていて、
手を付けられない状態になっております。

よろしくお願い致します。

課題と言いましたが、独学です。
こんな事で質問することが恥ずかしく、
つい学校と言ってしましました。
不快に思われた方、申し訳有りませんでした。

エラーメッセージは、

実行時エラー'424'
オブジェクトが必要です。

追記です。
検証した結果、このコードを除けば実行はしてくれます。
どうやらここが悪いことがわかりました。
ですが、どこを消しても、先ほどと同じエラーが起きてしまします。

Private Sub UserForm_Initialize() With maker .AddItem "A" .AddItem "B" .AddItem "C" .AddItem "D" .AddItem "E" .AddItem "F" .AddItem "G" .AddItem "H" .AddItem "I" .AddItem "J" End With With kategori .AddItem "1" .AddItem "2" .AddItem "3" .AddItem "4" .AddItem "5" .AddItem "6" .AddItem "7" .AddItem "8" .AddItem "9" .AddItem "10" .AddItem "11" End With If ToggleButton1.Value = True Then hinban.SetFocus Else date1.SetFocus End If End Sub コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/10/23 05:14

タイトルには質問内容に寄せた要件のみを記載してください。またコードはマークダウンのcode機能を利用してください。というか、課題代行をうける場所ではありません。もう少し自身で頑張ってください。何をするプログラムなのか要件は何なのか何もなしに丸投げられても回答は得られません
dice142

2018/10/23 05:17

「エラーが出たので直してほしい」は単なる丸投げです。「xxしようとして」「xxというエラーがxxの箇所で起こって」「xxを試してみたらxxだった」という、解決できるような情報や質問者様が解決するためにやってみたことを記載してください。
dice142

2018/10/23 05:43

エラー文も記載してください。
dice142

2018/10/23 05:51

エラー文はそれだけですか?できればエラー文はそのままコピペしてください。その際、個人情報が入っている箇所があれば伏せて構いません。
ffhtfttfh

2018/10/23 05:55

申し訳ありません。エラー分はこれだけになります。
退会済みユーザー

退会済みユーザー

2018/10/23 06:07

デバッグの際、一行目にブレークポイントを設定されましたか?また、FuncやSubなどが書かれていないようですがなくてもよかったんですっけ?一番怪しいのは7行目の lRow = ws1.Range("A" & Rows.Count).End(xlUp).Row の、Set書き忘れ
ffhtfttfh

2018/10/23 06:40

1行目にブレークポイント設定しました。こちらのコードが途中抜きしたものになります。
退会済みユーザー

退会済みユーザー

2018/10/23 06:43

コードを割愛するのは全然よいのですが、できればメソッドの頭とおしりは載せておいたほうがよいかと。(ちなみに、独学は独学で、応援してくれる人は多いと思います!)
ttyp03

2018/10/23 06:48

一行目でエラーというなら、一行目のコードも載せないと
tatsu99

2018/10/23 07:00

オブジェクトが必要です。とエラーがでるのは、どの行ですか?
ffhtfttfh

2018/10/23 07:02

With kategori の行です。
ffhtfttfh

2018/10/23 07:09

With kategori の行からEnd Sub までの間がどこをやってもエラーが出ます。
tatsu99

2018/10/23 07:12

kategoriの定義内容が判りません。kategori はコンボボックスの名前ですか?
ffhtfttfh

2018/10/23 07:19

コンボボックスの名前です。Private Sub kategori_Change() With kategori If .Value = "" Then .AddItem End If .Style = fmStyleDropDownList End With If kategori.Value = "" Then kategori.Value = "" Else hinban.SetFocus End If End Sub
ttyp03

2018/10/23 07:22

Private Sub UserForm_Initialize()の行にブレークポイントを置いて、止まってからステップ実行したらどうなります?
ffhtfttfh

2018/10/23 07:43

.Add Item "2" でエラーが出ます。
退会済みユーザー

退会済みユーザー

2018/10/23 07:47

makerの値を確認してみて下さい。何も値がないっていないということはありませんか?
ttyp03

2018/10/23 07:51

少なくとも私の環境ではエラーにはならないですねぇ。
tatsu99

2018/10/23 08:56

こちらでも確認してみましたが、With kategori の箇所ではエラーにはならないですね。
ttyp03

2018/10/23 09:00

kategoriの処理を全部削除したら動くんでしょうか?
ffhtfttfh

2018/10/23 21:04

kategoriより下の行ですね。それより上までは動きます。
ffhtfttfh

2018/10/23 21:08

with kategori~end if まで消すと動きます。
退会済みユーザー

退会済みユーザー

2018/10/24 01:40

デバッグは慣れるまで苦労されるでしょうが必須なので、少しずつでもできるようになることを祈ってます。デバッグに対する資料が少ないのが原因なのか初心者さんが陥りがちな勘違いですが、デバッグなんかしなくてもいいでしょというのは大きな間違いです。ほぼ100%のプログラマがデバッグを経験してます。
guest

回答2

0

ベストアンサー

コードは読みません。

・自分でデバッグしましょう(やりかたを知らなければ先生か先輩か誰かに聞きましょう)
・コメントを書きましょう
・繰り返しには配列やFor文、SubやFuncを利用しましょう
・添削は学校の先生にお願いしましょう

*追記

一行目でエラーが出るのであれば、一度全部コメントアウトして、どこまで書いた時点でおかしくなるか確認するという方法があります。基本的に、小分けにして実装していく、考えていく、解決していくことが一般的です。初心者のうちに、いきなり全部書いてうまくいくかな~ってのは無理な話です(誰もがやりがちで私もやりましたがw)

投稿2018/10/23 05:18

編集2018/10/23 05:50
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

あなたが、エラーになってしまうと提示された箇所のみを実行するマクロを
作成して、こちらで確認しました。
Formには、コンボボックスのみを作成し、実行できることを確認しています。
少なくとも、下記のコードは正しいことが確認できました。
hinban.SetFocusの箇所はhinbanが何か不明なので、コメントにしています。(withの範囲外なので本件とは無関係のはず)
あなたも、別のブックに、以下のコードのみを埋め込んだフォームを作成し、正しく動作することを確認してください。(別のブックで行ってください)
その結果、
ケース1)正しく動作するなら、このソース以外の箇所に原因があり、それが悪さをして、この箇所が動作いなくなっている。
ケース2)エラーになるなら、作成した、コンボボックスの名前が正しくない。
(このソースのコピペは正確に行われたという前提ですが)

上記の何れかが考えられます。

VBA

1Option Explicit 2 3Private Sub UserForm_Initialize() 4 With kategori 5 .AddItem "1" 6 .AddItem "2" 7 .AddItem "3" 8 .AddItem "4" 9 .AddItem "5" 10 .AddItem "6" 11 .AddItem "7" 12 .AddItem "8" 13 .AddItem "9" 14 .AddItem "10" 15 .AddItem "11" 16 MsgBox ("Check 1") 17 End With 18End Sub 19 20 21Private Sub kategori_Change() 22 With kategori 23 If .Value = "" Then 24 .AddItem 25 End If 26 .Style = fmStyleDropDownList 27 MsgBox ("Check 2") 28 End With 29 If kategori.Value = "" Then 30 kategori.Value = "" 31 Else 32 'hinbanがなにかわからないのでコメントにしておく 33 'hinban.SetFocus 34 End If 35End Sub 36

投稿2018/10/24 01:32

tatsu99

総合スコア5458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問