エクセル(VBE)について
SubまたはFunctionの定義がされてません。とエラー表示が出てしまうのですが

A 回答 (1件)

関数のスペル間違いがあるのではないですか?


その行を確認してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QExcel VB→SubまたはFunctionが定義されていません

お世話になります
コンパイラーエラー
SubまたはFunctionが定義されていません
がでます
ツール→マクロ→VisualBasicEditorでVBに入った画面では
左側に
イミディエイト、ウィンドウ
プロジェクト
  ThisWorkbook←が選択されている
が出ています
右のThisWorkbookのコードウィンドウに
Public Function tt()
  MsgBox ("メッセージ出すよ")
End Function
と3行入れました
実行
左のイミディエイトウィンドウに
tt
と入力すると、上記の
SubまたはFunctionが定義されていません
とでます
イミディトに、
tt
といれたものがどうして認識されまいんでしょう
Window XPの上でExcel2003、が走っています
不足した情報があれば追記します
よろしくお願いします

Aベストアンサー

ThisWorkbook.tt

などとやると認識しますよ。

QVBA マクロ エラー1004 アプリケーション定義またはオブジェクト定義のエラー

VBAで正当表と入力表の正誤判定を一気に行いたいのですが
If Cells(a, b).Value = Cells(c, d).Value Thenの部分で
エラー1004、アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
エラーの対処の仕方を調べたのですがわかりませんでした。
教えていただけるとありがたいです。

以下作ったプログラムです。

Sub 正誤判定()

Dim a
Dim b
Dim c
Dim d
Dim e
Dim i
Dim j
Dim x
Dim y
Dim hokan
Dim ytate
Dim xyoko

a = 3
b = 21
c = 3
d = 43
e = 2
i = 1
j = 1


Do While j < 261

Do While i < 11

If Cells(a, b).Value = Cells(c, d).Value Then
a = a + 1
c = c + 1


If Cells(a, b) = Cells(c, d) Then
hokan = Cells(e, b).Value
ytate = Range("B2:S15").Find(hokan, lookat:=xwhole).Row + 15
xyoko = Range("B2:S15").Find(hokan, lookat:=xwhole).Column
Cells(ytate, xyoko).Value = Cells(ytate, xyoko).Value + 1

Else

End If

Else

End If
a = a - 1
c = c - 1
b = b + 1
d = d + 2
i = i + 1

Loop
a = a + 3
c = c + 3
e = e + 3
j = j + 1

Loop

End Sub

VBAで正当表と入力表の正誤判定を一気に行いたいのですが
If Cells(a, b).Value = Cells(c, d).Value Thenの部分で
エラー1004、アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
エラーの対処の仕方を調べたのですがわかりませんでした。
教えていただけるとありがたいです。

以下作ったプログラムです。

Sub 正誤判定()

Dim a
Dim b
Dim c
Dim d
Dim e
Dim i
Dim j
Dim x
Dim y
Dim hokan
Dim ytate
Dim xyoko

a = 3
b = 21
c = 3
d = 43
e = 2
i = 1
j...続きを読む

Aベストアンサー

質問者ののマナーとして、こんなの回答者に読ませて、処理内容を割り出させるのでなく、どのセル範囲とどのセル範囲をくらべて、どういうロジック(3行おきとか)でどう比較してとかを、文章で判りやすく解説したものを載せるべきだ。解読時間がかかってしょうがない。
それに行数・列数を少なくしたモデル例を作って、そのコードで質問すべきだ。回答者でテスト実例を作ろうにも列・行が多いと作っていられない。
回答者は質問者の職場などでの義務付けられ教育役ではないから、それぐらい質問者ですべきだ。
ーー
コード作成スキルとして
少し読み解くと変数を乱発しすぎだと思う。そのため解読が難しい。
列と行を表すi,j2つだけで2重ループで繰り回しできそうに思う。
それに1行下を見るときIf Cells(a + 1, b) =で良いのに、一旦足して、処理後1引いてもとへ戻すなど複雑になるばかりだ。
>b = b + 1
d = d + 2
はなぜ不統一なのか理解できなかった。
ーー
#1のご回答でOKならもう良いが、でなければ
(1)Range("B2:S15")
(2)U3-AP(?)XX ?? 22列?
(3)AQ3-BL(?) XX ?? 22列?
3行ごとにまとめて考えて、第1行が等しく、かつ第2行が等しければ、第1行の語句で、Range("B2:S15").を探し、直下行と等しいかチェック。
など文章で読者に教えてよ。
ーー
私が短くしようとしてやった結果。途中で放棄したので動かないだろうが、コードについて、私の言い分に耳を傾ける気があるなら参考にしてください。
コードをすっきりさせれば、自ずとエラー原因は判る、エラーは無くなると思う。
Sub test01()
'--初期化
'--U3
a = 3 'cells(a,b)
b = 21
'---AQ3
c = 3 'cells(c,d)
d = 43
'--
For j = 3 To 260 Step 3
For i = 1 To 10 Step 2

If Cells(a, b).Value = Cells(a, b + 22).Value Then


'1行下行を見る
If Cells(a + 1, b) = Cells(a + 1, b + 22) Then
'下行も等しければ、
hokan = Cells(a, b).Value
ytate = Range("B2:S15").Find(hokan, lookat:=xwhole).Row + 15
xyoko = Range("B2:S15").Find(hokan, lookat:=xwhole).Column
Cells(ytate, xyoko).Value = Cells(ytate, xyoko).Value + 1
Else
End If

Else
End If


b = b + 1 ' ???
d = d + 2 ' ???


Next i
'--
Next j
End Sub

質問者ののマナーとして、こんなの回答者に読ませて、処理内容を割り出させるのでなく、どのセル範囲とどのセル範囲をくらべて、どういうロジック(3行おきとか)でどう比較してとかを、文章で判りやすく解説したものを載せるべきだ。解読時間がかかってしょうがない。
それに行数・列数を少なくしたモデル例を作って、そのコードで質問すべきだ。回答者でテスト実例を作ろうにも列・行が多いと作っていられない。
回答者は質問者の職場などでの義務付けられ教育役ではないから、それぐらい質問者ですべきだ。
...続きを読む

Qエクセル 表示形式のユーザー定義作成後、表示されなくてもよい記号が表示されてしまう。

エクセルにおいて、シート1で表を作成、セルを表示形式のユーザー定義で[=1]"△";[=2]"○";"◎"と作成し、1と入力すれば△、2なら○、3なら◎となるようにしました。そのシート1の表の結果をシート2の表に表したく、シート2のセルでも表示形式のユーザー定義で同じように[=1]"△";[=2]"○";"◎"と作成、△、○、◎が表示されるようにしました。ところが、シート1で入力していなくてもシート2では◎が表示されてしまいます。1,2,3の入力結果は正しく表示されます。入力していないセルの結果(空欄)は表示しないよう(つまり空欄のまま)にしたいのです。どうすればよいのでしょうか?
よろしくお願いします。

Aベストアンサー

Sheet2のA1セルで

=Sheet1!A1
としているのなら

=IF(Sheet1!A1="","",Sheet1!A1)

として、以下コピー&ペーストしてみてください。
こちらでは希望どうりになりました。

Qエクセルのセルに「04/5/14」と出すようにするには、どのように表示形式の「ユーザ定義」を作ればいいのでしょう?

タイトル通りなのですが、エクセル(バージョンは97)のセルに日付を入力する時に、例えば「04/5/14」「04/5/15」・・・と出すようにするにはどのように表示形式の「ユーザ定義」を作ればいいのでしょうか?
私も色々試したのですがどうしても「04/5/14」と入力すると「1992/5/14」等のようになってしまいます…。ちゃんと「2004/5/14」と入力すれば「04/5/14」出ましたが、そのまま「04/5/14」と入力したままだしたいのです。

ご存知のかたいらっしゃいましたらよろしくお願い致します。

Aベストアンサー

#3です。
>どうしても「04/5/15」と入力してしまうと「92/5/15」というふうになってしまいます…。
この理由はOKWEBの質問でも、見たことが無く、自分のテスト(エクセル2000)でも再現できず、自分の知識の予想外です。
平成4年は1992年で何か関連がありそう?
h04/5/15やh04/5/15と入力すると1992/5/15になるようですが(ただし書式を1997/3/4に設定している時、または数式バー部の表示)

QエクセルのVBAで自動的にVBE画面を出したい。

エクセルのVBAで、或るブックを開くと自動的にVBE画面を出したいのですが、何か方法は有りますか?

マクロの記録で試してみたり、ネット検索したりしてみましたが、分かりません。よろしくお願いします。

Aベストアンサー

ご利用のエクセルのバージョンに応じた方法によって,マクロのセキュリティで「Visual Basicプロジェクトへのアクセスを信頼する」にチェックを入れておかなければいけません。

その上でブックのThisWorkbookに

private sub Workbook_Open()
application.vbe.windows(1).setfocus
end sub

と書いておきます。


ただし
>自動的にVBE画面を出したい

VBE画面が開けばいいのか何か特定の画面(モジュールなど)を開きたいのかに応じて,また違う書きぶりがあると思います。適宜応用してください。



#一般に
VBEやマクロそのものに触るマクロは,得てしてマクロウィルスの手法にも転用可能なので,あまりこういった一般の掲示板で手放しに触れるのは避けたい話題と思います。
追加ご質問等は無しでお願いします。


このカテゴリの人気Q&Aランキング

おすすめ情報