[[20050107174804]] 『実行時エラー'13': 型が一致しません』(てつ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『実行時エラー'13': 型が一致しません』(てつ)
 いつもお世話になっています。
 座席表の てつ です。
 また、わからないことが出てきましたので、教えてください。

 今、C列に「出席番号」を入力したら、ユーザーフォームが開いて
 そこに、対応するF列にある「班番号」を表示するということをしています。
 操作していると、時々「実行時エラー'13': 型が一致しません。」
 というエラー表示が出てとまります。以下のようなマクロです。

   If Target.Offset(0, 1) = "" Then Exit Sub
    UserForm1.TextBox1.Text = Target.Offset(0, 2).Text

 よくよく調べてみると、F列の表示幅が狭くて、
 「#」となっているセルのケースがエラーとなっているようです。
 実際、F列を非表示にすると、すべてのケースでエラーとなります。
 このエラーを回避することはできるでしょうか。

 できたら、F列は、非表示にしておきたいと思っています。
 よろしくお願いいたします。


 はずれかもしれません・・・
 If IsEmpty(Target.Offset(0, 1).Value) Then Exit Sub
 としたらどうなりますか。
 (川野鮎太郎)


 早速のお返事ありがとうございます。 
 試してみましたが、同様にエラーがでます。
 (てつ)


 全体が見えないので良く判りませんが、Targetを使っているってことは、
 チェンジイベントですよね。
 2行のうちどちらで止まりますか?
 下だったら、Target.Offset(0, 2).Value に変えてもダメですかね。
 ( ̄0 ̄;アッ そういえば・・・
 UserForm1.TextBox1.Text ←ここでUserForm1は開いてるんですよね。
 TextBox1.Text = Target.Offset(0, 2).Text でもダメかな・・・。

 (川野鮎太郎)

 F列に何が入っているかはわかりませんが、
CellのTextプロパティには、画面上で表示される形式そのものが入っています。
仮にF列に「123456789」と言った長い数値が入っていたとして、
画面上で幅が足りず、「###」と表示されている場合、
Textプロパティにも「###」が入っています。
ここで入力された値である「123456789」が欲しい場合は、
Valueプロパティを参照してください。
Valueプロパティには、そのセルが返す値そのものが入っています。
ここで注意したいのが、仮にF列に「=A1」と言ったような式が入っており、
A1に「123456789」と言う数値が入っていたとすると、
Valueプロパティには、「123456789」が入っています。
式の値は、Formulaプロパティに入っています。
 
てことでまぁいろいろ試してみてください。
明確な答えが出来れば良いのですが、
提示された情報だけを頼りに再現しようと試みても、
残念ながら再現しないのです。(WindowsXP Excel2000)
一応、
    UserForm1.TextBox1.Text = "" & Target.Offset(0, 2).Text
という形も試してみてください。多分外してるとは思いますが…
(ご近所PG)

 ご近所PGさんのアドバイスを見ながら、操作していて、
 質問するときの勘違いに気づきました。

  >提示された情報だけを頼りに再現しようと試みても、
  >残念ながら再現しないのです。(WindowsXP Excel2000)
  ごめんなさい

  エラーが出た時点で、マクロを見に行って、偶然カーソルが
  「UserForm1.TextBox1.Text」のあたりにかかったところで"6" 
  「Target.Offset(0, 2).Text」のところでも"6"となりました。
  次の行が黄色くなり、
  「zaseki」は"0"
  「Target.Offset(0, 3).Text」は、おっしゃるとおり「#」と
  なっていました。

    >If Target.Offset(0, 1) = "" Then Exit Sub
    >UserForm1.TextBox1.Text = Target.Offset(0, 2).Text

 問題は、ユーザーフォームでは、なく次の行の
 zaseki=Target.Offset(0, 3).Text
 の部分でした。
 もっとも、ユーザーフォームで提示させているE列の表示幅を小さくすると、
 ユーザーフォームは示されますが、空欄となっています。

 Offset(0, 3)の部分が、F列でした。
 > CellのTextプロパティには、画面上で表示される形式そのものが入っています。
 > 仮にF列に「123456789」と言った長い数値が入っていたとして、
 > 画面上で幅が足りず、「###」と表示されている場合、
 > Textプロパティにも「###」が入っています。
 この部分よく理解できました。

 >ここで入力された値である「123456789」が欲しい場合は、
 >Valueプロパティを参照してください。
 >Valueプロパティには、そのセルが返す値そのものが入っています。

 zaseki=Target.Offset(0, 3).Value
 に変えてみましたところ、うまくエラーも起こさず動作しました。
 他のTextの部分もValueに変えました。

 ご近所PGさん、川野さん、ありがとうございました。
 また、一歩前進することができました。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.