<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Migrating From Excel Macros to Qlik Sense in App Development</title>
    <link>https://community.qlik.com/t5/App-Development/Migrating-From-Excel-Macros-to-Qlik-Sense/m-p/1921288#M75841</link>
    <description>&lt;P&gt;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/6148"&gt;@rwunderlich&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;Hi Bob,&lt;/P&gt;
&lt;P&gt;Its nice connecting with you, May I please take your expertise&amp;nbsp;in converting macro VBA code to Qlik Sense Script in Data load editor ( Backend)&lt;/P&gt;
&lt;P&gt;Macro VBA code as follows;&lt;/P&gt;
&lt;P&gt;Option Explicit&lt;BR /&gt;Private wb As Workbook&lt;BR /&gt;Private wb3 As Workbook&lt;BR /&gt;Private wsTable As Worksheet&lt;BR /&gt;Private wsTemp As Worksheet&lt;BR /&gt;Private wsVersion As Worksheet&lt;BR /&gt;Private wsMain As Worksheet&lt;BR /&gt;Private wsMultiplier As Worksheet&lt;BR /&gt;Private wsModifier As Worksheet&lt;BR /&gt;Private wsMapSelection As Worksheet&lt;BR /&gt;Private wsSub As Worksheet&lt;BR /&gt;Private wsTemplate As Worksheet&lt;BR /&gt;Private wsPrintMap As Worksheet&lt;BR /&gt;Private wsPrint As Worksheet&lt;BR /&gt;Private wsPositionMap As Worksheet&lt;BR /&gt;Private ws3 As Worksheet&lt;/P&gt;
&lt;P&gt;Private Sub Common()&lt;/P&gt;
&lt;P&gt;Set wb = ThisWorkbook&lt;BR /&gt;Set wsTemp = wb.Worksheets("temp")&lt;BR /&gt;Set wsTable = wb.Worksheets("Rawdata")&lt;BR /&gt;Set wsMultiplier = wb.Worksheets("Multiplier")&lt;BR /&gt;Set wsModifier = wb.Worksheets("Brand_Modifier")&lt;BR /&gt;Set wsVersion = wb.Worksheets("ACT")&lt;BR /&gt;Set wsMapSelection = wb.Worksheets("Map_Selection")&lt;BR /&gt;Set wsTemplate = wb.Worksheets("ByTrend")&lt;BR /&gt;Set wsMain = wb.Worksheets("Main")&lt;BR /&gt;Set wsPrintMap = wb.Worksheets("Print_Map")&lt;BR /&gt;Set wsPositionMap = wb.Worksheets("Position_Map")&lt;/P&gt;
&lt;P&gt;End Sub&lt;BR /&gt;Sub Run()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.StatusBar = "Run"&lt;BR /&gt;Application.DisplayAlerts = False&lt;/P&gt;
&lt;P&gt;Call Common&lt;BR /&gt;Call Update&lt;BR /&gt;&lt;BR /&gt;If wsMain.Range("H9") = "YES" Then&lt;BR /&gt;Call ByTrend&lt;BR /&gt;End If&lt;BR /&gt;&lt;BR /&gt;If wsMain.Range("H10") = "YES" Then&lt;BR /&gt;'Call DeleteCompany&lt;BR /&gt;Call OutPutReports&lt;BR /&gt;End If&lt;BR /&gt;&lt;BR /&gt;'Call ByTrend&lt;BR /&gt;'Call ByPeriod&lt;/P&gt;
&lt;P&gt;Application.ScreenUpdating = True&lt;BR /&gt;Application.StatusBar = ""&lt;BR /&gt;Application.DisplayAlerts = True&lt;BR /&gt;End Sub&lt;BR /&gt;Sub GenerateByTrend()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.StatusBar = "Run"&lt;BR /&gt;Application.DisplayAlerts = False&lt;BR /&gt;&lt;BR /&gt;Call Common&lt;BR /&gt;Call ByTrend&lt;/P&gt;
&lt;P&gt;Application.ScreenUpdating = True&lt;BR /&gt;Application.StatusBar = ""&lt;BR /&gt;Application.DisplayAlerts = True&lt;BR /&gt;End Sub&lt;BR /&gt;Sub GeneratePrint()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.StatusBar = "Run"&lt;BR /&gt;Application.DisplayAlerts = False&lt;BR /&gt;&lt;BR /&gt;Call Common&lt;BR /&gt;Call OutPutReports&lt;/P&gt;
&lt;P&gt;Application.ScreenUpdating = True&lt;BR /&gt;Application.StatusBar = ""&lt;BR /&gt;Application.DisplayAlerts = True&lt;BR /&gt;End Sub&lt;BR /&gt;Private Sub DeleteCompany()&lt;BR /&gt;Dim intCountSheet As Integer&lt;BR /&gt;Dim intCountRow As Integer&lt;BR /&gt;Dim strFilter As String&lt;BR /&gt;Dim rngPeriod As Range&lt;BR /&gt;Dim rngFinal As Range&lt;BR /&gt;Dim rngCheckRange As Range&lt;BR /&gt;Dim lngStartRow As Long&lt;/P&gt;
&lt;P&gt;Set wb2 = Workbooks.Open(ThisWorkbook.Path &amp;amp; "\" &amp;amp; wsMain.Range("H7"))&lt;BR /&gt;intCountSheet = 1&lt;BR /&gt;&lt;BR /&gt;Do While intCountSheet &amp;lt; wb2.Sheets.Count&lt;BR /&gt;lngStartRow = 9&lt;BR /&gt;Do While lngStartRow &amp;lt;= 299&lt;BR /&gt;Set wsFilter = wb2.Worksheets(intCountSheet)&lt;BR /&gt;intCountRow = 1&lt;BR /&gt;Do While intCountRow &amp;lt;= wsCondition.Range("M" &amp;amp; wsCondition.Rows.Count).End(xlUp).Row&lt;BR /&gt;strFilter = wsCondition.Range("M" &amp;amp; intCountRow)&lt;BR /&gt;wsFilter.Cells.UnMerge&lt;BR /&gt;Set rngCheckRange = wsFilter.Rows(lngStartRow &amp;amp; ":" &amp;amp; lngStartRow + 11)&lt;BR /&gt;Set rngFinal = Nothing&lt;BR /&gt;For Each rngPeriod In Intersect(rngCheckRange, wsFilter.Columns("G"))&lt;BR /&gt;If rngPeriod = strFilter Then&lt;BR /&gt;If rngFinal Is Nothing Then Set rngFinal = rngPeriod.EntireRow&lt;BR /&gt;Set rngFinal = Union(rngFinal, rngPeriod.EntireRow)&lt;BR /&gt;wsFilter.Rows(lngStartRow + 12).Insert&lt;BR /&gt;End If&lt;BR /&gt;Next rngPeriod&lt;BR /&gt;intCountRow = intCountRow + 1&lt;BR /&gt;&lt;BR /&gt;On Error Resume Next&lt;BR /&gt;rngFinal.Delete&lt;BR /&gt;On Error GoTo 0&lt;BR /&gt;'strFilter = wsCondition.Range("M" &amp;amp; intCountRow)&lt;BR /&gt;'wsFilter.Range("F7:G7").AutoFilter field:=2, Criteria1:=strFilter&lt;BR /&gt;Loop&lt;BR /&gt;lngStartRow = lngStartRow + 12&lt;BR /&gt;If lngStartRow = 153 Then&lt;BR /&gt;lngStartRow = 155&lt;BR /&gt;End If&lt;BR /&gt;Loop&lt;BR /&gt;intCountSheet = intCountSheet + 1&lt;BR /&gt;Loop&lt;/P&gt;
&lt;P&gt;End Sub&lt;BR /&gt;Private Sub OutPutReports()&lt;BR /&gt;Dim intFirstRow As Integer&lt;BR /&gt;Dim strTabName As String&lt;BR /&gt;Dim intLastRow As Integer&lt;/P&gt;
&lt;P&gt;Set wb3 = Workbooks.Add&lt;BR /&gt;&lt;BR /&gt;wb3.Styles.Merge Workbook:=Workbooks(wb.Name)&lt;BR /&gt;intLastRow = wsPrintMap.Range("A" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;intFirstRow = 2&lt;/P&gt;
&lt;P&gt;Set wsTemp = wb3.Worksheets.Add(after:=wb3.Worksheets("Sheet1"))&lt;BR /&gt;wsTemp.Name = "Temp"&lt;BR /&gt;&lt;BR /&gt;'generate bySubs sheets&lt;BR /&gt;Do While intFirstRow &amp;lt;= intLastRow&lt;BR /&gt;strTabName = wsPrintMap.Range("A" &amp;amp; intFirstRow).Value&lt;BR /&gt;Set wsTemplate = wb.Worksheets("Template_BySubs")&lt;BR /&gt;wsTemplate.Range("F2:F2") = strTabName&lt;BR /&gt;wsTemplate.Calculate&lt;BR /&gt;&lt;BR /&gt;wsTemplate.Cells.Copy&lt;BR /&gt;wsTemp.Range("A1").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;&lt;BR /&gt;Set wsPrint = wb.Worksheets("Print_BySubs")&lt;BR /&gt;wsPrint.Copy before:=wb3.Worksheets("Sheet1")&lt;BR /&gt;&lt;BR /&gt;Set ws3 = wb3.Worksheets("Sheet1").Previous&lt;BR /&gt;ws3.Name = wsPrintMap.Range("B" &amp;amp; intFirstRow).Value&lt;BR /&gt;&lt;BR /&gt;ws3.Range("G7:GT262").Value2 = wsTemp.Range("G7:GT262").Value2&lt;BR /&gt;ws3.Tab.ColorIndex = wsMain.Range("I16")&lt;BR /&gt;&lt;BR /&gt;intFirstRow = intFirstRow + 1&lt;BR /&gt;wsTemp.Cells.Clear&lt;BR /&gt;Loop&lt;/P&gt;
&lt;P&gt;' intLastRow = wsPrintMap.Range("C" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;' intFirstRow = 2&lt;BR /&gt;' Do While intFirstRow &amp;lt;= intLastRow&lt;BR /&gt;' strTabName = wsPrintMap.Range("C" &amp;amp; intFirstRow).Value&lt;BR /&gt;' Set wsTemplate = wb.Worksheets("Template_BySeg")&lt;BR /&gt;' wsTemplate.Range("F2:F2") = strTabName&lt;BR /&gt;' wsTemplate.Calculate&lt;BR /&gt;'&lt;BR /&gt;' wsTemplate.Cells.Copy&lt;BR /&gt;' wsTemp.Range("A1").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;'&lt;BR /&gt;' Set wsPrint = wb.Worksheets("Print_BySeg")&lt;BR /&gt;' wsPrint.Copy before:=wb3.Worksheets("Sheet1")&lt;BR /&gt;'&lt;BR /&gt;' Set ws3 = wb3.Worksheets("Sheet1").Previous&lt;BR /&gt;' ws3.Name = wsPrintMap.Range("D" &amp;amp; intFirstRow).Value&lt;BR /&gt;'&lt;BR /&gt;' ws3.Range("G7:GT232").Value2 = wsTemp.Range("G7:GT232").Value2&lt;BR /&gt;' ws3.Tab.ColorIndex = wsMain.Range("I17")&lt;BR /&gt;'&lt;BR /&gt;' intFirstRow = intFirstRow + 1&lt;BR /&gt;' wsTemp.Cells.Clear&lt;BR /&gt;' Loop&lt;/P&gt;
&lt;P&gt;wsTemp.Delete&lt;BR /&gt;'wb2.Close savechanges:=False&lt;BR /&gt;wb3.SaveAs Filename:=wb.Path &amp;amp; "\" &amp;amp; wsMain.Range("H8"), FileFormat:=50&lt;BR /&gt;wb3.Close&lt;/P&gt;
&lt;P&gt;End Sub&lt;BR /&gt;Private Sub Update()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;'common variables declaration&lt;BR /&gt;Dim lngStartRow As Long&lt;BR /&gt;Dim lngLastRow As Long&lt;BR /&gt;'Dim wb As Workbook&lt;BR /&gt;'Dim wsTable As Worksheet&lt;BR /&gt;'Dim wsTemp As Worksheet&lt;BR /&gt;'Dim wsVersion As Worksheet&lt;BR /&gt;'Dim wsMain As Worksheet&lt;BR /&gt;Dim strVersion As String&lt;BR /&gt;'Dim wsMultiplier As Worksheet&lt;BR /&gt;'Dim wsModifier As Worksheet&lt;BR /&gt;'Dim lngLastRow_Temp As Long&lt;BR /&gt;On Error GoTo errHandler:&lt;/P&gt;
&lt;P&gt;'Set wb = ThisWorkbook&lt;BR /&gt;Application.Calculation = False&lt;BR /&gt;&lt;BR /&gt;'clear cells in temp table&lt;BR /&gt;'Set wsTemp = wb.Worksheets("temp")&lt;BR /&gt;wsTemp.Cells.Clear&lt;/P&gt;
&lt;P&gt;'get data from Table to temp table&lt;BR /&gt;lngStartRow = 1&lt;BR /&gt;'Set wsTable = wb.Worksheets("Rawdata")&lt;BR /&gt;lngLastRow = wsTable.Range("G" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;wsTable.Rows(lngStartRow &amp;amp; ":" &amp;amp; lngLastRow).Copy&lt;BR /&gt;wsTemp.Rows("1:1").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;&lt;BR /&gt;wsTemp.Range("J2:J2") = "=INDEX(Map_Date!$E:$E,MATCH(F2,Map_Date!$A:$A,0))"&lt;BR /&gt;&lt;BR /&gt;'lngLastRow_Temp = wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;wsTemp.Range("J2:J2").Copy&lt;BR /&gt;wsTemp.Range("J2:J" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;&lt;BR /&gt;'convert cells to text&lt;BR /&gt;wsTemp.Range("M2") = "=TEXT(D2,""0"")"&lt;BR /&gt;wsTemp.Range("M2").Copy&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;wsTemp.Calculate&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsTemp.Range("D2:D" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsTemp.Columns("M:M").Clear&lt;BR /&gt;&lt;BR /&gt;'apply multiplier&lt;BR /&gt;'Set wsMultiplier = wb.Worksheets("Multiplier")&lt;BR /&gt;wsTemp.Range("M2") = "=IF(SUMIFS(Multiplier!D:D,Multiplier!B:B,temp!A2,Multiplier!C:C,temp!E2)=0,1,SUMIFS(Multiplier!D:D,Multiplier!B:B,temp!A2,Multiplier!C:C,temp!E2))*H2"&lt;BR /&gt;wsTemp.Range("M2").Copy&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;wsTemp.Calculate&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsTemp.Range("H2:H" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsTemp.Columns("M:M").Clear&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;'apply brand modifier&lt;BR /&gt;'Set wsModifier = wb.Worksheets("Brand_Modifier")&lt;BR /&gt;wsTemp.Range("M2") = "=IFERROR(INDEX(Brand_Modifier!B:B,MATCH(D2,Brand_Modifier!A:A,0)),D2)"&lt;BR /&gt;wsTemp.Range("M2").Copy&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;wsTemp.Calculate&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsTemp.Range("D2:D" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsTemp.Columns("M:M").Clear&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Application.CalculateFullRebuild&lt;BR /&gt;&lt;BR /&gt;'Set wsVersion = wb.Worksheets("ACT")&lt;BR /&gt;wsVersion.Cells.Clear&lt;BR /&gt;&lt;BR /&gt;wsTemp.Range("A1:J" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsVersion.Range("A1:J" &amp;amp; wsTemp.Range("C" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;&lt;BR /&gt;wsTemp.Cells.Clear&lt;BR /&gt;&lt;BR /&gt;Application.Calculation = True&lt;BR /&gt;Exit Sub&lt;BR /&gt;errHandler:&lt;BR /&gt;MsgBox "Error encountered"&lt;BR /&gt;Application.Calculation = True&lt;BR /&gt;Exit Sub&lt;BR /&gt;&lt;BR /&gt;Application.ScreenUpdating = True&lt;BR /&gt;End Sub&lt;BR /&gt;Private Sub ByTrend()&lt;BR /&gt;'Dim wb As Workbook&lt;BR /&gt;'Dim wsMapSelection As Worksheet&lt;BR /&gt;'Dim wsTemplate As Worksheet&lt;BR /&gt;'Dim wsMain As Worksheet&lt;BR /&gt;'Dim wsSub As Worksheet&lt;BR /&gt;Dim strSubs As String&lt;BR /&gt;Dim lngCount As Long&lt;BR /&gt;&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.Calculation = False&lt;BR /&gt;'Set wb = ThisWorkbook&lt;BR /&gt;'Set wsMapSelection = wb.Worksheets("Map_Selection")&lt;BR /&gt;'Set wsTemplate = wb.Worksheets("ByTrend")&lt;BR /&gt;'Set wsMain = wb.Worksheets("Main")&lt;BR /&gt;wsPositionMap.Cells.Calculate&lt;BR /&gt;&lt;BR /&gt;'print all subs in Map_Subs column B&lt;BR /&gt;lngCount = 1&lt;BR /&gt;'strSubs = "Subs"&lt;BR /&gt;strSubs = wsMapSelection.Range("B" &amp;amp; lngCount)&lt;BR /&gt;Do While strSubs &amp;lt;&amp;gt; ""&lt;BR /&gt;wsTemplate.Range("F2") = strSubs&lt;BR /&gt;Application.CalculateFullRebuild&lt;BR /&gt;Set wsSub = wb.Worksheets(strSubs)&lt;BR /&gt;wsSub.Cells.Clear&lt;BR /&gt;&lt;BR /&gt;' wsTemplate.Range(wsMain.Range("B21") &amp;amp; wsMain.Range("B19") &amp;amp; ":" &amp;amp; wsMain.Range("B22") &amp;amp; wsMain.Range("B20")).Copy&lt;BR /&gt;' wsSub.Range(wsMain.Range("B21") &amp;amp; wsMain.Range("B19") &amp;amp; ":" &amp;amp; wsMain.Range("B22") &amp;amp; wsMain.Range("B20")).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;' wsSub.Range(wsMain.Range("B21") &amp;amp; wsMain.Range("B19") &amp;amp; ":" &amp;amp; wsMain.Range("B22") &amp;amp; wsMain.Range("B20")).PasteSpecial Paste:=xlPasteFormats&lt;BR /&gt;&lt;BR /&gt;wsTemplate.Range("A1:FT167").Copy&lt;BR /&gt;wsSub.Range("A1:FT167").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsSub.Range("A1:FT167").PasteSpecial Paste:=xlPasteFormats&lt;BR /&gt;&lt;BR /&gt;lngCount = lngCount + 1&lt;BR /&gt;strSubs = wsMapSelection.Range("B" &amp;amp; lngCount)&lt;BR /&gt;&lt;BR /&gt;Loop&lt;BR /&gt;Application.Calculation = True&lt;BR /&gt;Application.ScreenUpdating = True&lt;BR /&gt;End Sub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your help will be great appreciated!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 22 Apr 2022 08:35:32 GMT</pubDate>
    <dc:creator>Purushothaman</dc:creator>
    <dc:date>2022-04-22T08:35:32Z</dc:date>
    <item>
      <title>Migrating From Excel Macros to Qlik Sense</title>
      <link>https://community.qlik.com/t5/App-Development/Migrating-From-Excel-Macros-to-Qlik-Sense/m-p/1921288#M75841</link>
      <description>&lt;P&gt;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/6148"&gt;@rwunderlich&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;Hi Bob,&lt;/P&gt;
&lt;P&gt;Its nice connecting with you, May I please take your expertise&amp;nbsp;in converting macro VBA code to Qlik Sense Script in Data load editor ( Backend)&lt;/P&gt;
&lt;P&gt;Macro VBA code as follows;&lt;/P&gt;
&lt;P&gt;Option Explicit&lt;BR /&gt;Private wb As Workbook&lt;BR /&gt;Private wb3 As Workbook&lt;BR /&gt;Private wsTable As Worksheet&lt;BR /&gt;Private wsTemp As Worksheet&lt;BR /&gt;Private wsVersion As Worksheet&lt;BR /&gt;Private wsMain As Worksheet&lt;BR /&gt;Private wsMultiplier As Worksheet&lt;BR /&gt;Private wsModifier As Worksheet&lt;BR /&gt;Private wsMapSelection As Worksheet&lt;BR /&gt;Private wsSub As Worksheet&lt;BR /&gt;Private wsTemplate As Worksheet&lt;BR /&gt;Private wsPrintMap As Worksheet&lt;BR /&gt;Private wsPrint As Worksheet&lt;BR /&gt;Private wsPositionMap As Worksheet&lt;BR /&gt;Private ws3 As Worksheet&lt;/P&gt;
&lt;P&gt;Private Sub Common()&lt;/P&gt;
&lt;P&gt;Set wb = ThisWorkbook&lt;BR /&gt;Set wsTemp = wb.Worksheets("temp")&lt;BR /&gt;Set wsTable = wb.Worksheets("Rawdata")&lt;BR /&gt;Set wsMultiplier = wb.Worksheets("Multiplier")&lt;BR /&gt;Set wsModifier = wb.Worksheets("Brand_Modifier")&lt;BR /&gt;Set wsVersion = wb.Worksheets("ACT")&lt;BR /&gt;Set wsMapSelection = wb.Worksheets("Map_Selection")&lt;BR /&gt;Set wsTemplate = wb.Worksheets("ByTrend")&lt;BR /&gt;Set wsMain = wb.Worksheets("Main")&lt;BR /&gt;Set wsPrintMap = wb.Worksheets("Print_Map")&lt;BR /&gt;Set wsPositionMap = wb.Worksheets("Position_Map")&lt;/P&gt;
&lt;P&gt;End Sub&lt;BR /&gt;Sub Run()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.StatusBar = "Run"&lt;BR /&gt;Application.DisplayAlerts = False&lt;/P&gt;
&lt;P&gt;Call Common&lt;BR /&gt;Call Update&lt;BR /&gt;&lt;BR /&gt;If wsMain.Range("H9") = "YES" Then&lt;BR /&gt;Call ByTrend&lt;BR /&gt;End If&lt;BR /&gt;&lt;BR /&gt;If wsMain.Range("H10") = "YES" Then&lt;BR /&gt;'Call DeleteCompany&lt;BR /&gt;Call OutPutReports&lt;BR /&gt;End If&lt;BR /&gt;&lt;BR /&gt;'Call ByTrend&lt;BR /&gt;'Call ByPeriod&lt;/P&gt;
&lt;P&gt;Application.ScreenUpdating = True&lt;BR /&gt;Application.StatusBar = ""&lt;BR /&gt;Application.DisplayAlerts = True&lt;BR /&gt;End Sub&lt;BR /&gt;Sub GenerateByTrend()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.StatusBar = "Run"&lt;BR /&gt;Application.DisplayAlerts = False&lt;BR /&gt;&lt;BR /&gt;Call Common&lt;BR /&gt;Call ByTrend&lt;/P&gt;
&lt;P&gt;Application.ScreenUpdating = True&lt;BR /&gt;Application.StatusBar = ""&lt;BR /&gt;Application.DisplayAlerts = True&lt;BR /&gt;End Sub&lt;BR /&gt;Sub GeneratePrint()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.StatusBar = "Run"&lt;BR /&gt;Application.DisplayAlerts = False&lt;BR /&gt;&lt;BR /&gt;Call Common&lt;BR /&gt;Call OutPutReports&lt;/P&gt;
&lt;P&gt;Application.ScreenUpdating = True&lt;BR /&gt;Application.StatusBar = ""&lt;BR /&gt;Application.DisplayAlerts = True&lt;BR /&gt;End Sub&lt;BR /&gt;Private Sub DeleteCompany()&lt;BR /&gt;Dim intCountSheet As Integer&lt;BR /&gt;Dim intCountRow As Integer&lt;BR /&gt;Dim strFilter As String&lt;BR /&gt;Dim rngPeriod As Range&lt;BR /&gt;Dim rngFinal As Range&lt;BR /&gt;Dim rngCheckRange As Range&lt;BR /&gt;Dim lngStartRow As Long&lt;/P&gt;
&lt;P&gt;Set wb2 = Workbooks.Open(ThisWorkbook.Path &amp;amp; "\" &amp;amp; wsMain.Range("H7"))&lt;BR /&gt;intCountSheet = 1&lt;BR /&gt;&lt;BR /&gt;Do While intCountSheet &amp;lt; wb2.Sheets.Count&lt;BR /&gt;lngStartRow = 9&lt;BR /&gt;Do While lngStartRow &amp;lt;= 299&lt;BR /&gt;Set wsFilter = wb2.Worksheets(intCountSheet)&lt;BR /&gt;intCountRow = 1&lt;BR /&gt;Do While intCountRow &amp;lt;= wsCondition.Range("M" &amp;amp; wsCondition.Rows.Count).End(xlUp).Row&lt;BR /&gt;strFilter = wsCondition.Range("M" &amp;amp; intCountRow)&lt;BR /&gt;wsFilter.Cells.UnMerge&lt;BR /&gt;Set rngCheckRange = wsFilter.Rows(lngStartRow &amp;amp; ":" &amp;amp; lngStartRow + 11)&lt;BR /&gt;Set rngFinal = Nothing&lt;BR /&gt;For Each rngPeriod In Intersect(rngCheckRange, wsFilter.Columns("G"))&lt;BR /&gt;If rngPeriod = strFilter Then&lt;BR /&gt;If rngFinal Is Nothing Then Set rngFinal = rngPeriod.EntireRow&lt;BR /&gt;Set rngFinal = Union(rngFinal, rngPeriod.EntireRow)&lt;BR /&gt;wsFilter.Rows(lngStartRow + 12).Insert&lt;BR /&gt;End If&lt;BR /&gt;Next rngPeriod&lt;BR /&gt;intCountRow = intCountRow + 1&lt;BR /&gt;&lt;BR /&gt;On Error Resume Next&lt;BR /&gt;rngFinal.Delete&lt;BR /&gt;On Error GoTo 0&lt;BR /&gt;'strFilter = wsCondition.Range("M" &amp;amp; intCountRow)&lt;BR /&gt;'wsFilter.Range("F7:G7").AutoFilter field:=2, Criteria1:=strFilter&lt;BR /&gt;Loop&lt;BR /&gt;lngStartRow = lngStartRow + 12&lt;BR /&gt;If lngStartRow = 153 Then&lt;BR /&gt;lngStartRow = 155&lt;BR /&gt;End If&lt;BR /&gt;Loop&lt;BR /&gt;intCountSheet = intCountSheet + 1&lt;BR /&gt;Loop&lt;/P&gt;
&lt;P&gt;End Sub&lt;BR /&gt;Private Sub OutPutReports()&lt;BR /&gt;Dim intFirstRow As Integer&lt;BR /&gt;Dim strTabName As String&lt;BR /&gt;Dim intLastRow As Integer&lt;/P&gt;
&lt;P&gt;Set wb3 = Workbooks.Add&lt;BR /&gt;&lt;BR /&gt;wb3.Styles.Merge Workbook:=Workbooks(wb.Name)&lt;BR /&gt;intLastRow = wsPrintMap.Range("A" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;intFirstRow = 2&lt;/P&gt;
&lt;P&gt;Set wsTemp = wb3.Worksheets.Add(after:=wb3.Worksheets("Sheet1"))&lt;BR /&gt;wsTemp.Name = "Temp"&lt;BR /&gt;&lt;BR /&gt;'generate bySubs sheets&lt;BR /&gt;Do While intFirstRow &amp;lt;= intLastRow&lt;BR /&gt;strTabName = wsPrintMap.Range("A" &amp;amp; intFirstRow).Value&lt;BR /&gt;Set wsTemplate = wb.Worksheets("Template_BySubs")&lt;BR /&gt;wsTemplate.Range("F2:F2") = strTabName&lt;BR /&gt;wsTemplate.Calculate&lt;BR /&gt;&lt;BR /&gt;wsTemplate.Cells.Copy&lt;BR /&gt;wsTemp.Range("A1").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;&lt;BR /&gt;Set wsPrint = wb.Worksheets("Print_BySubs")&lt;BR /&gt;wsPrint.Copy before:=wb3.Worksheets("Sheet1")&lt;BR /&gt;&lt;BR /&gt;Set ws3 = wb3.Worksheets("Sheet1").Previous&lt;BR /&gt;ws3.Name = wsPrintMap.Range("B" &amp;amp; intFirstRow).Value&lt;BR /&gt;&lt;BR /&gt;ws3.Range("G7:GT262").Value2 = wsTemp.Range("G7:GT262").Value2&lt;BR /&gt;ws3.Tab.ColorIndex = wsMain.Range("I16")&lt;BR /&gt;&lt;BR /&gt;intFirstRow = intFirstRow + 1&lt;BR /&gt;wsTemp.Cells.Clear&lt;BR /&gt;Loop&lt;/P&gt;
&lt;P&gt;' intLastRow = wsPrintMap.Range("C" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;' intFirstRow = 2&lt;BR /&gt;' Do While intFirstRow &amp;lt;= intLastRow&lt;BR /&gt;' strTabName = wsPrintMap.Range("C" &amp;amp; intFirstRow).Value&lt;BR /&gt;' Set wsTemplate = wb.Worksheets("Template_BySeg")&lt;BR /&gt;' wsTemplate.Range("F2:F2") = strTabName&lt;BR /&gt;' wsTemplate.Calculate&lt;BR /&gt;'&lt;BR /&gt;' wsTemplate.Cells.Copy&lt;BR /&gt;' wsTemp.Range("A1").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;'&lt;BR /&gt;' Set wsPrint = wb.Worksheets("Print_BySeg")&lt;BR /&gt;' wsPrint.Copy before:=wb3.Worksheets("Sheet1")&lt;BR /&gt;'&lt;BR /&gt;' Set ws3 = wb3.Worksheets("Sheet1").Previous&lt;BR /&gt;' ws3.Name = wsPrintMap.Range("D" &amp;amp; intFirstRow).Value&lt;BR /&gt;'&lt;BR /&gt;' ws3.Range("G7:GT232").Value2 = wsTemp.Range("G7:GT232").Value2&lt;BR /&gt;' ws3.Tab.ColorIndex = wsMain.Range("I17")&lt;BR /&gt;'&lt;BR /&gt;' intFirstRow = intFirstRow + 1&lt;BR /&gt;' wsTemp.Cells.Clear&lt;BR /&gt;' Loop&lt;/P&gt;
&lt;P&gt;wsTemp.Delete&lt;BR /&gt;'wb2.Close savechanges:=False&lt;BR /&gt;wb3.SaveAs Filename:=wb.Path &amp;amp; "\" &amp;amp; wsMain.Range("H8"), FileFormat:=50&lt;BR /&gt;wb3.Close&lt;/P&gt;
&lt;P&gt;End Sub&lt;BR /&gt;Private Sub Update()&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;'common variables declaration&lt;BR /&gt;Dim lngStartRow As Long&lt;BR /&gt;Dim lngLastRow As Long&lt;BR /&gt;'Dim wb As Workbook&lt;BR /&gt;'Dim wsTable As Worksheet&lt;BR /&gt;'Dim wsTemp As Worksheet&lt;BR /&gt;'Dim wsVersion As Worksheet&lt;BR /&gt;'Dim wsMain As Worksheet&lt;BR /&gt;Dim strVersion As String&lt;BR /&gt;'Dim wsMultiplier As Worksheet&lt;BR /&gt;'Dim wsModifier As Worksheet&lt;BR /&gt;'Dim lngLastRow_Temp As Long&lt;BR /&gt;On Error GoTo errHandler:&lt;/P&gt;
&lt;P&gt;'Set wb = ThisWorkbook&lt;BR /&gt;Application.Calculation = False&lt;BR /&gt;&lt;BR /&gt;'clear cells in temp table&lt;BR /&gt;'Set wsTemp = wb.Worksheets("temp")&lt;BR /&gt;wsTemp.Cells.Clear&lt;/P&gt;
&lt;P&gt;'get data from Table to temp table&lt;BR /&gt;lngStartRow = 1&lt;BR /&gt;'Set wsTable = wb.Worksheets("Rawdata")&lt;BR /&gt;lngLastRow = wsTable.Range("G" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;wsTable.Rows(lngStartRow &amp;amp; ":" &amp;amp; lngLastRow).Copy&lt;BR /&gt;wsTemp.Rows("1:1").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;&lt;BR /&gt;wsTemp.Range("J2:J2") = "=INDEX(Map_Date!$E:$E,MATCH(F2,Map_Date!$A:$A,0))"&lt;BR /&gt;&lt;BR /&gt;'lngLastRow_Temp = wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row&lt;BR /&gt;wsTemp.Range("J2:J2").Copy&lt;BR /&gt;wsTemp.Range("J2:J" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;&lt;BR /&gt;'convert cells to text&lt;BR /&gt;wsTemp.Range("M2") = "=TEXT(D2,""0"")"&lt;BR /&gt;wsTemp.Range("M2").Copy&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;wsTemp.Calculate&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsTemp.Range("D2:D" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsTemp.Columns("M:M").Clear&lt;BR /&gt;&lt;BR /&gt;'apply multiplier&lt;BR /&gt;'Set wsMultiplier = wb.Worksheets("Multiplier")&lt;BR /&gt;wsTemp.Range("M2") = "=IF(SUMIFS(Multiplier!D:D,Multiplier!B:B,temp!A2,Multiplier!C:C,temp!E2)=0,1,SUMIFS(Multiplier!D:D,Multiplier!B:B,temp!A2,Multiplier!C:C,temp!E2))*H2"&lt;BR /&gt;wsTemp.Range("M2").Copy&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;wsTemp.Calculate&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsTemp.Range("H2:H" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsTemp.Columns("M:M").Clear&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;'apply brand modifier&lt;BR /&gt;'Set wsModifier = wb.Worksheets("Brand_Modifier")&lt;BR /&gt;wsTemp.Range("M2") = "=IFERROR(INDEX(Brand_Modifier!B:B,MATCH(D2,Brand_Modifier!A:A,0)),D2)"&lt;BR /&gt;wsTemp.Range("M2").Copy&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormulas&lt;BR /&gt;wsTemp.Calculate&lt;BR /&gt;wsTemp.Range("M2:M" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsTemp.Range("D2:D" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsTemp.Columns("M:M").Clear&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Application.CalculateFullRebuild&lt;BR /&gt;&lt;BR /&gt;'Set wsVersion = wb.Worksheets("ACT")&lt;BR /&gt;wsVersion.Cells.Clear&lt;BR /&gt;&lt;BR /&gt;wsTemp.Range("A1:J" &amp;amp; wsTemp.Range("B" &amp;amp; Rows.Count).End(xlUp).Row).Copy&lt;BR /&gt;wsVersion.Range("A1:J" &amp;amp; wsTemp.Range("C" &amp;amp; Rows.Count).End(xlUp).Row).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;&lt;BR /&gt;wsTemp.Cells.Clear&lt;BR /&gt;&lt;BR /&gt;Application.Calculation = True&lt;BR /&gt;Exit Sub&lt;BR /&gt;errHandler:&lt;BR /&gt;MsgBox "Error encountered"&lt;BR /&gt;Application.Calculation = True&lt;BR /&gt;Exit Sub&lt;BR /&gt;&lt;BR /&gt;Application.ScreenUpdating = True&lt;BR /&gt;End Sub&lt;BR /&gt;Private Sub ByTrend()&lt;BR /&gt;'Dim wb As Workbook&lt;BR /&gt;'Dim wsMapSelection As Worksheet&lt;BR /&gt;'Dim wsTemplate As Worksheet&lt;BR /&gt;'Dim wsMain As Worksheet&lt;BR /&gt;'Dim wsSub As Worksheet&lt;BR /&gt;Dim strSubs As String&lt;BR /&gt;Dim lngCount As Long&lt;BR /&gt;&lt;BR /&gt;Application.ScreenUpdating = False&lt;BR /&gt;Application.Calculation = False&lt;BR /&gt;'Set wb = ThisWorkbook&lt;BR /&gt;'Set wsMapSelection = wb.Worksheets("Map_Selection")&lt;BR /&gt;'Set wsTemplate = wb.Worksheets("ByTrend")&lt;BR /&gt;'Set wsMain = wb.Worksheets("Main")&lt;BR /&gt;wsPositionMap.Cells.Calculate&lt;BR /&gt;&lt;BR /&gt;'print all subs in Map_Subs column B&lt;BR /&gt;lngCount = 1&lt;BR /&gt;'strSubs = "Subs"&lt;BR /&gt;strSubs = wsMapSelection.Range("B" &amp;amp; lngCount)&lt;BR /&gt;Do While strSubs &amp;lt;&amp;gt; ""&lt;BR /&gt;wsTemplate.Range("F2") = strSubs&lt;BR /&gt;Application.CalculateFullRebuild&lt;BR /&gt;Set wsSub = wb.Worksheets(strSubs)&lt;BR /&gt;wsSub.Cells.Clear&lt;BR /&gt;&lt;BR /&gt;' wsTemplate.Range(wsMain.Range("B21") &amp;amp; wsMain.Range("B19") &amp;amp; ":" &amp;amp; wsMain.Range("B22") &amp;amp; wsMain.Range("B20")).Copy&lt;BR /&gt;' wsSub.Range(wsMain.Range("B21") &amp;amp; wsMain.Range("B19") &amp;amp; ":" &amp;amp; wsMain.Range("B22") &amp;amp; wsMain.Range("B20")).PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;' wsSub.Range(wsMain.Range("B21") &amp;amp; wsMain.Range("B19") &amp;amp; ":" &amp;amp; wsMain.Range("B22") &amp;amp; wsMain.Range("B20")).PasteSpecial Paste:=xlPasteFormats&lt;BR /&gt;&lt;BR /&gt;wsTemplate.Range("A1:FT167").Copy&lt;BR /&gt;wsSub.Range("A1:FT167").PasteSpecial Paste:=xlPasteValues&lt;BR /&gt;wsSub.Range("A1:FT167").PasteSpecial Paste:=xlPasteFormats&lt;BR /&gt;&lt;BR /&gt;lngCount = lngCount + 1&lt;BR /&gt;strSubs = wsMapSelection.Range("B" &amp;amp; lngCount)&lt;BR /&gt;&lt;BR /&gt;Loop&lt;BR /&gt;Application.Calculation = True&lt;BR /&gt;Application.ScreenUpdating = True&lt;BR /&gt;End Sub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your help will be great appreciated!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 08:35:32 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Migrating-From-Excel-Macros-to-Qlik-Sense/m-p/1921288#M75841</guid>
      <dc:creator>Purushothaman</dc:creator>
      <dc:date>2022-04-22T08:35:32Z</dc:date>
    </item>
    <item>
      <title>Re: Migrating From Excel Macros to Qlik Sense</title>
      <link>https://community.qlik.com/t5/App-Development/Migrating-From-Excel-Macros-to-Qlik-Sense/m-p/1921473#M75853</link>
      <description>&lt;P&gt;Speaking for myself, this is too broad of a question for me to offer help. Perhaps someone else can decipher it.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you could explain what the code was accomplishing and had a more specific question like "how do I combine two fields into one" I could help. If you have such questions, please post sample data and expected outcome.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-Rob&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 14:25:34 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Migrating-From-Excel-Macros-to-Qlik-Sense/m-p/1921473#M75853</guid>
      <dc:creator>rwunderlich</dc:creator>
      <dc:date>2022-04-22T14:25:34Z</dc:date>
    </item>
  </channel>
</rss>

