[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『実行時エラー'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.