
VBAユーザーフォーム作成の上記エラーについて
VBA初心者です。
初心者ですので、本を見ながら作成していましたが、その通り作成したつもりがエラー表示が・・
シート上にユーザーフォームは出てくるようにして入力をしているのですが、ボタン(更新、追加、削除)やスピン移動をクリックすると「コンパイルエラー SubまたはFunctionが定義されていません」とでてきます。本の通りしたので何が悪かったのかよくわからなくなりました。
下記に本を見て作ったコードを書きますので教えて頂きたいです。素人すぎますので説明不足もありますが宜しくお願いします。
Private Sub Button更新_Click()
データ書き込み (Spin移動.Value)
End Sub
Private Sub Button削除_Click()
データ範囲.Rows(Spin移動.Value).Delete
データ表示 (Spin移動.Value)
Set データ範囲 = Range("A1").CurrentRegion
Spin移動.Max = データ範囲.Rows.Count
End Sub
Private Sub Button終了_Click()
患者様データ.Hide
End Sub
Private Sub Button追加_Click()
Dim AddRow As Integer
AddRow = データ範囲.Rows.Count + 1
データ書き込み (AddRow)
Textレコード.Text = Spin移動.Value - 1 & "/" & レコード数取得
Set データ範囲 = Range("A1").CurrentRegion
Spin移動.Max = データ範囲.Rows.Count
Spin移動.Value = データ範囲.Rows.Count
データ表示 (AddRow)
End Sub
Private Sub MultiPage1_Change()
End Sub
Private Sub Option女_Click()
End Sub
Private Sub Option男_Click()
End Sub
Private Sub Spin移動_Change()
If データ範囲.Rows.Count <> 1 Then
データ表示 (Spin移動.Value)
End If
End Sub
Private Sub TextIIIIV音_Change()
End Sub
Private Sub Text患者ID_Change()
End Sub
Private Sub Text生年月日_AfterUpdate()
Text年齢.Value = DateDiff("yyyy", Text生年月日.Value, Now())
End Sub
Private Sub UserForm_Initialize()
Dim TBL(1 To 9) As Control
Dim データ範囲 As Range
Combo診療科.ColumnCount = 1
Combo診療科.AddItem "内科"
Combo診療科.AddItem "外科"
Combo診療科.AddItem "小児科"
Combo主治医.ColumnCount = 1
Combo主治医.AddItem "今中尚子"
Combo主治医.AddItem "岡井康葉"
Set TBL(1) = Text患者ID
Set TBL(2) = Text氏名
Set TBL(3) = Text生年月日
Set TBL(4) = Frame性別
Set TBL(5) = Combo診療科
Set TBL(6) = Combo主治医
Set TBL(7) = Text入院日
Set TBL(8) = Text退院日
Set TBL(9) = Combo指導医
Set データ範囲 = Range("A1").CurrentRegion
Spin移動.Max = レコード数取得 + 1
If データ範囲.Rows.Count = 1 Then
Else
データ表示 2
End If
End Sub
Public Sub データ表示(行数 As Integer)
Dim Cnt As Integer
For Cnt = 1 To 9
Select Case Cnt
Case 4
If データ範囲.Cells(行数, Cnt).Value = "男" Then
Option男.Value = True
Else
Option女.Value = True
End If
Case Else
Dim S
For Cnt = 1 To 9
S = データ範囲cells(行数, Cnt).Value
Next
End Select
Next
If IsDate(Text生年月日.Text) Then
Text年齢.Value = DateDiff("yyyy", Text生年月日.Value, Now())
Else
Text年齢.Value = Null
End If
Textレコード.Value = Spin移動.Value - 1 & "/" & レコード数取得
End Sub
Public Sub データ書き込み(行数 As Integer)
Dim Cnt As Integer
For Cnt = 1 To 9
Select Case Cnt
Case 4
If Option男.Value = True Then
データ範囲.Cells(行数, Cnt).Value = "男"
Else
データ範囲.Cells(行数, Cnt).Value = "女"
End If
Case Else
データ範囲.Cells(行数, Cnt).Value = TBL(Cnt).Value ←このTBLの部分で青くなり上記エラー
End Select
Next
End Sub
Public Function レコード数取得() As Integer
レコード数取得 = Range("A1").CurrentRegion.Rows.Count - 1
End Function
No.1ベストアンサー
- 回答日時:
変数の使い方が間違っています。
変数は、それを定義したSubまたはFunctionの中でしか有効ではありません。
このプログラムで言えば、
Private Sub UserForm_Initialize()
Dim TBL(1 To 9) As Control
Dim データ範囲 As Range
・・・・
End Sub
なので、TBLやデータ範囲の変数が使えるのは Sub UserForm_Initialize の中だけです。
どうしてもUserForm_Initializeの外で使いたいなら、
パブリック変数にする必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewで表示に制限をつ...
-
VBAでページ番号、ページ最終行...
-
ExcelVBAを使って、値...
-
テキストボックスのvalueとtext...
-
Accessのクエリで、replace関数...
-
特定のセルが空白だったら、そ...
-
利用者側のMACアドレスを取得し...
-
【VBA】シート上の複数のチェッ...
-
Excelで指定した日付から過去の...
-
任意フォルダから画像をすべて...
-
i=cells(Rows.Count, 1)とi=cel...
-
VB.NETで DataRow()を利用して...
-
エクセルvbaで、別シートの最下...
-
Excel VBA、 別ブックの最終行...
-
マクロで奇数と偶数の値を2か所...
-
ExcelのINDEXとMATCH関数でスピ...
-
Excel VBAで比較して数値があっ...
-
ListView 項目の選択/選択解除...
-
RC表示に変数を入れる
-
配列がとびとびである場合の書き方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.NET SqlDataReader のレコー...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
VBAでページ番号、ページ最終行...
-
DataGridViewで表示に制限をつ...
-
【ASP.NET MVC】一覧編集画面
-
GridViewにバインドせずにデー...
-
C# MySQLのデータを個別に取得...
-
MSFlexGridのデータ表示位置の設定
-
VBA ピボットテーブル自動更新
-
CSVデータの自動貼付け方法!
-
コンボボックス
-
ASP C# データベースから1行取得
-
ハイブリッド版CD-ROM アイコン
-
コンパイルエラーSubまたは...
-
使われているムービーデータ
-
アクセスカウンタの2重カウン...
-
エクセルVBAでカンマ区切りデー...
おすすめ情報