
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
#6です
大分勘違いをしてしまったかもですので訂正します
>数式がエラーを返していたり(これはご質問の場合ないかと)
比較なので比較できない
対象セルの数式がエラーになっている可能性が高いかな
他については Ifのエラーとは関係ないかも知れませんが
変数の扱い方として理解されてください
No.6
- 回答日時:
こんにちは
>初歩的なVBAのIf文でエラーか発生して使えないのか
初歩的な事と思った時には、初歩的な事を確認していきましょう
If AX = 0 Then を成立させるためには AXは数値を入れられる変数型でなくてはなりません
If AX = 0 Then ここで13エラーが発生して代入時
AX = Calculate.Cells(yy + 3 , xx + 1) でエラーが出ないと言う事は
変数AX は String型 か Variant型 になっています
この事から、変数宣言をしていないのではないかと思いますが
変数宣言を行っている場合は型宣言を加えてください
(Variant型は代入時の変数型になります)
Dim AX As Integer または Longなど
変数宣言をすると上の行の
AX = Calculate.Cells(yy + 3 , xx + 1) で同様のエラー13が出ると思います
これは、Calculate.Cells(yy + 3 , xx + 1) に入っている値が数値ではない事が原因です
このセルに文字が入っていたり、関数(数式)などで "" や文字列表示になっていたり、数式がエラーを返していたり(これはご質問の場合ないかと)、空のセルになっているなどが考えられます
対処方法は#2様が示されています①か
ご質問の見えるコード部分では変数を使用するメリットが見えないので②で対応します
①IsNumelicでCalculate.Cells(yy + 3 , xx + 1)を事前に判定する
②変数を使わずそのままCalculate.Cells(yy + 3 , xx + 1) が0の時処理をするようにする
具体的には ②の例(理解を深める為にはお勧めしませんが)
AX = Calculate.Cells(yy + 3 , xx + 1)を消す
If AX = 0 Then を
Calculate.Cells(yy + 3 , xx + 1) = 0 And Calculate.Cells(yy + 3 , xx + 1) <> "" Then に書き換える
Check.Cells(yy + 9, xx + 2) = AX を
Check.Cells(yy + 9, xx + 2).Value = Calculate.Cells(yy + 3 , xx + 1).Value に書き換える
①については
If IsNumeric(Calculate.Cells(yy + 3, xx + 1)) Then
AX = Calculate.Cells(yy + 3, xx + 1)
If AX = 0 Then
Check.Cells(yy + 9, xx + 2) = AX
・
関係ない所ですがCalculateやCheckは変数名としては避けた方が良いと思いますCalculateはメソッドがありますし、シートの痕跡を残した方が良いのではないかと思います
回答を書くのにながらで時間がかかって重複してしまいましたが、書いたので回答します
No.5
- 回答日時:
こんにちは
コードの断片しかないので、はっきりしたことはわかりませんけれど・・
Calculate ってApplication や Worksheet のメソッドとして存在するので、ご提示のIF文の前にエラーが出るのでは? ・・って思ったら、どうやら変数名なのね。(←紛らわしい)
(変数宣言がないと、エラーになる可能性がありそう)
他の方の回答にもありますが、変数宣言をどうしているのかにもよりますが・・
どこにも情報がないので、そのあたりは正しく(?)処理できているものと仮定します。
ごく単純に、セル値に関数等が入っていて結果がエラー値になっている場合を想定してみました。
変数 AX が、数値型や文字列で宣言されていると、IF文の1行前の代入文でエラーになります。
変数 AX が Variant の場合は、代入文ではエラーは出ませんが、AX = 0 の評価時にエラーが発生します。
多分、ご質問の場合は、こちらのケースに該当するのではないでしょうか?
・・ということで、
処理しているセル範囲に、エラー値が含まれているだけってオチではありませんか?
No.4
- 回答日時:
エラーで黄色いマーカーが出ている時に、そのIF分のAXにカーソルを当ててみたらどう表示されるか?
実際その周辺の画像より、AXがどんな方で宣言されているかなど含めコードを文字でコピペした方がわかるかもですね。
あとはエラーの時のyyとxxにもカーソルを当て、該当するセルの値がどうなっているのかとか?
No.3
- 回答日時:
こんばんは。
型が違うという事は、AXの中身は数字ではないという事になりますが、
AXに、どの様なプログラムで、値を入れているかによるかと。
AX = 〇〇〇〇〇〇 ← ここが、どう書かれているか?
No.2
- 回答日時:
補足ありがとうございます。
直るかどうかちょっとわかりませんが、上の行のAXの代入の後ろに、「.value」をつけてみてください。
だめな場合は、IsNumelicを判定してみてください。
https://uxmilk.jp/48323
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています
Visual Basic(VBA)
-
E3 82 8A E3 83 89 E3 83 b3 E3 82 これはなんですか?
その他(プログラミング・Web制作)
-
VBA初心者です。電話番号の数字の前に0を表示させたいです。
Visual Basic(VBA)
-
-
4
九九の答えの計算
Visual Basic(VBA)
-
5
ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい
Visual Basic(VBA)
-
6
このマクロの説明文を教えてほしいです。
Visual Basic(VBA)
-
7
【VBAエラー】Nextに対するForがありません 対策について
Visual Basic(VBA)
-
8
エクセル 2つの列にある値の完全一致を抜き出すVBA
Visual Basic(VBA)
-
9
参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++
C言語・C++・C#
-
10
新卒採用のゲームプログラマーにはどれくらいの技術力を求めているのでしょうか?
C言語・C++・C#
-
11
エクセルVBAで教えて頂きたいのですが?
Visual Basic(VBA)
-
12
For~Nextステートメントの終了条件について
Visual Basic(VBA)
-
13
VBでExcelの表形式の様なデザインを作りDBと連携させる。
Visual Basic(VBA)
-
14
パソコンに強い方至急お願いします 大学の健康管理システムで毎日の健康状態を入力しなければならないので
その他(プログラミング・Web制作)
-
15
初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。
Visual Basic(VBA)
-
16
C言語について。
C言語・C++・C#
-
17
forループは何故、forなのですか?
その他(プログラミング・Web制作)
-
18
excelVBAについて。
Visual Basic(VBA)
-
19
vbaの計算 if elseと範囲について
Visual Basic(VBA)
-
20
Excel VBAのデバッグ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBAがブレークモードになっ...
-
5
Outlook.ApplicationをCreateOb...
-
6
職場から目的地までの距離集計
-
7
Invalid procedure call or arg...
-
8
なぜエラーになるのでしょうか...
-
9
実行時エラー48発生時のDLL特定...
-
10
【エクセル】ハイパーリンク先...
-
11
OLEDB.NETで接続できない
-
12
実行時エラー -'-2147417848
-
13
VBSで変数の宣言はできないので...
-
14
実行時エラー3001「引数が間違...
-
15
VBA:「中断モードでは入力でき...
-
16
デバッグ時はOK、デバッグ無し...
-
17
実行時エラー9 インデックスが...
-
18
worksheets & rows メソッドは...
-
19
EXCEL/VBAで、自分のPCだけエラ...
-
20
エラーの処理
おすすめ情報
公式facebook
公式twitter
これがその内容です。