|
下記のコード中の「レコード数取得」でデータ範囲の列数を取得するようにしているのですが、なぜか取得してくれません。改良法をご教示ください。
現象→「34/89」(34は表示列により可変)となるべきところが「34/0」と表示されます。
Dim TBL(1 To 149) As Control
Dim データ範囲 As Range
Private Sub UserForm_initialize()
Worksheets("○○").Select
省略
Spin移動.Max = レコード数取得 + 1
Set データ範囲 = Range("a1").CurrentRegion
If データ範囲.Columns.Count = 1 Then
Else
データ表示 2
End If
End Sub
Public Function レコード数取得() As Integer
レコード数取得 = Range("a1").CurrentRegion.Columns.Count - 1
End Function
Public Sub データ表示(列数 As Integer)
Dim Cnt As Integer
For Cnt = 1 To 149
TBL(Cnt).Value = データ範囲.Cells(Cnt, 列数).Value
Next
Textレコード.Value = Spin移動.Value - 1 & "/" & レコード数取得
End Sub
Private Sub Spin移動_change()
If データ範囲.Columns.Count <> 1 Then
データ表示 (Spin移動.Value)
End If
End Sub
Private Sub button追加_click()
'/////////////////////////////重複追加チェック
Dim vntData As Variant
Worksheets("年調DATA").Select
'氏名を取得
vntData = Text氏名.Value
'D列に同じ氏名の個数を取得
If WorksheetFunction.CountIf(Range("2:2"), vntData) > 0 Then
MsgBox "この人は、すでに登録されています。" & vbNewLine & _
"確認してください!", vbExclamation, "重複警告"
'使用済変数の破棄
Set vntData = Nothing
データ表示 (Spin移動.Value)
Exit Sub
End If
'/////////////////////////////////////
Dim Addrow As Integer
Addrow = データ範囲.Columns.Count + 1
データ書き込み (Addrow)
Textレコード.Text = Spin移動.Value - 1 & "/" & レコード数取得
Set データ範囲 = Range("a1").CurrentRegion
Spin移動.Max = データ範囲.Columns.Count
Spin移動.Value = データ範囲.Columns.Count
データ表示 (Addrow)
End Sub
Private Sub Button更新_Click()
データ書き込み (Spin移動.Value)
End Sub
Public Sub データ書き込み(列数 As Integer)
Dim Cnt As Integer
For Cnt = 1 To 149
データ範囲.Cells(Cnt, 列数).Value = TBL(Cnt).Value
Next
End Sub
Private Sub Button終了_Click()
Dim myBtn As Integer
myBtn = MsgBox("年末調整処理の個人別入力作業を終了しますか?", vbQuestion + vbOKCancel)
If myBtn = vbOK Then
Application.DisplayAlerts = False
ActiveWorkbook.Save
Unload Me
End If
'終了してメニューに戻る
Worksheets("menu").Select
Range("A1").Select
Application.GoTo reference:=ActiveCell, Scroll:=True
End Sub
|
|