Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


16686 / 76738 ←次へ | 前へ→

【65516】User_formの修復について(至急!!!)
質問  八家九僧陀  - 10/6/1(火) 17:52 -

引用なし
パスワード
   今まで重たいながらも何とか動いていたUser_Formが、あるcomboboxに係るコードを追加したら、「実行時エラー380 Valueプロパティを設定できません。プロパティの値が不正です。」とのエラーメッセージが表示され動かなくなりました。
「ヘルプ」をクリックしても「このトピックは存在しません。製造元に・・・・(129)」と表示されます。(excel97を使用しています。)

以下に1.しようとしたこと と、2.コードを記述しますので、対処方法をご教示ください。

1.毎月の月給処理用のUser_Formです。
 A列〜CR列、80行(名、行は毎月若干の増減があります)のリストデータ形式のsheet("支給台帳")にUser_Formを使って入力しています。5月分はうまく入力できました。
 が、試行してみて、基本給や通勤費、社会保険料や所得税の扶養家族数等、毎月毎月変動のないものは、別シート(”給与マスター”)に登録させておいて、キーとなる社員IDをcomboboxで選択して、text基本給やtext通勤費等に取り込めるように改良しようと、以前この質問箱で回答いただいたComboboxの複数列表示と他のtextへの取り込みのVBAを盗用して加筆しました。加筆したとたんに動かなくなりました。

2.以下にコードを記述しますので、改良点、対処法をご教示ください。
(なお手書きのため、大文字、小文字等の混在をお許しください。)


Option Explicit

Dim TBL(1 to 90) as Control
Dim データ範囲 as range
Dim r as Range ←今回の追加

Private sub Userform_initialize()

'///////// ココから新規追加(質問箱から盗用)
Set r = worksheets("仮マスター").Range("A1").CurrentRegion
Set r = intersect(r,r.Offset(1))

With Me.Combo社員ID
  .rowsource = r.address(external:=True)
  .ColumnHeads = True
  .TextColumn = 1
  .BoundColumn = 2
  .ColumnCount = 2
  .ColumnWidths = "40:60"
End with
'////// ココまで

Spin移動.Max=レコード数取得 + 1

set TBL(1) = text支給年月日
set TBL(2) = text種別
set TBL(3) = Combo社員ID ←このIDにより以下の約20個のtextboxに値を取得
set TBL(4) = text氏名


set TBL(96) = text差引支給額 ’Combo社員ID以外は全てtextBoxです

Set データ範囲 = worksheets("支給台帳").Range("A1").currentRegion

if データ範囲.Rows.Count = 1 then
Else
データ表示 2
End If
End Sub

Pubulic Finction レコード数取得() as integer
レコード数取得 = worksheets("支給台帳").Range("A1").currentRegion.Rows.Count -1
End Function

Public Sub データ表示(行数 as integer)
Dim Cnt as integer,vntData as Variant
vntData = worksheets("支給台帳").Range("A1").currentRegion.Rows(行数).value
For Cnt = 1 to 96 Step 1
TBL(Cnt) = vntData(1,Cnt) ←エラーメッセージのとき、ここが黄色に反転
Next
Textレコード.value = Spin移動.value -1 &"/"&レコード数取得
End Sub

Private Sub Spin移動_change()
if データ範囲.Rows.Count<> 1 then
データ表示(Spin移動.Value)
End if
End sub

Private Sub button追加_Click()
Dim addrow As integer
addrow= worksheets("支給台帳").Range("A1").currentRegion

データ書き込み (addrow)
Set データ範囲 = worksheets("支給台帳").range("A1").CurrentRegion
Spin移動.Max = データ範囲.Rows.Count
Spin移動.value = データ範囲.Rows.Count
データ表示 (addrow)
End Sub

Public Sub データ書き込み(行数 as integer)
Dim Cnt As integer,vntData() as Variant
Application.screenupdating = false
Redim vntData(1 to 1,1 to96)
For Cnt = 1 to 96
vntData(1,cnt)=TBL(cnt).value
Next
worksheets("支給台帳").Range("A1").currentRegion.Rows(行数).value = vntData
Application.screenupdating = true
End Sub

Public Sub button更新_click()
データ書き込み (Spin移動.value)
End Sub

private Sub button削除_click()
データ範囲.Rows (Spin移動.value).Delete
データ表示 (Spin移動.value)
Set データ範囲 =worksheets("支給台帳").Range("A1").CurrentRegion
Spin移動.Max = データ範囲.Rows.Count
End sub

private Sub button終了_click()

activeworkbook.Save
unload me

End sub
'////////////////////////// ココから新規追加(質問箱から盗用)
Private sub Combo社員ID_Change()
Application.screenupdating = False
  With Me.Combo社員ID
  if .ListIndex < then Exit Sub
  Combo社員ID.value = .List(.ListIndex, 0)
  Text氏名.value = .List(.ListIndex, 1)
  Text所属.value = .List(.ListIndex, 2)
   ・
   ・
   ・
  Text標準報酬月額.value = .List(.ListIndex, 22)
  Text市県民税.value = .List(.ListIndex, 23)
End With
set r = Noting
Application.screenupdating = True
End Sub

長々と記述してしましましたが、以上がUserForm上の、追加、更新、削除、終了のcommandbuttonと新規追加したCombo社員IDに係るコードです。
まだまだ続くのですが、以下は各textbox間で、入力した数値により、afterupdateで、それぞれ時間外手当や各種手当て、合計、社会保険料算出、源泉徴収税計算のVBAを記述しています。

エラー時に黄色に反転する"TBL(Cnt) = vntData(1,Cnt)"のコードとCombo社員IDから取得する値(value)との整合性がとれていないためでしょうか?
なんとか基本的(固定的)項目は、給与マスターの値をCombo社員IDから取得したID(数値データ)で、Vlookup的に取得できればと考えています。
ご教示お願いします。

あと欲張って申し訳ありませんが、うまく入力できていたときも、User_Formの表示場所を移動すると幾重もの影?が画面に残ります。処理が重いからではと素人判断しているのですが、もっと早くなるコードはあるでしょうか?
1 hits

【65516】User_formの修復について(至急!!!) 八家九僧陀 10/6/1(火) 17:52 質問
【65517】Re:User_formの修復について(至急!!!) Yuki 10/6/1(火) 19:20 発言
【65518】Re:User_formの修復について(至急!!!) よろずや 10/6/1(火) 19:43 回答
【65519】Re:User_formの修復について(至急!!!) 247b 10/6/1(火) 21:08 発言
【65520】Re:User_formの修復について(至急!!!) 八家九僧陀 10/6/2(水) 0:32 質問
【65521】Re:User_formの修復について(至急!!!) Hirofumi 10/6/2(水) 7:37 発言
【65522】Re:User_formの修復について(至急!!!) 247b 10/6/2(水) 9:14 発言
【65523】Re:User_formの修復について(至急!!!) 247b 10/6/2(水) 9:38 発言
【65524】Re:User_formの修復について(至急!!!) 八家九僧陀 10/6/2(水) 13:12 質問
【65525】Re:User_formの修復について(至急!!!) 247b 10/6/2(水) 14:41 発言
【65528】Re:User_formの修復について(至急!!!) 八家九僧陀 10/6/2(水) 15:47 質問
【65533】Re:User_formの修復について(至急!!!) 247b 10/6/2(水) 16:53 発言
【65535】Re:User_formの修復について(至急!!!) 八家九僧陀 10/6/2(水) 19:08 質問
【65536】Re:User_formの修復について(至急!!!) 247b 10/6/2(水) 20:50 発言
【65537】Re:User_formの修復について(至急!!!) 八家九僧陀 10/6/2(水) 22:06 質問
【65538】Re:User_formの修復について(至急!!!) 247b 10/6/2(水) 22:39 発言
【65539】Re:User_formの修復について(至急!!!) 247b 10/6/2(水) 22:45 発言
【65540】Re:User_formの修復について(至急!!!) 八家九僧陀 10/6/2(水) 23:42 質問
【65541】Re:User_formの修復について(至急!!!) 247b 10/6/3(木) 0:19 発言

16686 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free