質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

10761閲覧

Excel VBA UserFormでのエラーを解決したい(セルへ値の代入)

masayone

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2018/08/17 13:40

Excel VBA UserFormでのエラー

UserFormを開く際に以下のエラーは発生しています。

貼付のExcel シート(Sheet1)のA2が空白の場合
「実行時エラー 13  型が一致しません。」

※A2に連番「1」を入力された状態では正常に起動します
この場合データの全削除が出来ない状態です。

◆実現したいこと
データが空白のとき、A2に「1」を代入する追加コードを入れたい

◆試したことは以下のコード(何れもエラー)
⓵Worksheets("Sheet1").Range("A1").Value = 1 をフォーム開くコードに追加

Sub 値の代入()
Worksheets("Sheet1").Range("A1").Value = 1  
End Sub

説明が下手で申し訳ありませんが宜しくお願い致します。

VBA

1‘――――――フォーム開くコードーーーーーー 2Sub ShowUserForm() 3 UserForm1.Show vbModeless 4 Sheets("Sheet1").Select 5 Range("A2").Select 6 End Sub 7―――――――――――――――――――――― 8 9Private Sub cmd登録_Click() 10‘――――――――中略―――――――――― 11If Range("F1").Offset(1).Value = "" Then 12 Range("F1").Offset(1).Value = txt連番.Value 13 Else 14 End If 15 Dim i As Integer 16    i = 1 17 Do While Cells(i + 1, "F").Value <> "" ‘F列の空欄以外に対する処理 18    Cells(i + 1, "A").Value = i 19    i = i + 1 20 Loop 21‘――――――――中略―――――――――― 22‘※ユーザーフォームをsheetに代入後 23 ‘内容をクリアーのコードを記載 24End Sub 25 26‘――――――A列の連番最終を確認するコード―――――――――― 27Private Sub UserForm1_initialize() ‘初期値? 28  UserForm1.txt連番.Value = Worksheets("Sheet1").Range("A65536").End(xlUp) 29 UserForm1.Show 30End Sub

ワークシート、UserForm、エラーコードを画像で貼り付けます。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

初期化プロシージャーに施した

◆試したことは以下のコード(何れもエラー)
⓵Worksheets("Sheet1").Range("A1").Value = 1 をフォーム開くコードに追加

を、下記のように変えてみたらどうでしょう。

VBA

1If Worksheets("Sheet1").Range("A2").Value = "" then 2 Worksheets("Sheet1").Range("A2").Value = 1 3End If

投稿2018/08/18 02:04

編集2018/08/18 02:06
3109

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masayone

2018/08/18 03:43

3109さんいつもありがとうございます。 どの部分に施したらいいのか迷いましたが、以下の所にコードを 貼付けることで見事に実現できました。 本当にいつも迅速なご回答、感謝します。 今後とも宜しくお願い致します。 ※3109さんをフォローさせて頂いていますが、回答依頼依頼を出来るユーザーに表示されておらず、ご指名できません。 ご迷惑でなければご回答依頼を出来るようにならないでしょうか? Private Sub UserForm1_initialize() ‘初期値? If Worksheets("Sheet1").Range("A2").Value = "" then Worksheets("Sheet1").Range("A2").Value = 1 End If   UserForm1.txt連番.Value = Worksheets("Sheet1").Range("A65536").End(xlUp) UserForm1.Show End Sub
3109

2018/08/18 05:14

"UserForm1"が作成中の入力フォームを指す名称なら それでOKです。 "initialize"は言葉の通り初期化のことで、 ユーザーフォームが呼び出された際に動作します。 利用情報登録ごとに動作させたい文は "cmd登録_Click()”内に、 呼出時1回きりでよいものは 前述のプロシージャーの中に記述します。 私はウィークデーはほぼteratailを見られないですし、 不特定多数に尋ねた方が 早く正しい正解にたどり着くことができると思います。 VBAの初歩的な質問で、 たまたま時間が合うことがあれば、 私も力になりたいと思います。
masayone

2018/08/19 16:19

3109さん 返信が遅くなりました。 ありがとうございます。今後とも宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問