Excel VBA質問箱 IV

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

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


14444 / 76738 ←次へ | 前へ→

【67790】Re:もっと簡単にできないでしょうか?
発言  かみちゃん E-MAIL  - 11/1/8(土) 17:01 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>今後の勉強のためにも、”短く”できるコードがあるなら

たとえば、以下のような感じのコードになります。

Option Explicit

Dim TBL(1 To 149) As Control
Dim データ範囲 As Range

Public myID As Range

Public 年調給与額 As Currency
Public 控除後給与額 As Currency
Public 課税所得額 As Currency

Public kiso(1 To 2) As Currency
'kiso(1)…基礎控除額
'kiso(2)…老人控除対象配偶者控除加算額
Public kasan(1 To 9) As Currency
'kasan(1)…同居特別障害者
'kasan(2)…特別障害者
'kasan(3)…一般障害者
'kasan(4)…特別寡婦
'kasan(5)…寡婦又は寡夫
'kasan(6)…特定扶養親族
'kasan(7)…老親
'kasan(8)…老親の場合の同居加算
'kasan(9)…勤労学生

'家族変数定義(最大六人分)
Public huyou(1 To 6) As Currency
Public tokutei(1 To 6) As Currency
Public doukyo(1 To 6) As Currency
Public kahu_kouzyo(1 To 6) As Currency
Public syougai_kouzyo(1 To 6) As Currency
'huyou(1)…一人目
'huyou(2)…二人目
'huyou(3)…三人目

Private Sub UserForm_initialize()
 Dim i As Long
 Dim v As Variant

 With Worksheets("扶養控除")
  v = .Range("A1:E9").Value
 End With
 kiso(1) = Val(v(6, 3))  '基礎控除額
 kiso(2) = Val(v(8, 4))  '老人控除対象配偶者控除加算額
 kasan(1) = Val(v(14, 4)) '同居特別障害者
 kasan(2) = Val(v(13, 4)) '特別障害者
 kasan(3) = Val(v(12, 4)) '一般障害者
 kasan(4) = Val(v(15, 4)) '特別寡婦
 kasan(5) = Val(v(16, 4)) '寡婦又は寡夫
 kasan(6) = Val(v(11, 4)) '特定扶養親族
 kasan(7) = Val(v(9, 5)) '老親の場合の同居加算
 kasan(8) = Val(v(10, 4)) '老親
 kasan(9) = Val(v(17, 4)) '勤労学生

 For i = 1 To 6
  With Worksheets("辞書")
   Controls("Combo家族続柄_" & i).List = .Range("続柄表").Value
   Controls("Combo家族続柄_" & i).List = .Range("続柄表").Value
   Controls("Combo家族元号_" & i).List = .Range("元号表").Value
   Controls("Combo家族生年_" & i).List = .Range("年数表").Value
   Controls("Combo家族生月_" & i).List = .Range("月表").Value
   Controls("Combo家族生日_" & i).List = .Range("日表").Value
   Controls("Combo寡婦別_" & i).List = .Range("寡婦別表").Value
   Controls("Combo障害別_" & i).List = .Range("障害別表").Value
   Controls("Combo同居別_" & i).List = .Range("同居別居表").Value
  End With
 Next

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

 Set TBL(1) = Combo社員ID
 
 For i = 1 To 6
  If i > 1 Then
   Set TBL(64 + i * 11) = Controls("Text家族氏名_" & i)
  End If
  Set TBL(65 + i * 11) = Controls("Combo家族続柄_" & i)
  Set TBL(66 + i * 11) = Controls("Combo家族元号_" & i)
  Set TBL(67 + i * 11) = Controls("Combo家族生年_" & i)
  Set TBL(68 + i * 11) = Controls("Combo家族生月_" & i)
  Set TBL(69 + i * 11) = Controls("Combo家族生日_" & i)
  Set TBL(70 + i * 11) = Controls("Text特定別_" & i)
  Set TBL(71 + i * 11) = Controls("Combo同居別_" & i)
  Set TBL(72 + i * 11) = Controls("Combo寡婦別_" & i)
  Set TBL(73 + i * 11) = Controls("Combo障害別_" & i)
  Set TBL(74 + i * 11) = Controls("Text家族控除額_" & i)
 Next
 
 Set データ範囲 = Worksheets("年調DATA").Range("A1").CurrentRegion
 If データ範囲.Columns.Count <> 1 Then
  データ表示 2
 End If
End Sub

数多くのコントロールを持つUserFormを再現させるのが、少々面倒だったので、
再現検証はしていません。
0 hits

【67778】もっと簡単にできないでしょうか? bakadeus 11/1/7(金) 19:50 質問
【67782】Re:もっと簡単にできないでしょうか? かみちゃん 11/1/7(金) 23:18 発言
【67787】Re:もっと簡単にできないでしょうか? bakadeus 11/1/8(土) 14:55 発言
【67790】Re:もっと簡単にできないでしょうか? かみちゃん 11/1/8(土) 17:01 発言
【67799】Re:もっと簡単にできないでしょうか? bakadeus 11/1/10(月) 14:40 発言
【67791】Re:もっと簡単にできないでしょうか? UO3 11/1/8(土) 17:42 発言
【67798】Re:もっと簡単にできないでしょうか? bakadeus 11/1/10(月) 14:16 発言
【67800】Re:もっと簡単にできないでしょうか? neptune 11/1/10(月) 14:58 発言
【67804】Re:もっと簡単にできないでしょうか? UO3 11/1/10(月) 18:28 発言
【67908】Re:もっと簡単にできないでしょうか? bakadeus 11/1/15(土) 17:46 お礼

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