Excel VBA質問箱 IV

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

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


2130 / 13645 ツリー ←次へ | 前へ→

【69777】VBA VLOOKUP関数での列指定について boko 11/8/29(月) 10:59 質問[未読]
【69779】Re:VBA VLOOKUP関数での列指定について UO3 11/8/29(月) 12:42 発言[未読]
【69780】Re:VBA VLOOKUP関数での列指定について UO3 11/8/29(月) 12:49 発言[未読]
【69781】Re:VBA VLOOKUP関数での列指定について boko 11/8/29(月) 13:46 回答[未読]
【69782】Re:VBA VLOOKUP関数での列指定について boko 11/8/29(月) 13:48 質問[未読]
【69783】Re:VBA VLOOKUP関数での列指定について boko 11/8/29(月) 13:49 質問[未読]
【69784】Re:VBA VLOOKUP関数での列指定について UO3 11/8/29(月) 14:19 発言[未読]
【69786】Re:VBA VLOOKUP関数での列指定について UO3 11/8/29(月) 14:31 発言[未読]
【69791】Re:VBA VLOOKUP関数での列指定について boko 11/8/29(月) 15:30 質問[未読]
【69790】Re:VBA VLOOKUP関数での列指定について UO3 11/8/29(月) 14:55 発言[未読]
【69792】Re:VBA VLOOKUP関数での列指定について boko 11/8/29(月) 15:34 お礼[未読]

【69777】VBA VLOOKUP関数での列指定について
質問  boko E-MAIL  - 11/8/29(月) 10:59 -

引用なし
パスワード
   当方、vba初心者のため的を得ない質問かと思いますが、
どなたかご助力いただければ幸いです。


前任者の組んだマクロ(vlookup)で、
列に返す値の位置の指定が上手くできていない部分があります。

  Y列に検索値から18列目値
 AB列に検索値から21列目値
 AC列に検索値から22列目値
 AD列に検索値から23列目値

を返したいのですが、マクロを動かしても
該当のセルに数式が反映されません。
しかも、AB列には23列目の値が返されてしまっています。

恐らく下記のmodsettingがおかしいのではないかと踏んでいるのですが…
(Public Constの後の"HonLCol"に何か意味があり、
 それが正しいものが入力されていない??)
★の箇所がこちらの意図した値が返らない部分です。

お気づきの点があれば、ご指摘下さい。
どうぞ宜しくお願い致します。


以下、modsetting

'=== セルの場所設定 ===

'VLOOKUPで検索するセルの場所
Public Const VSC = "H"   '一番左のセル
Public Const VEC = "BH"  '最後のセル


'前月分の場所(シートでの位置)
Public Const HonLCol = "R"   '本給−前月分
Public Const NenLCol = "T"   '年俸月額−前月分
Public Const SyaLCol = "V"   '謝金−前月分
Public Const SaiLCol = "X"   '裁量労働-前月分
Public Const SaeLCol = "Y"   '超過勤務・法定内 ★
Public Const OvGLCol = "Z"   '超過勤務・法定外(60h外)
Public Const OvNLCol = "AA"   '超過勤務・法定外(60h内)
Public Const HldLCol = "AB"   '休日勤務 ★ ※23列目の値が返されている
Public Const HmdLCol = "AC"   '休日勤務(60h内) ★
Public Const HndLCol = "AD"   '休日勤務(60h外) ★
Public Const OvSLCol = "AE"   '超過勤務・深夜
Public Const HeiLCol = "AF"   '平日勤務
Public Const ShnLCol = "AG"   '深夜手当
Public Const JyuLCol = "AI"   '住居手当−前月
Public Const TkNLCol = "AK"   '通勤手当−前月
Public Const TkTLCol = "AM"   '特殊通勤手当−前月
Public Const EtcLCol = "AP"   'その他支給−前月
Public Const KenLCol = "AT"   '(事業主)健康保険-前月分
Public Const KaiLCol = "AV"   '(事業主)介護保険-前月分
Public Const KouLCol = "AX"   '(事業主)厚生年金-前月分
Public Const JidLCol = "AZ"   '(事業主)児童拠出厚年-前
Public Const KiHLCol = "BB"   '(事業主)基金標準-前月分
Public Const KiALCol = "BD"   '(事業主)基金加算-前月分
Public Const KohLCol = "BF"   '(事業主)会計用雇保-前月
Public Const RouLCol = "BH"   '(事業主)会計用労災-前月


'当月分データの場所(”VLOOKUP”で選択したセルの左からの位置)
Public Const HonTCol = "11"   '本給−当月分
Public Const NenTCol = "13"   '年俸月額−当月分
Public Const SyaTCol = "15"   '謝金−当月分
Public Const SaiTCol = "17"   '裁量労働-当月分
Public Const SaeTCol = "18"   '超過勤務・法定内 ★
Public Const OvGTCol = "19"   '超過勤務・法定外
Public Const OvNTCol = "20"   '超過勤務・法定内
Public Const HldTCol = "21"   '休日勤務 ★
Public Const HmdTCol = "22"   '休日勤務(60h内) ★
Public Const HndTCol = "23"   '休日勤務(60h外) ★ ※AB列に値が返る
Public Const OvSTCol = "24"   '超過勤務・深夜
Public Const HeiTCol = "25"   '平日勤務
Public Const ShnTCol = "26"   '深夜手当
Public Const JyuTCol = "28"   '住居手当
Public Const TkNTCol = "30"   '通勤手当
Public Const TkTTCol = "32"   '特殊通勤手当
Public Const EtcTCol = "35"   'その他支給
Public Const KenTCol = "39"   '(事業主)健康保険
Public Const KaiTCol = "41"   '(事業主)介護保険
Public Const KouTCol = "43"   '(事業主)厚生年金
Public Const JidTCol = "45"   '(事業主)児童拠出厚年
Public Const KiHTCol = "47"   '(事業主)基金標準
Public Const KiATCol = "49"   '(事業主)基金加算
Public Const KohTCol = "51"   '(事業主)会計用雇保
Public Const RouTCol = "53"   '(事業主)会計用労災

【69779】Re:VBA VLOOKUP関数での列指定について
発言  UO3  - 11/8/29(月) 12:42 -

引用なし
パスワード
   ▼boko さん:

こんにちは
肝心の、これら変数を使った(使っていると思われる)VBAのコードがアップされていないので
回答ができません。

うまくデコードできない部分だけでもいいですから、コードをアップされてはいかがでしょう。

【市役所で印鑑登録をするために】、【印鑑】をもっていったけど、【これだけではだめだといわれた】
なぜでしょう?

これなら、アドバイスできますね。身分証明書が必要だとか、住民票が必要だとか。

【市役所で手続きのために】、【印鑑】をもっていったけど、【これだけではだめだといわれた】
なぜでしょう?

この質問には、答えをだせませんね?

【69780】Re:VBA VLOOKUP関数での列指定について
発言  UO3  - 11/8/29(月) 12:49 -

引用なし
パスワード
   ▼boko さん:

上の例が必ずしもわかりやすいものではなかったので。

たとえば

A1の値とA2の値を変数に取り込んで計算させてA3に結果を書きむマクロをつくったけど正しく計算されない。
A1とA2の値を取り込む変数は以下のように記述しているけど、どこがおかしいのでしょうか?

Dim Data1 As Long
Dim Data2 As Long

こういう質問があったとしたら、bokoさんは、どう答えますか?

【69781】Re:VBA VLOOKUP関数での列指定について
回答  boko E-MAIL  - 11/8/29(月) 13:46 -

引用なし
パスワード
   UO3様

レス、ありがとうございます。

>A1の値とA2の値を変数に取り込んで計算させてA3に結果を書きむマクロをつくったけど正しく計算されない。
>A1とA2の値を取り込む変数は以下のように記述しているけど、どこがおかしいのでしょうか?
>
>Dim Data1 As Long
>Dim Data2 As Long

Dim Data1 As Long
Dim Data2 As Long
上記の2行の入力の仕方に問題があると認識していましたので、
その誤入力箇所をしてきしていただけるものと思っていました。

次の投稿でコードを投稿しますので、宜しくお願い致します。

【69782】Re:VBA VLOOKUP関数での列指定について
質問  boko E-MAIL  - 11/8/29(月) 13:48 -

引用なし
パスワード
   ▼UO3 さん:
以下にコードを記載します。
UO3様、他にご覧の皆様、ご指導宜しくお願い致します。


'===============================
'  modMain
'  修正には注意してください。
'===============================
'-------------------------
'  設定エリア
'-------------------------
Dim WB As Workbook
Dim WS As Worksheet
Dim Rng As Range
Dim L As Long
Dim msg As Integer

Type RangeValue
  Start As String
  End As String
End Type

Dim StartLine As String
Dim EndLine As String
Dim strLstYYMM As String

Public Sub MainProc(prmWorksheet As Worksheet, strYYMM As String)
'=====================
'  Main Procedure
'=====================

  Dim ThisAdrs As RangeValue
  Dim LastAdrs As RangeValue

  On Error GoTo Err_MainProc

  strLstYYMM = Get_BeforeMonth(strYYMM)   '先月を生成
  If MsgBox("処理を開始しますか?" & vbCrLf & "処理月:" & strYYMM & " " & "処理前月:" & strLstYYMM, vbQuestion + vbDefaultButton2 + vbYesNo) = vbNo Then Exit Sub

  Set WS = prmWorksheet     '処理するワークシートを定義
  
  '---年月の行範囲を検索---
  '当月検索
  ThisAdrs = Get_Range(WS, strYYMM)
  If ThisAdrs.Start = "-1" Or ThisAdrs.End = "-1" Then
    msg = MsgBox("当月データが見つかりませんでした。", vbExclamation)
    Exit Sub
  End If
  
  '前月検索
  LastAdrs = Get_Range(WS, strLstYYMM)
  If LastAdrs.Start = "-1" Or LastAdrs.End = "-1" Then
    msg = MsgBox("前月データが見つかりませんでした。", vbExclamation)
    Exit Sub
  End If
  
'  Debug.Print "処理月 :開始行 = " & ThisAdrs.Start & " 終了行 = " & ThisAdrs.End
'  Debug.Print "処理前月:開始行 = " & LastAdrs.Start & " 終了行 = " & LastAdrs.End

  'VLOOKUPセット
  Call Set_VLOOKUP(WS, ThisAdrs, LastAdrs)

  msg = MsgBox("終了しました。", vbInformation)
  
Exit_MainProc:

  Exit Sub


Err_MainProc:

  'エラー時の処理

  msg = MsgBox(Err.Description, vbExclamation)
  Exit Sub


End Sub

Private Function Get_Range(prmWS As Worksheet, prmYYMM As String) As RangeValue
'=========================
'  年月の行範囲を検索
'=========================

  Dim BefYYMM As String

  '初期設定
  BefYYMM = ""
  Get_Range.Start = -1
  Get_Range.End = -1
  
  
  BefYYMM = Get_BeforeMonth(prmYYMM)
  
  
  '最初の行を検索
  Set Rng = prmWS.Range(SrchStCell & ":" & SrchEdCell).Find(what:=prmYYMM, lookat:=xlWhole)
  
  If Rng Is Nothing Then Exit Function  '見つからない場合は抜ける
  
  StartLine = Rng.Row   '最初の行をセット
  Do
    '次の行を検索して、読み終わるまでループ
    DoEvents
    EndLine = Rng.Row
    Set Rng = prmWS.Range(SrchStCell & ":" & SrchEdCell).FindNext(Rng)
  Loop While Not Rng Is Nothing And Rng.Row <> StartLine
  
  Get_Range.Start = StartLine   '開始行
  Get_Range.End = EndLine     '最終行

End Function

Private Sub Set_VLOOKUP(prmWS As Worksheet, prmThisRV As RangeValue, prmLastRV As RangeValue)
'===================
'  VLOOKUPを設定
'===================

  For L = prmLastRV.Start To prmLastRV.End
    prmWS.Range(HonLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & HonTCol & ")"  '本給
    prmWS.Range(NenLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & NenTCol & ")"  '年俸月額
    prmWS.Range(SyaLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & SyaTCol & ")"  '謝金
    prmWS.Range(SaiLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & SaiTCol & ")"  '裁量労働
    prmWS.Range(OvGLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & SaeTCol & ")"  '超過勤務・法定
    prmWS.Range(OvGLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & OvGTCol & ")"  '超過勤務・法定外
    prmWS.Range(OvNLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & OvNTCol & ")"  '超過勤務・法定内
    prmWS.Range(HldLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & HldTCol & ")"  '休日勤務
    prmWS.Range(HldLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & HmdTCol & ")"  '休日勤務(60h内)
    prmWS.Range(HldLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & HndTCol & ")"  '休日勤務(60h外)
    prmWS.Range(OvSLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & OvSTCol & ")"  '超過勤務・深夜
    prmWS.Range(HeiLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & HeiTCol & ")"  '平日勤務
    prmWS.Range(ShnLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & ShnTCol & ")"  '深夜手当
    prmWS.Range(JyuLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & JyuTCol & ")"  '住居手当
    prmWS.Range(TkNLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & TkNTCol & ")"  '通勤手当
    prmWS.Range(TkTLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & TkTTCol & ")"  '特殊通勤手当
    prmWS.Range(EtcLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & EtcTCol & ")"  'その他支給
    prmWS.Range(KenLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & KenTCol & ")"  '(事業主)健康保険
    prmWS.Range(KaiLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & KaiTCol & ")"  '(事業主)介護保険
    prmWS.Range(KouLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & KouTCol & ")"  '(事業主)厚生年金
    prmWS.Range(JidLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & JidTCol & ")"  '(事業主)児童拠出厚年
    prmWS.Range(KiHLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & KiHTCol & ")"  '(事業主)基金標準
    prmWS.Range(KiALCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & KiATCol & ")"  '(事業主)基金加算
    prmWS.Range(KohLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & KohTCol & ")"  '(事業主)会計用雇保
    prmWS.Range(RouLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & RouTCol & ")"  '(事業主)会計用労災
  Next L


End Sub

Private Function Get_BeforeMonth(prmYYMM As String) As String

【69783】Re:VBA VLOOKUP関数での列指定について
質問  boko E-MAIL  - 11/8/29(月) 13:49 -

引用なし
パスワード
   先程のコードの続きです。


'-----------------
'  前月を生成
'-----------------


  If Right(prmYYMM, 2) = "01" Then
     Get_BeforeMonth = CInt(Left(prmYYMM, 4)) - 1 & "12"
  Else
     Get_BeforeMonth = prmYYMM - 1
  End If


End Function


'Private Sub Set_VLOOKUP(prmWS As Worksheet, prmThisRV As RangeValue, prmLastRV As RangeValue)
''===================
''  VLOOKUPを設定
''===================
'
'  For L = prmThisRV.Start To prmThisRV.End
'    prmWS.Range(HonLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & HonTCol & ")"  '本給
'    prmWS.Range(NenLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & NenTCol & ")"  '年俸月額
'    prmWS.Range(SyaLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & SyaTCol & ")"  '謝金
'    prmWS.Range(SaiLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & SaiTCol & ")"  '裁量労働
'    prmWS.Range(OvGLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & SaeTCol & ")"  '超過勤務・法定
'    prmWS.Range(OvGLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & OvGTCol & ")"  '超過勤務・法定外
'    prmWS.Range(OvNLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & OvNTCol & ")"  '超過勤務・法定内
'    prmWS.Range(HldLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & HldTCol & ")"  '休日勤務
'    prmWS.Range(HldLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & HmdTCol & ")"  '休日勤務(60h内)
'    prmWS.Range(HldLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmThisRV.Start & ":" & VEC & prmThisRV.End & "," & HndTCol & ")"  '休日勤務(60h外)
'    prmWS.Range(OvSLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & OvSTCol & ")"  '超過勤務・深夜
'    prmWS.Range(HeiLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & HeiTCol & ")"  '平日勤務
'    prmWS.Range(ShnLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & ShnTCol & ")"  '深夜手当
'    prmWS.Range(JyuLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & JyuTCol & ")"  '住居手当
'    prmWS.Range(TkNLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & TkNTCol & ")"  '通勤手当
'    prmWS.Range(TkTLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & TkTTCol & ")"  '特殊通勤手当
'    prmWS.Range(EtcLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & EtcTCol & ")"  'その他支給
'    prmWS.Range(KenLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & KenTCol & ")"  '(事業主)健康保険
'    prmWS.Range(KaiLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & KaiTCol & ")"  '(事業主)介護保険
'    prmWS.Range(KouLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & KouTCol & ")"  '(事業主)厚生年金
'    prmWS.Range(JidLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & JidTCol & ")"  '(事業主)児童拠出厚年
'    prmWS.Range(KiHLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & KiHTCol & ")"  '(事業主)基金標準
'    prmWS.Range(KiALCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & KiATCol & ")"  '(事業主)基金加算
'    prmWS.Range(KohLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & KohTCol & ")"  '(事業主)会計用雇保
'    prmWS.Range(RouLCol & L).Value = "=VLOOKUP(" & VSC & L & "," & VSC & prmLastRV.Start & ":" & VEC & prmLastRV.End & "," & RouTCol & ")"  '(事業主)会計用労災
'  Next L
'
'
'End Sub
'

【69784】Re:VBA VLOOKUP関数での列指定について
発言  UO3  - 11/8/29(月) 14:19 -

引用なし
パスワード
   ▼boko さん:

コードアップ、お疲れ様。
読ませていただきます。

ところで、実行プロシジャが見当たりませんが?
(実際に MainProc を Call しているプロシジャ)

それと、2回目にアップされた残りのコードでコメントアウトされているブロックは
無視してよろしいですね?
つまり、追加のコードは以下のみですね?

>'-----------------
>'  前月を生成
>'-----------------
>
>
>  If Right(prmYYMM, 2) = "01" Then
>     Get_BeforeMonth = CInt(Left(prmYYMM, 4)) - 1 & "12"
>  Else
>     Get_BeforeMonth = prmYYMM - 1
>  End If
>
>
>End Function

【69786】Re:VBA VLOOKUP関数での列指定について
発言  UO3  - 11/8/29(月) 14:31 -

引用なし
パスワード
   ▼boko さん:

▼boko さん:

追加で。
アップいただいたコードを読むということも、やってみますが、
【動かしてみる】ことも原因を追究するために必要になると思います。

で、以下の2つの変数、宣言されていませんし、どこで、どのように、何をセットしているのかも
見えないのですが、ここはいかがですか?

SrchStCell と SrchEdCell

【69790】Re:VBA VLOOKUP関数での列指定について
発言  UO3  - 11/8/29(月) 14:55 -

引用なし
パスワード
   ▼boko さん:

コードを斜め読みしましたら、以下、おかしいのかなぁ・・・というところが。
Set_VLOOKUP 内に以下の3行

prmWS.Range(HldLCol & L).Value = "=VLOOKUP(・・・・・ HldTCol & ")"  '休日勤務
prmWS.Range(HldLCol & L).Value = "=VLOOKUP(・・・・・ HmdTCol & ")"  '休日勤務(60h内)
prmWS.Range(HldLCol & L).Value = "=VLOOKUP(・・・・・・ HndTCol & ")"  '休日勤務(60h外)

これは正しいのですか?
右辺はそれぞれ異なりますが、左辺が同じ。
なので、prmWS.Range(HldLCol & L).Value は、最終的には'休日勤務(60h外)になりますし
prmWS.Range(HmdLCol & L) と prmWS.Range(HndLCol & L) には何もセットされないことになりますね。

【69791】Re:VBA VLOOKUP関数での列指定について
質問  boko E-MAIL  - 11/8/29(月) 15:30 -

引用なし
パスワード
   ▼UO3 さん:
レス、ありがとうございます。

コメントアップ部分は無視していただいて構いません。
変数は下記の通りです。
(毎月変数は変化します。)
コメント部分は無視して下さい。

'======================
'  modSetting
'   設定ファイル
'======================

'年月検索開始セル
Public Const SrchStCell = "F1"

'年月検索終了セル
' ※たぶん溢れることは無いだろうが増えたらココの値を大きくする。
' ※2003までだとこれが最大値なのでOfficeのバージョンは要確認。
Public Const SrchEdCell = "F65535"


'=== セルの場所設定 ===

'VLOOKUPで検索するセルの場所
Public Const VSC = "H"   '一番左のセル
Public Const VEC = "BH"  '最後のセル


'前月分の場所(シートでの位置)
Public Const HonLCol = "R"   '本給−前月分
Public Const NenLCol = "T"   '年俸月額−前月分
Public Const SyaLCol = "V"   '謝金−前月分
Public Const SaiLCol = "X"   '裁量労働-前月分
Public Const SaeLCol = "Y"   '超過勤務・法定内
Public Const OvGLCol = "Z"   '超過勤務・法定外(60h外)
Public Const OvNLCol = "AA"   '超過勤務・法定外(60h内)
Public Const HldLCol = "AB"   '休日勤務
Public Const HmdLCol = "AC"   '休日勤務(60h内)
Public Const HndLCol = "AD"   '休日勤務(60h外)
Public Const OvSLCol = "AE"   '超過勤務・深夜
Public Const HeiLCol = "AF"   '平日勤務
Public Const ShnLCol = "AG"   '深夜手当
Public Const JyuLCol = "AI"   '住居手当−前月
Public Const TkNLCol = "AK"   '通勤手当−前月
Public Const TkTLCol = "AM"   '特殊通勤手当−前月
Public Const EtcLCol = "AP"   'その他支給−前月
Public Const KenLCol = "AT"   '(事業主)健康保険-前月分
Public Const KaiLCol = "AV"   '(事業主)介護保険-前月分
Public Const KouLCol = "AX"   '(事業主)厚生年金-前月分
Public Const JidLCol = "AZ"   '(事業主)児童拠出厚年-前
Public Const KiHLCol = "BB"   '(事業主)基金標準-前月分
Public Const KiALCol = "BD"   '(事業主)基金加算-前月分
Public Const KohLCol = "BF"   '(事業主)会計用雇保-前月
Public Const RouLCol = "BH"   '(事業主)会計用労災-前月


'当月分データの場所(”VLOOKUP”で選択したセルの左からの位置)
Public Const HonTCol = "11"   '本給−当月分
Public Const NenTCol = "13"   '年俸月額−当月分
Public Const SyaTCol = "15"   '謝金−当月分
Public Const SaiTCol = "17"   '裁量労働-当月分
Public Const SaeTCol = "18"   '超過勤務・法定内
Public Const OvGTCol = "19"   '超過勤務・法定外
Public Const OvNTCol = "20"   '超過勤務・法定内
Public Const HldTCol = "21"   '休日勤務
Public Const HmdTCol = "22"   '休日勤務(60h内)
Public Const HndTCol = "23"   '休日勤務(60h外)
Public Const OvSTCol = "24"   '超過勤務・深夜
Public Const HeiTCol = "25"   '平日勤務
Public Const ShnTCol = "26"   '深夜手当
Public Const JyuTCol = "28"   '住居手当
Public Const TkNTCol = "30"   '通勤手当
Public Const TkTTCol = "32"   '特殊通勤手当
Public Const EtcTCol = "35"   'その他支給
Public Const KenTCol = "39"   '(事業主)健康保険
Public Const KaiTCol = "41"   '(事業主)介護保険
Public Const KouTCol = "43"   '(事業主)厚生年金
Public Const JidTCol = "45"   '(事業主)児童拠出厚年
Public Const KiHTCol = "47"   '(事業主)基金標準
Public Const KiATCol = "49"   '(事業主)基金加算
Public Const KohTCol = "51"   '(事業主)会計用雇保
Public Const RouTCol = "53"   '(事業主)会計用労災

【69792】Re:VBA VLOOKUP関数での列指定について
お礼  boko E-MAIL  - 11/8/29(月) 15:34 -

引用なし
パスワード
   ▼UO3 さん:
ご指摘、ありがとうございました!
左辺のコードを修正したところ、解決いたしました。

何ともお恥ずかしいミスで…
お手を煩わせてしまし申し訳ありません。
今日中にやらねばならない作業があったので、大変助かりました。
本当にありがとうございました。

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