お世話になります。

早速ですが、
2003で作ったというexcelファイルを貰い、
動かしたところ、標題のようなエラーが出ます。
確認したところ作成環境は、
WindowsXPSP2、excel2003

そして、私の環境はWindows98SE、excel97です。
どのようなことでしょうか。

For Each minus In Sheets("結果").Range("m5:m59")
   If minus < 0 And minus.Interior.ColorIndex <> 3 Then
     With minus.Interior
     .ColorIndex = 3
     .Pattern = xlSolid
     .PatternColorIndex = xlAutomatic
   End With
     End If
    Next
(申し訳ありません、見苦しさはお許し下さい)

If minus < 0 And minus.Interior.ColorIndex <> 3 Then
でエラーになります。
型は「数値」で問題ないように思うのですが。

足らなければ指摘下さい、調べて追加します。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

 


対象となるセル(M5~M59)には式が入っていて、
その結果としてエラー値(#DIV/0!とか#VALUEとか#N/A等々)が返っているセルがありませんか?

エラー値があると質問のエラーが出ます。
確認してください。
以上。

この回答への補足

皆様どうも有り難うございました。
早速イロイロ教わったことを種してみました。
結果は
minus.valueとminus.textは同じ(エラー)でしたが、
val(minus)がうまくエラーを回避できました。
なぜwindows98とexcel97で駄目で
windowsXPとexcel2003ではokなのかは分かりませんが、
今回いい勉強をしました。
お礼が掛けないので、ここに書かせていただけました。
皆様どうもお世話になりました。

補足日時:2009/01/22 19:11
    • good
    • 0
この回答へのお礼

早速有り難うございます。

対象のセルは全て =if(n29="","",m29-m28)のような
式が入っています。
(あるセルに数字があるときだけ引き算をしてこの対象セルに結果を入れる)

ただ、エラーにはなっていませんがスペースは在ります。
エラーはないのですが、スペースでエラーになるのでしょうか。
宜しくお願いします。

お礼日時:2009/01/22 10:59

#2です。



> エラーはないのですが、スペースでエラーになるのでしょうか。
エラーになりますね(なりました)。

「If IsNumeric(minus) = True Then」とか入れた方がよさそうですね。

この回答への補足

作成者に確認しました。
WindowsXP、excel2003では
スペースが在っても問題なく動くらしいです。
(スペースは対象になりませんので色は付きませんが)
兎に角私の環境でやってみます。

補足日時:2009/01/22 12:11
    • good
    • 0
この回答へのお礼

何回も有り難うございます。
スペースでエラーになるというので原因は分かったので明るさが出た感じです。
対応策で教えていただいたことをやってみます。
兎に角今は触れませんので、後ほど報告させてください。
有り難うございました。

お礼日時:2009/01/22 12:10

う~む?手元にWindows98SE、excel97という環境は無いので自信は無いですが。

minus が セルそのものとして扱われているのでしょうか・・・。No1、akina_lineさんの方法でもだめなら、
> If minus < 0 And minus.Interior.ColorIndex <> 3 Then
 If Val(minus.Value) < 0 And minus.Interior.ColorIndex <> 3 Then
とか
 If Val(minus.Text) < 0 And minus.Interior.ColorIndex <> 3 Then
とか書くとどうなるでしょうか?

この回答への補足

皆様どうも有り難うございました。
早速イロイロ教わったことを種してみました。
結果は
minus.valueとminus.textは同じ(エラー)でしたが、
val(minus)がうまくエラーを回避できました。
なぜwindows98とexcel97で駄目で
windowsXPとexcel2003ではokなのかは分かりませんが、
今回いい勉強をしました。
お礼が掛けないので、ここに書かせていただけました。
皆様どうもお世話になりました。

補足日時:2009/01/22 19:10
    • good
    • 0
この回答へのお礼

早速有り難うございます。
いろいろな書き方があるのですね、
兎に角皆さんに教わったことをやってみます。
後ほど報告します。
有り難うございました。

お礼日時:2009/01/22 10:50

エラーにならずに、正常に動いているようですが…


Excelは97ですが、OSが違うのでなんとも…

・WinXP Home SP3
・Excel97 SR-2
・「結果」シートのM5~M59に-100、-90…(略)…-10、0、10…(略)…90、100、-100、-90…って感じに数値を入力。
・VBA側「ThisWorkBook」にコード貼り付け。以下参照。
Option Explicit
Public Function Test()
Dim minus
  For Each minus In Sheets("結果").Range("m5:m59")
    If minus < 0 And minus.Interior.ColorIndex <> 3 Then
      With minus.Interior
        .ColorIndex = 3
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
      End With
    End If
  Next
End Function

◎結果:-100~-10が入力されているセルが赤くなる。

ご参考まで。

この回答への補足

皆様どうも有り難うございました。
早速イロイロ教わったことを種してみました。
結果は
minus.valueとminus.textは同じ(エラー)でしたが、
val(minus)がうまくエラーを回避できました。
なぜwindows98とexcel97で駄目で
windowsXPとexcel2003ではokなのかは分かりませんが、
今回いい勉強をしました。
お礼が掛けないので、ここに書かせていただけました。
皆様どうもお世話になりました。

補足日時:2009/01/22 19:09
    • good
    • 0
この回答へのお礼

早速有り難うございます。
作成者も全く問題なく動くと言っています。
Windows98と、excel97の組み合わせでしょうか。
兎に角皆さんに教えていただいたことをやってみます。
後ほど報告いたします。
有り難うございました。

お礼日時:2009/01/22 10:35

こんにちは。



 手元にExcel97が無いので、自信がありませんが、
 minus < 0
  ↓
 minus.value < 0
 としたら、どうでしょう。

では。

この回答への補足

皆様どうも有り難うございました。
早速イロイロ教わったことを種してみました。
結果は
minus.valueとminus.textは同じ(エラー)でしたが、
val(minus)がうまくエラーを回避できました。
なぜwindows98とexcel97で駄目で
windowsXPとexcel2003ではokなのかは分かりませんが、
今回いい勉強をしました。
お礼が掛けないので、ここに書かせていただけました。
皆様どうもお世話になりました。

補足日時:2009/01/22 19:03
    • good
    • 0
この回答へのお礼

早速有り難うございます。
今確認できないので、
後ほど確認して報告させていただきます。
有り難うございました。

お礼日時:2009/01/22 10:01

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

Q人に何何を質問する を英訳するとき ask 何何 to 人 と4文型にしてもいいのでしょうか?

人に何何を質問する を英訳するとき
ask 何何 to 人
と4文型にしてもいいのでしょうか?

Aベストアンサー

第4文型は
ask you a question のように、2つ並べるものです。

give you something は第4文型
give something to you は第3文型です。

それはそういうルールだというだけのことです。

こういう4から3への書き換えで、to 型と for 型と習うと思いますが、
ask はどちらでもなく、of 型です。
ask a question of you
ただし、question でない場合、ask the way of you とは言いません。

この of は「~から」の意味です。
「~から」答えがくるのを求める、という発想です。

最近は言葉が乱れてきて、
ask a question to you とする人もいるようですが、
テストでは使わない方がいいでしょう。

QACCESS2000VBAでエラー「型が一致しません」

ACCESS2000で、フォーム上にボタンを作り、そのボタンをクリック時に
以下のイベント プロシージャを実行させています。

Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("採番_相談者")
Dim Number
rst.MoveFirst
Number = rst!相談者番号
Number = Number + 1
Me.相談者NO = Number '相談者NOはフォーム上のテキストボックスです。

で上記 Set rst = dbs.OpenRecordset("採番_相談者")
の所で、「実行時エラー 13 型が一致しません」とエラーになります。
テーブル:採番_相談者は、オートナンバー型のIDフィールドと相談者番号という7桁のテキスト型で
”1000001”が入っています。(ちなみに、数値型に変えても同じエラーでした。)

詳しい方教えてください。お願いします。

ACCESS2000で、フォーム上にボタンを作り、そのボタンをクリック時に
以下のイベント プロシージャを実行させています。

Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("採番_相談者")
Dim Number
rst.MoveFirst
Number = rst!相談者番号
Number = Number + 1
Me.相談者NO = Number '相談者NOはフォーム上のテキストボックスです。

で上記 Set rst = dbs.OpenRecordset("採番_相談者")
の所で、「実行時エ...続きを読む

Aベストアンサー

#1さんの回答に同じく
さらにソースの先頭に「Option Explicit」を記述するともっとベター

このソースは、フォーム上の相談者NOテキストボックスに新規"相談者番号"を取得して表示すものでしょうか?
(余計なおせっかいですが...)ソースに省略箇所がありありなので、ちょっと修正

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim Number As Integer

Set dbs = CurrentDb
strSQL = "select max(相談者番号) as max相談者番号 from 採番_相談者;"
Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot)

If IsNull(rst.Fields("max相談者番号").value) Then
  Number = 1000001
Else
  Number = CInt(rst.Fields("max相談者番号").Value)
  Number = Number + 1
End If

Me.相談者NO.Value = Number

#1さんの回答に同じく
さらにソースの先頭に「Option Explicit」を記述するともっとベター

このソースは、フォーム上の相談者NOテキストボックスに新規"相談者番号"を取得して表示すものでしょうか?
(余計なおせっかいですが...)ソースに省略箇所がありありなので、ちょっと修正

Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim Number As Integer

Set dbs = CurrentDb
strSQL = "select max(相談者番号) as max相談者番号 from 採番_相談者;"
Set rst = dbs.OpenRe...続きを読む

QT型交差点、5差路 3差路 などの英訳

通常の交差点なら「intersection」で良いと思いますが、

T型交差点、5差路、3差路はどう表現したら良いでしょう。

Y型交差点ですと「fork」と云う言葉があるようですが・・

また
Y型交差点で「右斜め方向に進む」はどう表現しますか?

Aベストアンサー

前半は
http://www.berlitz.co.jp/wm/10/0303.htm
あたりか? 丁字路なら T-shape ともよべるかと.

後半, 「右斜め方向に進む」ってのは Y の下からきて, ですよね? であれば単に「右方向」で十分なのでは.

QVBA 「実行エラー”13” 型が一致しません。」の対処方法を教えてください。

OKWebをはじめ、インターネットで質問をするのは、はじめてです。よろしくお願いします。
1ヶ月前から、年甲斐もなく老体に(66)鞭打ってVBAに挑戦しています。
開発をしているソフトは、ある組織の個人用の出納簿で、EXCELを知らなっくても、パソコンが少し触れるかたげ使用できる様にと思い取り組んでいます。
現在、ワークシート=3枚、ユーザフォーム=7枚、標準モジュール=4モジュールの作成を終えましたが、動作確認において、表題のエラーが出て、対応に苦労しています。
質問にあたり再現プログラムを作りましたから、ご指導よろしくお願いします。なお、開発環境は、WindowsXP、EXCEL2003です。

Sheet1 ⇒ 何も設定していません。
fom出納簿入力 ⇒ 作成済みのUserFormをインストールしました。
 ⇒⇒ 新たにUserFormを定義すると正常に動作します。

<<ThisWorkbook>>の定義内容
Private Sub Workbook_Open()
'--------<<タイトルバーの変更>>
Application.Caption = "○○システム"
ActiveWindow.Caption = "△△△"
'--------<<ウィンドウの枠の最大化>>
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
'--------<<メニューバーのカスタマイズ>>
subメニューバーカスタマイズ
'--------<<ツールバーの非表示
Dim myCB As CommandBar
On Error Resume Next
For Each myCB In Application.CommandBars
myCB.Visible = False
Next myCB
On Error GoTo 0
End Sub

Sub subメニューバーカスタマイズ()
Dim myCB As CommandBar, myCBCtrl As CommandBarControl
'「ワークシートメニューバー」のすべてのコントロールを削除する
Set myCB = Application.CommandBars("Worksheet Menu Bar")
For Each myCBCtrl In myCB.Controls
myCBCtrl.Delete
Next myCBCtrl
'-----[出納簿]メニューの作成 -----
Set myCBCtrl = myCB.Controls.Add(Type:=msoControlPopup)
myCBCtrl.Caption = "出納簿"
'-----[出納簿]→[出納簿(入力)]メニューの作成 -----
Set myCBCtrl = myCB.Controls("出納簿").Controls.Add(Type:=msoControlButton)
myCBCtrl.Caption = "出納簿(入力)"
myCBCtrl.OnAction = "sub出納簿入力" 'モジュール「サブルーチン」
End Sub
(ThisWorkbookの定義は、内容をあまり理解せぬまま、参考書のサブルーチンを借用して、作成しました。)

<<Module1>>の定義内容
Sub sub出納簿入力()
Sheet1.Select
ActiveWindow.Zoom = 125
UserForms("fom出納簿入力").Show
End Sub

エラーは、最後の「UserForms("fom出納簿入力").Show」で発生しています。
また、「入力」に対して「訂正」ルーチンを組んでいます。訂正を行う場合は、まず、InputBoxメソード対話型プロセジャーを使って、訂正行を取得します。そして、データベースの該当行の内容を「訂正」UserFormsに表示するために、プロパティに設定する場合にも、「実行時エラー"13" 型が一致しません。」となります。
コーディングの一部は次のとおりです。

 my収入 = ActiveCell.Value ⇒ データベースから値を取得
 fom出納簿訂正.cb金額.Value = my収入

上記2命令の間でmsgboxでmy収入の値を確認していますが、正しく設定されています。訂正ルーチンは3個ありますが、1個は上記のコーディングで正しく動作しますが、2個がエラーとなります。

何分VBAの素人ですから、具体的なご指導を賜れば幸いです。

OKWebをはじめ、インターネットで質問をするのは、はじめてです。よろしくお願いします。
1ヶ月前から、年甲斐もなく老体に(66)鞭打ってVBAに挑戦しています。
開発をしているソフトは、ある組織の個人用の出納簿で、EXCELを知らなっくても、パソコンが少し触れるかたげ使用できる様にと思い取り組んでいます。
現在、ワークシート=3枚、ユーザフォーム=7枚、標準モジュール=4モジュールの作成を終えましたが、動作確認において、表題のエラーが出て、対応に苦労しています。
質問にあたり...続きを読む

Aベストアンサー

ANo.5です。

>uf出納簿訂正.cb月.Value = my月  ← ここでエラー
cd月ってどのコントロールなのでしょう。
TextBox?Label?
Label1.Caption = my月
TextBox1.Value = my月
TextBoxなら問題なさそうですが、LabelならValueではダメですし。
ようはプロパティでValueが使えないコントロールなのでしょう。

Q提案型企業の英訳を

お願いします。
内容はタイトル通りなんですが
PROPOSED TYPE COMPANY
で外人の方に通じるでしょうか?

Aベストアンサー

ちょっとGoogleで検索したところ、Proposing Companyでいいみたいですね。

QString だと「 ByRef引数の型が一致しません 」というエラーが出ます。なぜ?

ここで「Kaplan-Meyer 生存分析に便利なソフトを教えて」と質問した shuu_01 です。ここで VisualBasic のソースのありかを教えて頂き、自分に使いやすいようソースを書き換えようと奮闘中です(それまで VisualBasic の経験がなく 無謀!と実感中です)。

元々のソースはグラフが1本だけだったので、肺癌だと「腺癌」「扁平上皮癌」「小細胞癌」、、といろんな癌の種類別にグラフを数本 書くのが目標です。そこで、

Sub km_test()
Dim nc As Integer, gr() As String
nc = 2
ReDim gr(nc)
gr(0) = "腺癌"
gr(1) = "扁平上皮癌"
gr(2) = "小細胞癌"
km_group_test nc, gr
End Sub

Sub km_group_test(nc As Integer, gr As String)

End Sub

というソースを書くと:

String の変数 gr の色が変わり、「 ByRef引数の型が一致しません 」というエラーが出ます。
Integer の変数 nc ではエラーが出ません。
きちんと型を一致させているつもりなのに、なぜ???

ここで「Kaplan-Meyer 生存分析に便利なソフトを教えて」と質問した shuu_01 です。ここで VisualBasic のソースのありかを教えて頂き、自分に使いやすいようソースを書き換えようと奮闘中です(それまで VisualBasic の経験がなく 無謀!と実感中です)。

元々のソースはグラフが1本だけだったので、肺癌だと「腺癌」「扁平上皮癌」「小細胞癌」、、といろんな癌の種類別にグラフを数本 書くのが目標です。そこで、

Sub km_test()
Dim nc As Integer, gr() As String
nc = 2
ReDim gr(nc)
...続きを読む

Aベストアンサー

関数の第2変数が文字列なのに、呼び出し側が文字列の配列を渡しているようです。

関数の呼び出し側を
km_group_test nc, gr(1)
とかにするか、関数を
Sub km_group_test(nc As Integer, gr() As String)
とかにしないと、型が違うと思います。

Q英訳お願いします!

「彼によるそのプランによってV字型の回復を遂げました。」
を英訳したいのですが、V字型ってどう英語で表現したらいいのでしょうか?

教えて下さい。

Aベストアンサー

下記URLを参考にしてください。
特にタイトル、第一パラグラフにV-Shapeという単語がでてきますので、参考に。
おそらく、彼のことを言っているのでしょ?

参考URL:http://www.nni.nikkei.co.jp/FR/NIKKEI/ngmf/ngmf2001/2001ngmf_ghosn.html

Q[Excel2000_VBA] 型が一致しませんメッセージが表示

各サイトを調べたのですが、自分のレベルに合った解答内容がなくよく理解できなかったので、質問させて頂きます(初歩的な質問で申し訳ありません)

ユーザー定義を使用し、以下のコードを作ってみました。
配列を引数にして、まとめて返したいと考えていますが、構造体を使用すると「型が一致しません」と表示されてしまいます。
何が原因しているのでしょうか?
さっぱり分かりませんので、ご教示お願いいたします。

Type test
aaaa As Integer
End Type

Sub sbTest()
Dim myAns() As test
myAns = Sample1(myAns)
End Sub

Function Sample1(ByRef Ans() As test)
Dim i As Integer
Dim ret(0 To 9) As test
For i = 0 To 9
ret(i).aaaa = i
Next
Ans = ret '配列名で配列を戻り値
End Function

各サイトを調べたのですが、自分のレベルに合った解答内容がなくよく理解できなかったので、質問させて頂きます(初歩的な質問で申し訳ありません)

ユーザー定義を使用し、以下のコードを作ってみました。
配列を引数にして、まとめて返したいと考えていますが、構造体を使用すると「型が一致しません」と表示されてしまいます。
何が原因しているのでしょうか?
さっぱり分かりませんので、ご教示お願いいたします。

Type test
aaaa As Integer
End Type

Sub sbTest()
Dim...続きを読む

Aベストアンサー

AsnをRef引数で渡すのであればSample1はSubでいいと思いますよ
Functionにするなら戻り値を定義します

' 戻り値を定義 ... As test()
Function Sample1() As test()
  Dim i as Integer
  Dim Ans(0 to 9) As test
  for i = 0 to 9
    Ans(i).aaa = i
  next
  Sample1 = Ans
End Function

' 参照渡しの引数なら Subプロシージャで
Sub Sample2(ByRef Ans() as Test)
  Dim i as Integer
  ' 引数の配列の 下限から上限までの添え字の取得を
  ' LBound/UBoundで取得
  for i = LBound(Ans) to UBound(Ans)
    Ans(i).aaa = i
  next
End Sub

Q「製販一体」を英訳すると

製造と販売を一つの企業が担う製販一体型の企業を英語で表現したいのですが、「製販一体」をどのように英訳したらよいでしょうか?

Aベストアンサー

既存の欧米企業の社名を少し研究すれば納得できるかとおもいますが、製販一体を
社名に表現している会社はほとんどない筈です。社名からは製造・販売をしているかどうかは分かりません。そのような便利な単語はないし、また習慣もないということです。GM、IBMでも日本メーカの松下、ソニー、トヨタでもそのような表現はしていません。

どうしても表示したければ社名の下に製造・販売(Manufacturing and distribution)と説明を加える方法はあります。海外の企業と取引を想定し名刺やレターヘッドに使用するのが目的なら、このような表示でよいかと思います。

蛇足ながら製販一体という言葉は、製造部門(会社)と販売部門(会社)があたかもも一つの組織(会社)の如く、企業理念や目的を共有しなければ、競争相手に打ち勝ってよい業績をあげられない・・・という風に精神論を説くときに使用されます。

Q[VBA]型が一致しません

EXCELWORKSHEET上で下記の処理をすると「型が一致しません」との
エラーがでます。どうにも原因と対応策がわからず悩んでいます。
デバッグの良い方法ありませんでしょうか?

<現象>
*列2上のセルを選択して、DELETEキーを押す。⇒エラーなし。
*しかし、列2上のセルとその他のセルを同時選択した上で、DELETEキーを押すと「型が一致しません。」のエラー。
頭の「If Target.Column Like 2 And Len(Target.Value) > 0 Then
」が悪さしているのはわかるのですが・・・。

Private Sub WORKSHEET_CHANGE(ByVal Target As Range)

If Target.Column Like 2 And Len(Target.Value) > 0 Then
Range("c" & Target.Row).Value = Now
If Target.Column Like 2 And Len(Target.Value) > 0 Then
'B列の場合だけ確認
Dim rng As Range
Set rng = ActiveSheet.Range("B:B").Find(What:=Target, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, MatchByte:=True)

If Not rng Is Nothing Then
'発見した。
If rng.Address <> Target.Address Then
'入力中セル以外で発見

Select Case MsgBox("過去に受け入れたLOTです。再度受入れますか?", vbYesNo)
Case vbYes
Range("B2").Activate
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Now
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = UserForm2.TextBox2.Value
UserForm2.TextBox1.Value = ""
UserForm2.TextBox2.Value = ""
UserForm2.TextBox1.SetFocus
Range("B2").Activate
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select
Case vbNo
Range("B2").Activate
Selection.End(xlDown).Select
ActiveCell.ClearContents
ActiveCell.Offset(0, 1).Activate
ActiveCell.ClearContents
UserForm2.TextBox1.Value = ""
UserForm2.TextBox2.Value = ""
UserForm2.TextBox1.SetFocus
End Select
End If
End If
End If
End If

End Sub

EXCELWORKSHEET上で下記の処理をすると「型が一致しません」との
エラーがでます。どうにも原因と対応策がわからず悩んでいます。
デバッグの良い方法ありませんでしょうか?

<現象>
*列2上のセルを選択して、DELETEキーを押す。⇒エラーなし。
*しかし、列2上のセルとその他のセルを同時選択した上で、DELETEキーを押すと「型が一致しません。」のエラー。
頭の「If Target.Column Like 2 And Len(Target.Value) > 0 Then
」が悪さしているのはわかるのですが・・・。

Private Sub WORKSHEET_CHAN...続きを読む

Aベストアンサー

原因はTargetが複数セルだった場合を考慮していないからだと思います。
デバッグ方法は、エラーで背景が黄色くなった行で、「Target.Column」や「Target.Column Like 2」や「Target.Value」や「Len(Target.Value)」を選択して、SHIFT+F9を押して変数の値を確かめると、どの変数がエラーなのかわかります。
「Len(Target.Value)」で、「型が一致しません」というので、イミディエイトウインドウで
? vartype(Target.Value)
とすると
8204
と表示します。
gooやgoogleで「vartype 8204」で調べれば、「バリアント型の配列」だとわかります。
対応策は複数同時に更新されたらどうするかによって違います。
現状のコードをできるだけ変更しない方法は、以下でどうでしょうか?
Private Sub WORKSHEET_CHANGE(ByVal Target As Range)
If Target.Count >= 2 Then
MsgBox "複数同時変更はだめ"
Exit Sub
End If
If Target.Column Like 2 And Len(Target.Value) > 0 Then
以下同じ
End Sub
Targetのセルを1つずつ処理に渡す方法。
targetの部分をたとえばtarget1に変更して、「For Each target1 In target」で1つずつ処理に渡します。
Private Sub WORKSHEET_CHANGE(ByVal target As Range)
Dim target1 As Range
For Each target1 In target
If target1.Column Like 2 And Len(target1.Value) > 0 Then
Range("c" & target1.Row).Value = Now
If target1.Column Like 2 And Len(target1.Value) > 0 Then
'B列の場合だけ確認
Dim rng As Range
Set rng = ActiveSheet.Range("B:B").Find(What:=target1, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, MatchByte:=True)
If Not rng Is Nothing Then
'発見した。
If rng.Address <> target1.Address Then
'入力中セル以外で発見
以下同じ
ただし、End Subの手前にFor Each に対応するNextを入れる(下)
Next
End Sub

原因はTargetが複数セルだった場合を考慮していないからだと思います。
デバッグ方法は、エラーで背景が黄色くなった行で、「Target.Column」や「Target.Column Like 2」や「Target.Value」や「Len(Target.Value)」を選択して、SHIFT+F9を押して変数の値を確かめると、どの変数がエラーなのかわかります。
「Len(Target.Value)」で、「型が一致しません」というので、イミディエイトウインドウで
? vartype(Target.Value)
とすると
8204
と表示します。
gooやgoogleで「vartype 8204」で調べれば、「バリア...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報