2017-06-16 4 views
0

を使用してカラム内のすべてのセルに対して式シート名を置き換え特定のタブの名前たとえば、これは3月(03)、次に翌月には新しいシートを作成し、"2017_04 Cash" ...などと呼ばれます。あなたは私のコードを見れば、私はCashWS.Name = "2017_0" & MonthVal & " Cash"として式Iが現在設定されている列(AF)を有するVBA

あるシートに列AFでの式の '2017_03 Cash'一部を変更するスクリプトの何かに含める

Set CashWS = Sheets.Add 
CashWS.Name = "2017_0" & MonthVal & " Cash" 

below..youが表示されます

すべての3は基本的に4で置き換える必要があります。数式を列AFの最後の行までずっとドラッグします。

Sub AddSheets() 

Dim PrevSheet As String 
Dim CashWS As Worksheet 
Dim MonthVal As String 
Dim lr As Long 

NewSheet = InputBox("Which month is this Commissions statement for?") 
PrevSheet = InputBox("What was the previous month?") 

Worksheets(PrevSheet).Copy After:=Worksheets("Summary") 
ActiveSheet.Name = NewSheet 

With Worksheets(NewSheet) 
lr = .Cells(.Rows.Count, "AG").End(xlUp).Row 
    .Range(.Cells(5, "AE"), .Cells(lr, "AE")) = .Range(.Cells(5, "AG"), .Cells(lr, "AG")).Value 
End With  

Range("D2").Select 
ActiveCell.FormulaR1C1 = "=EOMONTH(DATE(2017,MONTH(DATEVALUE(MID(CELL(""filename"", RC[-5]), FIND(""]"", CELL(""filename"", RC[-5])) + 1, 255)&""1"")+1),1),0)" 
Selection.NumberFormat = "m/d/yyyy" 

Range("D3").Select 
ActiveCell.FormulaR1C1 = "=MONTH(R[-1]C)" 
Range("D3").Select 
Selection.NumberFormat = "General" 
MonthVal = ActiveCell.Value 


Set CashWS = Sheets.Add 
CashWS.Name = "2017_0" & MonthVal & " Cash" 

End Sub 
+0

「MATCH(G:G、 '2017_03 Cash'!A:A、0)」は正しいですか? – Jeeped

+0

@Jeepedはい、IFERROR(INDEX( '2017_03 Cash'!D:D、MATCH(G:G、 '2017_03 Cash'!A:A、0))、0)この式は、それは私に与えられ、それはその列にデータを引き込みます。 –

+0

@RituMishra私のコメントはその質問だけではありませんでした。あなたがそこで読んでいるときに、回答を受け入れることは両当事者にヒントを与える。また、OPの問題を解決した解決策を他の人が見つけるのを助けることができます。また、質問に答えがあるのを見ると視聴者も増加します。 (あなたが最高の答えを得られたことを後で書き留めた直後ではない)。あなたが賞金を始めたいのでない限り。 SOの品質を可能な限り高く保つことに感謝します。 – Masoud

答えて

0

日付に依存する文字列を作成するには、さまざまな方法があります。私は、そうでなければ数字として解釈されるエスケープされた文字を含むマスクでFormatを使う傾向があります。

Dim oldws As String, newws As String, oldmn As Long, newmn As Long 

oldmn = 3 
newmn = Month(Date) 
oldws = Format(oldmn, "\2\0\1\7\_00 \C\a\s\h") '2017_03 Cash 
newws = Format(Date, "yyyy_mm \C\a\s\h")   '2017_06 Cash (today is 16-Jun-2017) 

With Worksheets("sheet1") 
    With .Columns("AF") 
     .Replace What:=oldws, Replacement:=newws, LookAt:=xlPart, _ 
       SearchOrder:=xlByRows, MatchCase:=False, _ 
       SearchFormat:=False, ReplaceFormat:=False 
    End With 
End With 
+0

ありがとうございます。私はこれを試してみると、それが動作するかどうかをお知らせします! –

+0

これは私のコードを無限ループで送信し、ファイルオープナ/エクスプローラウィンドウを開いた理由を示しています。 –

+0

コードを* 'infintieループ*'に送信しませんでした。 * Sheet1 *は、テストワークブックから自分のワークブックにコードを移行する際に変更しなかったものです。 – Jeeped

関連する問題