[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートのデータを更新』(しおひび)
本を見ながらマクロの勉強をしています。
データの修正を行いシートのデータを更新したいのですが
実行時エラー'13':
型が一致しません。
とでて
デバックをクリックすると
TargetRow = CInt(txtID.Text) + 1
この部分が黄色に示されます。
コードはこれです。
'シートのデータを更新
Dim TargetRow As Integer TargetRow = CInt(txtID.Text) + 1 Cells(TargetRow, 2).Value = txtGoods.Text Cells(TargetRow, 3).Value = cboCategory.Text Cells(TargetRow, 4).Value = txtMaker.Text Cells(TargetRow, 5).Value = txtPrice.Text Cells(TargetRow, 6).Value = txtUnit.Text Cells(TargetRow, 7).Value = txtRemark.Text
本の通りに入力できてると思うのですが何が悪いのかわかりません。
教えていただけないでしょうか?
< 使用 Excel:Excel2010、使用 OS:Windows7 >
かぶりましたが。
黄色くなった時点で、txtID.Text にマウスをあててみてください。 この値が表示されます。それが数字じゃないのでは?
いずれにしても、最初に
If Not IsNumeric(TextID.Text) Then MsgBox "数値で入力してください" Exit Sub End If
といったチェックコードを追加してはいかがですか。
ただし! TextID には どこかの行番号を入れるのですか? そういった入力を操作者にさせるというのは、ちょっと考えものですねぇ。 上記チェックをしても、70000 なんて入力もOKになりますからね。
そもそも、行番号変数が Integer ですか?
(β) 2015/11/24(火) 23:19
商品IDは変更ができないように
txtID.locled=True
とコードを入れてます。
そしてデータの修正のコードを入力したら黄色のエラーがでました。
ちなみにリストボックスの修正をする処理と本に書いてます。
が修正ができない・・・・
(しおひび) 2015/11/24(火) 23:46
txtID の Locked が True ということは、操作者が入力できないということですから きっと、どこか別のところで、この txtID に 処理すべきシート上のデータ最終行番号をセットしているんでしょうね。 でも、エラー時、その値が "" だったわけですから、その セットしている部分が実行されていないということでしょうね。
コード全体が見えないのであくまで「想像」ですが。
なお、おそらく、そのセットすべき行は、実行時のデータ最終行の次の行なんですよね。 であれば、何も txtID にその行番号をセットし、実行時に、その値を取得せずとも、処理可能ですよ。
いずれにしても、現在の構えで処理するなら
Dim TargetRow As Integer TargetRow = CInt(txtID.Text) + 1
これを
Dim TargetRow As Long If Not IsNumeric(TextID.Text) Then MsgBox "最終行番号がセットされていません" Exit Sub End If TargetRow = Val(txtID.Text) + 1
といったように変更しておくことが必要でしょうね。
また、実行時のデータ最終行の次の行にセットということであればtextIDを使わず、以下のようなコードでもいいかもしれません。
'シートのデータを更新 With Range("A1", ActiveSheet.UsedRange) With .Rows(.Rows.Count + 1) .Range("B1").Value = txtGoods.Text .Range("C1").Value = cboCategory.Text .Range("D1").Value = txtMaker.Text .Range("E1").Value = txtPrice.Text .Range("F1").Value = txtUnit.Text .Range("G1").Value = txtRemark.Text End With End With
(β) 2015/11/25(水) 04:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.