Étiquette : create

  • Create Map Chart with Excel VBA

    Creating a map chart in Excel using VBA requires you to have geographical data (like country names, states, or postal codes) and a method to visualize it on a map. Below is a detailed VBA code that automates the creation of a Map Chart using your data, and I’ll explain each part of the process.

    Requirements:

    1. You need to have Excel 365 or Excel 2021, as Map Charts are a feature introduced in those versions.
    2. Your data should include geographical locations (such as country names, regions, or zip codes) and associated values you want to display on the map.

    VBA Code:

    Sub CreateMapChart()
        ' Define variables
        Dim ws As Worksheet
        Dim chartObj As ChartObject
        Dim rng As Range
        Dim chartData As Range   
        ' Set the worksheet
        Set ws = ThisWorkbook.Sheets("Sheet1") ' Change to your sheet name   
        ' Define the range of the data
        ' The first column should have geographical data, and the second column should have the corresponding values
        Set chartData = ws.Range("A1:B10") ' Change the range as needed   
        ' Create a new chart object
        Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=600, Top:=100, Height:=400)   
        ' Set the chart type to Map
        chartObj.Chart.ChartType = xlMap   
        ' Set the data for the chart
        chartObj.Chart.SetSourceData Source:=chartData   
        ' Adjust chart options
        With chartObj.Chart
            ' Set title
            .HasTitle = True
            .ChartTitle.Text = "Geographical Data Map"       
            ' Customize the map's appearance
            .MapChart.MapStyle = xlMapStyleShaded
            .MapChart.RegionType = xlMapRegionCountry      
            ' Add a color scale to represent the values
            .Axes(xlValue).MinimumScale = 0 ' Minimum value for color scale
            .Axes(xlValue).MaximumScale = 100 ' Maximum value for color scale      
            ' Format the data labels (optional)
            .ApplyDataLabels
        End With   
        ' Let the user know the map chart has been created
        MsgBox "Map chart created successfully!"
    End Sub

    Explanation of Code:

    1. Variables:
      • ws: Refers to the worksheet where the data is located.
      • chartObj: Represents the chart object to be created.
      • rng: A placeholder for the range of data, though it’s not used directly here.
      • chartData: The actual range where your geographical data and corresponding values are stored (e.g., countries and sales).
    2. Setting the Worksheet and Data Range:
      • Set ws = ThisWorkbook.Sheets(« Sheet1 »): Specifies the worksheet containing your data. Change « Sheet1 » to your actual worksheet name.
      • Set chartData = ws.Range(« A1:B10 »): Defines the range for your data. Column A contains geographical locations, and column B contains the corresponding values.
    3. Creating the Chart:
      • Set chartObj = ws.ChartObjects.Add(…): Adds a new chart to the worksheet, specifying the position and size of the chart.
      • chartObj.Chart.ChartType = xlMap: Sets the chart type to a Map Chart.
    4. Setting Data for the Chart:
      • chartObj.Chart.SetSourceData Source:=chartData: Assigns the defined data range to the map chart.
    5. Customizing the Map:
      • chartObj.Chart.HasTitle = True: Enables the chart title.
      • .ChartTitle.Text = « Geographical Data Map »: Sets the title of the map chart.
      • .MapChart.MapStyle = xlMapStyleShaded: Applies a shaded map style for visualization.
      • .MapChart.RegionType = xlMapRegionCountry: Specifies that the map regions are countries. This can be changed to regions, postal codes, etc., depending on your data.
      • .Axes(xlValue).MinimumScale = 0: Defines the minimum value for the color scale.
      • .Axes(xlValue).MaximumScale = 100: Defines the maximum value for the color scale.
    6. Adding Data Labels (Optional):
      • chartObj.Chart.ApplyDataLabels: This will display data labels for the values on the map.
    7. Finishing Up:
      • MsgBox « Map chart created successfully! »: A message box to inform the user that the map chart has been created.

    How to Use:

    1. Make sure your data is in the correct format: Column A for geographic names (like countries or regions) and Column B for values (like population, sales, etc.).
    2. Go to the VBA editor (press Alt + F11), create a new module, and paste the above code.
    3. Modify the worksheet name and data range to match your specific data.
    4. Run the macro by pressing F5 in the VBA editor.

    This will generate a Map Chart in Excel based on your geographical data, with colors representing the values in the second column.

  • Create Kanban Board with Excel VBA

    To create a Kanban board in Excel using VBA, you’ll need to set up different columns representing the stages of your workflow (e.g., « To Do, » « In Progress, » and « Done »). Each task will be represented by a row or a cell, and you can drag tasks between columns as they progress.

    Here’s a step-by-step guide with detailed explanations for creating a simple Kanban board:

    Step 1: Set up your Excel Sheet Layout

    1. Create Columns: Set up columns for different stages of your Kanban process, for example:
      • Column A: « Task Name »
      • Column B: « To Do »
      • Column C: « In Progress »
      • Column D: « Done »
    2. Task Data: Each row will represent a task, and tasks will move between the columns based on their progress.
    3. Cell Formatting: You can format the columns with background colors to differentiate the stages.

    Step 2: Set Up a VBA Module to Create Kanban Logic

    Below is a detailed VBA code to create a simple Kanban board with the ability to move tasks between columns by clicking a button.

    Sub CreateKanbanBoard()
        ' Set up initial columns
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets.Add
        ws.Name = "Kanban Board"   
        ' Set up the Kanban board headers
        ws.Cells(1, 1).Value = "Task Name"
        ws.Cells(1, 2).Value = "To Do"
        ws.Cells(1, 3).Value = "In Progress"
        ws.Cells(1, 4).Value = "Done"   
        ' Formatting headers
        ws.Rows(1).Font.Bold = True
        ws.Rows(1).Interior.Color = RGB(0, 102, 204) ' Blue background for headers
        ws.Rows(1).Font.Color = RGB(255, 255, 255) ' White font color
        ' Format columns for better visibility
        ws.Columns("A:D").AutoFit
        ws.Columns("A:A").ColumnWidth = 20
        ws.Columns("B:D").ColumnWidth = 15
        ' Example Tasks (to be added in To Do section)
        ws.Cells(2, 1).Value = "Task 1"
        ws.Cells(3, 1).Value = "Task 2"
        ws.Cells(4, 1).Value = "Task 3"
        ' Insert buttons for moving tasks
        InsertKanbanButtons ws
    End Sub
    
    Sub InsertKanbanButtons(ws As Worksheet)
        ' Create a button to move tasks between columns   
        ' Button to move Task to "In Progress"
        Dim btnInProgress As Button
        Set btnInProgress = ws.Buttons.Add(Left:=ws.Cells(2, 2).Left, Top:=ws.Cells(2, 2).Top, Width:=100, Height:=30)
        btnInProgress.OnAction = "MoveToInProgress"
        btnInProgress.Caption = "Move to In Progress"   
        ' Button to move Task to "Done"
        Dim btnDone As Button
        Set btnDone = ws.Buttons.Add(Left:=ws.Cells(2, 3).Left, Top:=ws.Cells(2, 3).Top, Width:=100, Height:=30)
        btnDone.OnAction = "MoveToDone"
        btnDone.Caption = "Move to Done"   
        ' Button to move Task back to "To Do"
        Dim btnBackToDo As Button
        Set btnBackToDo = ws.Buttons.Add(Left:=ws.Cells(2, 4).Left, Top:=ws.Cells(2, 4).Top, Width:=100, Height:=30)
        btnBackToDo.OnAction = "MoveBackToDo"
        btnBackToDo.Caption = "Move Back to To Do"
    End Sub
    
    Sub MoveToInProgress()
        ' Move the selected task from "To Do" to "In Progress"
        Dim selectedCell As Range
        Set selectedCell = Selection
        If selectedCell.Column = 2 And selectedCell.Value <> "" Then
            selectedCell.Offset(0, 1).Value = selectedCell.Value
            selectedCell.ClearContents
        End If
    End Sub
    
    Sub MoveToDone()
        ' Move the selected task from "In Progress" to "Done"
        Dim selectedCell As Range
        Set selectedCell = Selection
        If selectedCell.Column = 3 And selectedCell.Value <> "" Then
            selectedCell.Offset(0, 1).Value = selectedCell.Value
            selectedCell.ClearContents
        End If
    End Sub
    
    Sub MoveBackToDo()
        ' Move the selected task from "Done" to "To Do"
        Dim selectedCell As Range
        Set selectedCell = Selection
        If selectedCell.Column = 4 And selectedCell.Value <> "" Then
            selectedCell.Offset(0, -3).Value = selectedCell.Value
            selectedCell.ClearContents
        End If
    End Sub

    Step 3: Explanation of the Code

    1. CreateKanbanBoard:
      • This subroutine creates the worksheet for your Kanban board, sets up the headers (« Task Name, » « To Do, » « In Progress, » and « Done »), and adds example tasks under the « To Do » column.
      • It also formats the headers and columns for better visibility.
    2. InsertKanbanButtons:
      • This subroutine adds buttons to each task in the « To Do, » « In Progress, » and « Done » columns to move tasks between the columns.
      • Each button is linked to a specific subroutine (MoveToInProgress, MoveToDone, MoveBackToDo) to move tasks based on their progress.
    3. MoveToInProgress, MoveToDone, and MoveBackToDo:
      • These subroutines handle the movement of tasks when a button is clicked. They check if the task is in the correct column and move it to the next one while clearing the original column.

    Step 4: How to Use the Kanban Board

    1. When you run the CreateKanbanBoard macro, a new sheet will be created with your Kanban board.
    2. Add or modify tasks in the « To Do » column.
    3. Click the buttons to move tasks to « In Progress » or « Done, » or move them back to « To Do » as needed.

    Step 5: Customization Options

    • Colors and Formatting: Customize the colors and formatting of the task cells and buttons to suit your preferences.
    • Additional Columns: You can add additional columns like « Blocked » or « Review » to represent different stages in your workflow.
    • Advanced Features: Consider adding features like filtering tasks, using checkboxes for task completion, or allowing users to add notes for each task.

    This is a simple Kanban board setup, but you can expand it by integrating more advanced features, such as due dates, priority labels, or task owners.

  • Create Interactive Heat Maps For Data Visualization with Excel VBA

    To create interactive heat maps for data visualization using Excel VBA, follow these steps. I’ll guide you through the process, explaining the code in detail.

    Step 1: Preparing Data

    Assume that your data is in a range (e.g., A1:D10), where each cell represents a data point. The goal is to use color coding to represent values in this range, with higher values being displayed in a more intense color and lower values in a lighter color.

    Step 2: Define the VBA Code

    Below is a detailed VBA code that will generate an interactive heat map based on the values in a specified range. It uses conditional formatting to apply colors based on the value in each cell.

    Sub CreateHeatMap()
        Dim ws As Worksheet
        Dim dataRange As Range
        Dim minValue As Double
        Dim maxValue As Double
        Dim cell As Range
        Dim colorScale As ColorScale   
        ' Define the worksheet and the data range
        Set ws = ThisWorkbook.Sheets("Sheet1")  ' Change "Sheet1" to your actual sheet name
        Set dataRange = ws.Range("A1:D10")     ' Adjust the range according to your data   
        ' Find the minimum and maximum values in the range
        minValue = Application.WorksheetFunction.Min(dataRange)
        maxValue = Application.WorksheetFunction.Max(dataRange)   
        ' Clear any previous conditional formats
        dataRange.FormatConditions.Delete   
        ' Apply a 3-color scale conditional format
        With dataRange.FormatConditions.AddColorScale(3)
            ' Set the color for the lowest value (min)
            With .ColorScaleCriteria(1)
                .Type = xlConditionValueNumber
                .Value = minValue
                .FormatColor.Color = RGB(255, 255, 255)  ' Light color (white)
            End With       
            ' Set the color for the middle value (mid)
            With .ColorScaleCriteria(2)
                .Type = xlConditionValueNumber
                .Value = (minValue + maxValue) / 2
                .FormatColor.Color = RGB(255, 255, 0)  ' Yellow (mid range)
            End With       
            ' Set the color for the highest value (max)
            With .ColorScaleCriteria(3)
                .Type = xlConditionValueNumber
                .Value = maxValue
                .FormatColor.Color = RGB(255, 0, 0)  ' Red (high value)
            End With
        End With   
        ' Create Interactivity: Add a drop-down to change color scale dynamically
        Call AddInteractivity(ws, dataRange)
    End Sub
    
    Sub AddInteractivity(ws As Worksheet, dataRange As Range)
        ' Create a ComboBox for selecting color scale type
        Dim comboBox As Object
        Set comboBox = ws.Shapes.AddFormControl(xlDropDown, 10, 10, 150, 20) ' Position and size
        With comboBox.ControlFormat
            .AddItem "3-Color Scale"
            .AddItem "2-Color Scale"
            .AddItem "No Color Scale"
            .ListIndex = 1 ' Default to 3-Color Scale
        End With   
        ' Add event handler for ComboBox change
        ws.OnCalculate = "ChangeColorScale"
    End Sub
    
    Sub ChangeColorScale()
        Dim comboBox As Object
        Set comboBox = ActiveSheet.Shapes(1).ControlFormat   
        ' Get selected color scale option
        Dim selection As Integer
        selection = comboBox.ListIndex   
        ' Reapply the corresponding color scale based on selection
        Select Case selection
            Case 1 ' 3-Color Scale
                Call CreateHeatMap
            Case 2 ' 2-Color Scale (simplified version)
                Call ApplyTwoColorScale
            Case 3 ' No Color Scale
                Call RemoveColorScale
        End Select
    End Sub
    
    Sub ApplyTwoColorScale()
        Dim ws As Worksheet
        Dim dataRange As Range
        Dim minValue As Double
        Dim maxValue As Double   
        ' Define the worksheet and the data range
        Set ws = ThisWorkbook.Sheets("Sheet1")
        Set dataRange = ws.Range("A1:D10")
        ' Find the minimum and maximum values
        minValue = Application.WorksheetFunction.Min(dataRange)
        maxValue = Application.WorksheetFunction.Max(dataRange)   
        ' Clear any previous conditional formats
        dataRange.FormatConditions.Delete   
        ' Apply a 2-color scale conditional format
        With dataRange.FormatConditions.AddColorScale(2)
            ' Set the color for the lowest value (min)
            With .ColorScaleCriteria(1)
                .Type = xlConditionValueNumber
                .Value = minValue
                .FormatColor.Color = RGB(255, 255, 255)  ' White (low value)
            End With       
            ' Set the color for the highest value (max)
            With .ColorScaleCriteria(2)
                .Type = xlConditionValueNumber
                .Value = maxValue
                .FormatColor.Color = RGB(255, 0, 0)  ' Red (high value)
            End With
        End With
    End Sub
    
    Sub RemoveColorScale()
        Dim ws As Worksheet
        Dim dataRange As Range   
        ' Define the worksheet and the data range
        Set ws = ThisWorkbook.Sheets("Sheet1")
        Set dataRange = ws.Range("A1:D10")   
        ' Clear any previous conditional formats
        dataRange.FormatConditions.Delete
    End Sub

    Step 3: Explanation of the Code

    1. Main Function – CreateHeatMap
    • Worksheet and Range Setup: The worksheet (ws) and data range (dataRange) are defined, targeting the specific cells with your data.
    • Finding Min and Max Values: The minimum and maximum values in the data range are determined to set the boundaries for the color scale.
    • Conditional Formatting: The FormatConditions.AddColorScale method is used to apply a color scale. The code applies a 3-color scale with:
      • White for the minimum value.
      • Yellow for the middle value.
      • Red for the maximum value.
    1. Interactivity with ComboBox – AddInteractivity
    • A ComboBox is added to the worksheet to allow the user to select between different color scale options.
    • The ComboBox provides three options:
      1. 3-Color Scale (default).
      2. 2-Color Scale (simplified).
      3. No Color Scale (removes color formatting).
    • The OnCalculate event triggers when a change is made to the ComboBox, calling the ChangeColorScale procedure.
    1. ChangeColorScale Procedure
    • This procedure checks which option the user has selected from the ComboBox and applies the corresponding color scale (or removes it).
    1. ApplyTwoColorScale & RemoveColorScale
    • The ApplyTwoColorScale function simplifies the color scale to only two colors: white for the minimum value and red for the maximum value.
    • The RemoveColorScale function deletes any existing color formatting.

    Step 4: Running the Code

    • Run the CreateHeatMap procedure to initialize the heat map with interactive options.
    • The user can choose between different color scales through the ComboBox, providing an interactive experience for data visualization.

    Conclusion:

    This code enables the creation of an interactive heat map with Excel VBA, allowing users to dynamically change the color scale of data visualization based on their preferences. By using conditional formatting and VBA interactivity, you can enhance your data presentation and allow for a customizable view of the data range.

  • Create Interactive Dashboard with UserForms, Excel VBA

    Creating an interactive dashboard in Excel using VBA with UserForms can be a powerful way to present data, enabling user interaction and dynamic visualizations. Below is a detailed step-by-step guide and VBA code that shows how to build such a dashboard.

    Steps Overview:

    1. Prepare Your Excel Data: Ensure your data is organized in a structured format, such as a table or range, to make it easier for the VBA code to access and process it.
    2. Create the UserForm: The UserForm is where users will interact with the dashboard. You can add buttons, combo boxes, labels, etc., to allow users to filter or manipulate the data.
    3. Add VBA Code: The code behind the UserForm will handle data filtering, chart creation, and updates based on user interactions.
    4. Build Charts Dynamically: Based on user input, the VBA code will update charts, pivot tables, and other elements on the dashboard.

    Step-by-Step Example

    1. Prepare the Data:

    Let’s assume you have sales data in a worksheet like this:

    Date Region Sales
    01/01/2025 North 200
    01/01/2025 South 150
    01/02/2025 North 250
    01/02/2025 South 180
    1. Create the UserForm:
    • Go to the VBA Editor by pressing Alt + F11.
    • Insert a new UserForm:
      • In the Project Explorer, right-click and select Insert > UserForm.
    • Add the following controls:
      • ComboBox (cmbRegion) for selecting the region.
      • CommandButton (cmdShowData) to show the filtered data.
      • ChartObject to display the chart dynamically.
      • Label (lblTitle) for the title of the dashboard.
    1. VBA Code:
    ' Module code for initializing UserForm and generating chart
    Sub ShowDashboard()
        ' Create and show the UserForm
        UserForm1.Show
    End Sub
    
    ' Code behind UserForm
    Private Sub UserForm_Initialize()
        ' Populate ComboBox with unique regions
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets("SalesData") ' Modify the sheet name if needed   
        Dim regionRange As Range
        Set regionRange = ws.Range("B2:B" & ws.Cells(ws.Rows.Count, 2).End(xlUp).Row) ' Adjust for your data range
        Dim cell As Range
        Dim regionList As Collection
        Set regionList = New Collection
        On Error Resume Next
        For Each cell In regionRange
            regionList.Add cell.Value, CStr(cell.Value)
        Next cell
        On Error GoTo 0
        ' Fill the ComboBox with unique region names
        For Each Item In regionList
            cmbRegion.AddItem Item
        Next Item
        ' Set default selection
        cmbRegion.ListIndex = 0
    End Sub
    
    Private Sub cmdShowData_Click()
        ' Filter data based on ComboBox selection
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets("SalesData")   
        Dim selectedRegion As String
        selectedRegion = cmbRegion.Value
        Dim dataRange As Range
        Set dataRange = ws.Range("A1:C" & ws.Cells(ws.Rows.Count, 1).End(xlUp).Row) ' Data range
        ' Clear existing chart
        On Error Resume Next
        Me.ChartObjects("SalesChart").Delete
        On Error GoTo 0   
        ' Filter data and create chart dynamically
        Dim filteredData As Range
        Set filteredData = ws.Range("A1:C1").Resize(1, 3) ' Header row
        Dim r As Range
        For Each r In dataRange.Rows
            If r.Cells(2).Value = selectedRegion Then
                Set filteredData = Union(filteredData, r)
            End If
        Next r   
        ' Create a new chart based on filtered data
        Dim chart As ChartObject
        Set chart = Me.ChartObjects.Add(Left:=100, Width:=400, Top:=200, Height:=300)
        chart.Name = "SalesChart"
        chart.Chart.SetSourceData Source:=filteredData
        chart.Chart.ChartType = xlColumnClustered
        chart.Chart.HasTitle = True
        chart.Chart.ChartTitle.Text = "Sales Data for " & selectedRegion   
        ' Update title
        lblTitle.Caption = "Sales Dashboard - " & selectedRegion
    End Sub
    1. Explanation of Code:
    • Initialize the UserForm:
      • The UserForm_Initialize subroutine populates the ComboBox with unique region names from the dataset.
      • It uses a Collection to store unique region values to avoid duplicates.
    • Handling User Interaction:
      • When the user selects a region and clicks the Show Data button (cmdShowData), the cmdShowData_Click subroutine is triggered.
      • This subroutine filters the data based on the selected region from the ComboBox.
      • It creates a new chart dynamically, setting its data source to the filtered data and adjusting its type (e.g., a clustered column chart).
      • It updates the chart’s title and the dashboard title accordingly.
    • Dynamic Chart Creation:
      • The chart is created using ChartObjects.Add and then customized (size, title, and type).
      • The data range is adjusted dynamically based on user selection.
    • UserForm Layout:
      • The ComboBox allows the user to select a region.
      • The CommandButton triggers the display of the filtered data and chart.
      • The Label (lblTitle) shows the title, which updates when a region is selected.
    1. Final Notes:
    • Customizing the Data: You can modify the data filtering logic in cmdShowData_Click to apply additional filters, such as date ranges or other criteria.
    • Multiple Charts: You can add multiple chart types or other visualizations by creating new ChartObjects or PivotTables.
    • Improving the Layout: You can further enhance the UserForm with additional controls like slicers, more ComboBoxes, or data input fields.
    1. Running the Dashboard:
    • Once the code is in place, simply run the ShowDashboard macro (you can assign it to a button or run it manually) to open the UserForm. The dashboard will update dynamically based on user inputs.

    This approach provides a simple yet flexible way to create an interactive Excel dashboard with VBA. You can expand it by adding more features like advanced filtering, multiple charts, or even incorporating external data sources.

  • Create Interactive Dashboard with Excel VBA

    Creating an interactive dashboard in Excel using VBA requires a systematic approach. Below is a detailed explanation of each step, along with sample code for building the dashboard:

    Step 1: Prepare Your Data

    Before creating the dashboard, you must first prepare the data that will be used for the analysis. Ensure that your data is organized in tables or ranges that Excel can reference.

    • Organize data into structured tables: You might have sales data, performance metrics, customer data, or other relevant data for your dashboard.
    • Ensure data is clean: Remove duplicates, check for missing values, and ensure consistency.

    For example, let’s assume you have the following columns:

    • Date (Month/Year)
    • Sales (Amount)
    • Region (Region name)
    • Product Category (Type of product)

    Step 2: Design Your Dashboard

    Designing the layout of your dashboard involves determining the key metrics and charts you want to display.

    • Decide on key metrics: These could be sales trends, regional performance, product category performance, etc.
    • Use Excel’s built-in charts: Create various charts such as bar charts, line graphs, or pie charts.
    • Make it interactive: Plan for filters, slicers, and drop-down menus to allow users to interact with the dashboard.

    For example, a dashboard might include:

    • A slicer for selecting a specific region
    • A line chart to show sales trends over time
    • A pie chart to show the distribution of sales by product category
    • A table summarizing the overall performance

    Step 3: Write VBA Code

    Now, let’s write VBA code to enhance the interactivity and automate the dashboard’s functionality.

    Here’s an example VBA code that dynamically updates the dashboard elements based on user interaction.

    Sub CreateInteractiveDashboard()
        Dim wsDashboard As Worksheet
        Set wsDashboard = ThisWorkbook.Sheets("Dashboard")   
        ' Clear previous data and charts
        wsDashboard.Cells.Clear   
        ' Set up the basic dashboard layout (titles, labels, etc.)
        wsDashboard.Range("A1").Value = "Sales Dashboard"
        wsDashboard.Range("A2").Value = "Select Region:"   
        ' Add dropdown for region selection
        Dim regionList As Range
        Set regionList = ThisWorkbook.Sheets("Data").Range("B2:B100") ' Assume regions are in column B
        With wsDashboard.DropDowns.Add(Left:=100, Top:=30, Width:=150, Height:=15)
            .ListFillRange = regionList.Address
            .OnAction = "UpdateDashboard" ' Macro to update the dashboard based on region selection
        End With
        ' Add initial charts and elements
        Call CreateInitialCharts(wsDashboard)
    End Sub
    
    Sub CreateInitialCharts(wsDashboard As Worksheet)
        ' Create a sample line chart for sales over time
        Dim chartObj As ChartObject
        Set chartObj = wsDashboard.ChartObjects.Add(Left:=50, Top:=100, Width:=400, Height:=300)
        chartObj.Chart.SetSourceData Source:=ThisWorkbook.Sheets("Data").Range("A2:B100") ' Assume data is in column A and B
        chartObj.Chart.ChartType = xlLine
        chartObj.Chart.HasTitle = True
        chartObj.Chart.ChartTitle.Text = "Sales Trends"
    End Sub
    
    Sub UpdateDashboard()
        Dim selectedRegion As String
        selectedRegion = ThisWorkbook.Sheets("Dashboard").DropDowns(1).List( _
            ThisWorkbook.Sheets("Dashboard").DropDowns(1).ListIndex)   
        ' Update data and charts based on the selected region
        Dim filteredData As Range
        Set filteredData = FilterDataByRegion(selectedRegion)  
        ' Update charts with filtered data
        ' (You can add more code here to filter data dynamically and update each chart)
    End Sub
    
    Function FilterDataByRegion(region As String) As Range
        ' Filter the data based on region selection
        Dim dataRange As Range
        Set dataRange = ThisWorkbook.Sheets("Data").Range("A2:D100") ' Sample data range
        dataRange.AutoFilter Field:=2, Criteria1:=region
        Set FilterDataByRegion = dataRange.SpecialCells(xlCellTypeVisible)
    End Function

    Explanation of the Code:

    1. CreateInteractiveDashboard: Initializes the dashboard, sets the title, and creates a dropdown to select regions.
    2. CreateInitialCharts: Creates an initial line chart showing sales trends.
    3. UpdateDashboard: A macro that runs when a user selects a region from the dropdown. It filters the data and updates the dashboard dynamically.
    4. FilterDataByRegion: Filters the data based on the selected region and returns the visible (filtered) data.

    Step 4: Assign Macros to Controls

    • Link the dropdown: You need to assign the macro UpdateDashboard to the dropdown list. This will trigger the update of the dashboard when the user selects a region.
    • Add other controls: You might add buttons, sliders, or checkboxes to filter data further, update charts, or reset the dashboard.

    For example, you could add a button to reset the dashboard:

    Sub ResetDashboard()
        ' Reset any filters and charts to show all data
        ThisWorkbook.Sheets("Data").AutoFilterMode = False
        Call CreateInteractiveDashboard ' Recreate the dashboard
    End Sub

    Step 5: Test the Dashboard

    After writing the VBA code and setting up all controls:

    • Test the functionality: Make sure the dropdowns, filters, and buttons are working as expected.
    • Check for errors: Ensure that the code does not produce errors when interacting with different parts of the dashboard.
    • Optimize performance: If the data set is large, consider using more advanced filtering techniques or limiting the amount of data displayed.

    Additional Tips:

    • Data validation: Ensure users can only select valid values in dropdowns or filters.
    • Interactive charts: Use VBA to dynamically update chart data ranges.
    • User-friendly interface: Arrange all dashboard components in a clean and easy-to-navigate layout.
  • Create Input Mask in UserForm with Excel VBA

    To create an input mask in a UserForm using Excel VBA, the goal is to ensure that the user enters data in a specific format (e.g., phone numbers, dates, etc.). Below is a detailed step-by-step guide on how to implement this in Excel VBA.

    Step 1: Insert a UserForm

    1. Open your Excel workbook.
    2. Press Alt + F11 to open the Visual Basic for Applications (VBA) editor.
    3. In the VBA editor, click Insert in the menu and choose UserForm. This will create a new UserForm where you can add controls.

    Step 2: Design the UserForm

    1. In the newly created UserForm, you can add controls such as TextBox, CommandButton, Label, etc.
    2. To add an input mask, you’ll need a TextBox where the user will input their data (e.g., a phone number or date).
    3. You can also add a CommandButton to submit or process the data entered in the UserForm.

    For example, for a phone number input mask, you could design it like this:

    • Place a Label that says « Enter Phone Number: »
    • Place a TextBox to allow users to enter the phone number.
    • Place a CommandButton labeled « Submit » to process the input.

    Step 3: Add Code to the UserForm

    To create an input mask, you’ll use the TextBox’s KeyPress or Change event to restrict the input and format it correctly. Below is an example of a phone number input mask, where the format should be (XXX) XXX-XXXX.

    Code for the Phone Number Input Mask

    In the VBA editor:

    1. Right-click on the TextBox you placed for phone number input.
    2. Choose View Code and enter the following VBA code:
    Private Sub TextBox1_Change()
        Dim Text As String
        Text = TextBox1.Text
        ' Remove non-numeric characters
        Text = Replace(Text, "(", "")
        Text = Replace(Text, ")", "")
        Text = Replace(Text, "-", "")
        Text = Replace(Text, " ", "")
        ' Add input mask: (XXX) XXX-XXXX
        If Len(Text) <= 3 Then
            TextBox1.Text = "(" & Text
        ElseIf Len(Text) <= 6 Then
            TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, Len(Text))
        Else
            TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, 3) & "-" & Mid(Text, 7, 4)
        End If
        ' Ensure cursor stays at the correct position
        TextBox1.SelStart = Len(TextBox1.Text)
    End Sub

    Explanation of the Code:

    • The TextBox1_Change event triggers every time the user types something in the TextBox1.
    • We remove all non-numeric characters (i.e., (, ), -, and spaces) using the Replace function.
    • We then format the text as the user types, adding parentheses and a hyphen at the appropriate places.
    • Finally, the SelStart property ensures that the cursor stays at the end of the text box as the user types.

    Step 4: Test the UserForm

    1. Close the code window and return to the UserForm.
    2. To test the form, press F5 in the VBA editor to run the form.
    3. Try typing in the TextBox. The input will automatically be formatted into the (XXX) XXX-XXXX mask.

    Example Output:

    When testing the form, as the user types the phone number, the TextBox will automatically adjust to show the format like this:

    • If the user types 1234567890, it will appear as (123) 456-7890.
    • If they type 1, it will appear as (1.
    • As more digits are added, it continues to format them correctly.

    Further Enhancements:

    • You can modify the input mask for other types of data, such as credit card numbers, social security numbers, or dates, by adjusting the formatting logic in the TextBox1_Change event.
    • You can also add validation to ensure that the user enters a valid number of digits (e.g., 10 digits for a phone number).
  • Create Image Viewer in UserForm with Excel VBA

    Step 1: Set up the UserForm

    1. Create a new UserForm:
      • In the VBA editor, go to Insert > UserForm to add a new UserForm to your project.
      • Rename the UserForm to ImageViewerForm (optional but recommended for clarity).
    2. Add Controls to the UserForm:
      • Open the Toolbox (if it’s not visible, go to View > Toolbox).
      • From the toolbox, you will need:
        • Image Control: To display the image.
        • CommandButton: To load the image.
        • TextBox: (optional) To display the file path of the selected image.
        • Label: To display a caption or additional info (optional).

    Here’s how to arrange them:

      • Add a CommandButton and rename it to cmdLoadImage (for loading the image).
      • Add an Image control and rename it to imgDisplay (this will be used to display the image).
      • Optionally, add a TextBox and Label for displaying the image path.

    Step 2: Write the VBA Code

    Now, let’s write the VBA code to make this Image Viewer work.

    1. Load the Image: The first thing you’ll do is create an event to load the image into the Image control when you click the Load Image button.
    Private Sub cmdLoadImage_Click()
        Dim imgPath As String
        ' Open file dialog to select an image
        With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Select an Image"
            .Filters.Clear
            .Filters.Add "Image Files", "*.jpg;*.jpeg;*.png;*.gif;*.bmp;*.tiff"
            If .Show = -1 Then ' If a file is selected
                imgPath = .SelectedItems(1) ' Get the image path
                ' Set the image to the Image control
                imgDisplay.Picture = LoadPicture(imgPath)
                ' Optionally, display the path in the TextBox
                TextBox1.Value = imgPath
            End If
        End With
    End Sub

    Explanation:

      • The FileDialog allows the user to select an image file. It filters to show only common image formats.
      • Once an image is selected, the path is passed to LoadPicture, which loads the image into the imgDisplay control.
      • The TextBox1 displays the path of the selected image, so users can see where the image is located.

    2. Resize the Image (optional): You may want to resize the image to fit within the Image control. You can use the following code to resize the image to the size of the control:

    Private Sub imgDisplay_AfterUpdate()
        ' Ensure the image fits within the Image control
        With imgDisplay
            .ShapeRange.LockAspectRatio = msoFalse ' Unlock aspect ratio for resizing
            .ShapeRange.Width = imgDisplay.Width
            .ShapeRange.Height = imgDisplay.Height
        End With
    End Sub

    Step 3: Additional Features (Optional)

    • Adding a Caption: You can add a Label control to display a caption or additional info about the image.
    Private Sub cmdLoadImage_Click()
        ' After selecting the image
        Label1.Caption = "Displaying: " & imgPath ' Show image file name
    End Sub
    • Clear the Image: Add a button to clear the displayed image.
    Private Sub cmdClearImage_Click()
        imgDisplay.Picture = Nothing ' Clear the picture from the Image control
        TextBox1.Value = "" ' Clear the path from the TextBox
        Label1.Caption = "" ' Clear the label
    End Sub

    Final UserForm Code

    Here’s the complete code for the UserForm:

    Private Sub cmdLoadImage_Click()
        Dim imgPath As String
        ' Open file dialog to select an image
        With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Select an Image"
            .Filters.Clear
            .Filters.Add "Image Files", "*.jpg;*.jpeg;*.png;*.gif;*.bmp;*.tiff"
            If .Show = -1 Then
                imgPath = .SelectedItems(1) ' Get the image path
                imgDisplay.Picture = LoadPicture(imgPath) ' Display the image
                TextBox1.Value = imgPath ' Display path in TextBox
                Label1.Caption = "Displaying: " & Dir(imgPath) ' Show image file name in label
            End If
        End With
    End Sub
    
    Private Sub cmdClearImage_Click()
        imgDisplay.Picture = Nothing ' Clear image
        TextBox1.Value = "" ' Clear path
        Label1.Caption = "" ' Clear label
    End Sub
    
    Private Sub imgDisplay_AfterUpdate()
        ' Resize image to fit control
        With imgDisplay
            .ShapeRange.LockAspectRatio = msoFalse
            .ShapeRange.Width = imgDisplay.Width
            .ShapeRange.Height = imgDisplay.Height
        End With
    End Sub

    Explanation of Code:

    1. cmdLoadImage_Click: This subroutine opens a file dialog for the user to select an image file. Once selected, the image is displayed in the imgDisplay control, and the file path is displayed in the TextBox1. The Label1 caption shows the image’s file name.
    2. cmdClearImage_Click: This subroutine clears the image from the Image control, as well as the path in the TextBox1 and the caption in Label1.
    3. imgDisplay_AfterUpdate: This event ensures the image is resized to fit the Image control, though this part may be adjusted based on specific needs for image handling.

    Output:

    • The UserForm will display an image viewer with an image control that can show images.
    • A button will allow users to load an image, and another button can clear the image.
    • The image file path and file name will be shown in a TextBox and Label.

    This approach gives you a flexible and dynamic image viewer inside an Excel UserForm, where the user can load and clear images easily.

  • Create Hyperlinks with Excel VBA

    To create hyperlinks in Excel using VBA, you can use the Hyperlinks.Add method. Below is a detailed code that demonstrates how to create hyperlinks programmatically in Excel using VBA, along with an explanation of each part of the code.

    VBA Code to Create Hyperlinks

    Sub CreateHyperlinks()
        Dim ws As Worksheet
        Dim cell As Range
        Dim hyperlinkText As String
        Dim hyperlinkAddress As String   
        ' Set the worksheet where hyperlinks will be created
        Set ws = ThisWorkbook.Sheets("Sheet1")   
        ' Loop through the range where you want to create hyperlinks (e.g., A2:A10)
        For Each cell In ws.Range("A2:A10")
            ' Check if the cell has a value (i.e., should create a hyperlink only if there is text)
            If cell.Value <> "" Then
                ' Define the text that will be displayed as a hyperlink
                hyperlinkText = cell.Value           
                ' Define the address of the hyperlink (this can be any URL or file path)
                ' Here we assume the hyperlinks point to "http://www.example.com/" and the text from the cell is appended to it.
                hyperlinkAddress = "http://www.example.com/" & cell.Value           
                ' Add the hyperlink to the current cell
                ws.Hyperlinks.Add _
                    Anchor:=cell, _
                    Address:=hyperlinkAddress, _
                    TextToDisplay:=hyperlinkText
            End If
        Next cell
    End Sub

    Detailed Explanation

    1. Setting the Worksheet:
      • Set ws = ThisWorkbook.Sheets(« Sheet1 »): This line sets the variable ws to refer to the worksheet « Sheet1 » of the current workbook. You can modify « Sheet1 » to the actual name of the sheet where you want the hyperlinks to be created.
    2. Defining the Range:
      • For Each cell In ws.Range(« A2:A10 »): This line specifies the range of cells (A2:A10) where the code will create hyperlinks. You can adjust this range to fit your needs.
    3. Checking for Empty Cells:
      • If cell.Value <> «  » Then: Before creating a hyperlink, the code checks whether the cell contains any value. This ensures that no hyperlinks are created for empty cells.
    4. Defining Hyperlink Text and Address:
      • hyperlinkText = cell.Value: The hyperlink text displayed in the cell is set to the value in the current cell (cell.Value).
      • hyperlinkAddress = « http://www.example.com/ » & cell.Value: This line constructs the full URL for the hyperlink by appending the cell value to a base URL. For example, if the cell contains the word « VBA », the final hyperlink address will be http://www.example.com/VBA.
    5. Adding the Hyperlink:
      • ws.Hyperlinks.Add _: The Hyperlinks.Add method is used to create a hyperlink. The method’s parameters are:
        • Anchor:=cell: This specifies the cell where the hyperlink will be added.
        • Address:=hyperlinkAddress: This is the destination URL or file path of the hyperlink.
        • TextToDisplay:=hyperlinkText: This is the text that will be displayed as the hyperlink.
    6. Looping Through the Range:
      • The For Each loop iterates through each cell in the specified range (A2:A10). If the cell contains a value, a hyperlink will be created in that cell.

    Customization Options:

    • Different Range: You can adjust the range (e.g., ws.Range(« A2:A10 »)) to fit the actual range where you want to create hyperlinks.
    • Hyperlink Address: The code constructs the hyperlink address by concatenating the cell value with a base URL (« http://www.example.com/ »). You can customize this to create links to different websites, local files, or even internal Excel ranges.
    • Text to Display: The hyperlink text is taken directly from the cell value. You can customize this by setting hyperlinkText to any text or value you prefer.

    This VBA code is a flexible and dynamic way to create hyperlinks in Excel based on the values in a specified range of cells.

  • Create Histogram with Excel VBA

    Objective:

    This VBA code will create a histogram based on a range of data in Excel. The histogram will be created by using Excel’s built-in chart functionality.

    VBA Code:

    Sub CreateHistogram()
        Dim dataRange As Range
        Dim chartObj As ChartObject
        Dim binRange As Range
        Dim chartTitle As String
        Dim xAxisTitle As String
        Dim yAxisTitle As String
        ' Set the range of data for the histogram
        Set dataRange = Range("A2:A20") ' Modify this range based on your data   
        ' Set the range of bins (optional; if not specified, Excel auto-generates bins)
        Set binRange = Range("B2:B10") ' Modify this to the desired bin range, or leave empty   
        ' Set chart titles
        chartTitle = "Histogram of Data"
        xAxisTitle = "Data Values"
        yAxisTitle = "Frequency"   
        ' Create a chart
        Set chartObj = ActiveSheet.ChartObjects.Add(Left:=200, Width:=375, Top:=75, Height:=225)   
        ' Set the chart type to Histogram
        chartObj.Chart.ChartType = xlColumnClustered   
        ' Set the data for the chart
        chartObj.Chart.SetSourceData Source:=dataRange   
        ' Apply histogram chart formatting
        With chartObj.Chart
            .HasTitle = True
            .ChartTitle.Text = chartTitle
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Text = xAxisTitle
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Text = yAxisTitle       
            ' If bin range is specified, use the bin range for the histogram
            If Not binRange Is Nothing Then
                .Axes(xlCategory).CategoryNames = binRange
            End If       
            ' Set the histogram appearance (optional)
            .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(100, 149, 237) ' Color of bars
            .SeriesCollection(1).Format.Line.Visible = msoFalse ' Remove border lines
        End With
    End Sub

    Detailed Explanation:

    1. Defining the Data Range:

    Set dataRange = Range(« A2:A20 »)

    This line defines the range of data you want to create the histogram for. In this case, it’s from cell A2 to A20, but you can modify it according to your dataset.

    2. Setting the Bin Range:

    Set binRange = Range(« B2:B10 »)

    This optional range (binRange) is used to define the bins (categories) for the histogram. If you leave this range empty or don’t set it, Excel will automatically create bins for you.

    3. Creating the Chart:

    Set chartObj = ActiveSheet.ChartObjects.Add(Left:=200, Width:=375, Top:=75, Height:=225)

    This line creates a new chart object on the active sheet, specifying its position and size. Left and Top determine the position of the chart, while Width and Height control the size.

    4. Setting the Chart Type:

    Chart.ChartType = xlColumnClustered

    This sets the chart type to a column chart, which is suitable for a histogram representation. Note: Excel does not have a direct histogram chart type in VBA, but the column chart can be used to simulate a histogram.

    5. Setting the Data Source:

    Chart.SetSourceData Source:=dataRange

    This sets the data source for the chart, which is the range dataRange we defined earlier (the dataset).

    6. Formatting the Chart:

      • Titles are set for the chart and the axes using:

    .HasTitle = True

    .ChartTitle.Text = chartTitle

    The above lines enable the chart title and set the title to « Histogram of Data ». Similarly, titles are set for the X-axis and Y-axis.

    7. Setting the Bin Categories:

    • If Not binRange Is Nothing Then

    .Axes(xlCategory).CategoryNames = binRange

    • End If

    If you have specified a bin range (binRange), this line ensures that the X-axis displays these bin names.

    8. Customizing the Chart Appearance:

    .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(100, 149, 237)

    .SeriesCollection(1).Format.Line.Visible = msoFalse

    These lines format the appearance of the bars in the histogram. In this case, the bars are colored using an RGB value, and the borders of the bars are removed.

    Notes:

    • Bins: If you don’t specify a bin range, Excel will automatically calculate the bin intervals. You can specify bins for more control over how the data is grouped.
    • Chart Type: The xlColumnClustered type is used to simulate a histogram. You can also use xlBarClustered for horizontal bars.

    How to Use:

    1. Open the Excel workbook you want to work with.
    2. Press Alt + F11 to open the VBA editor.
    3. Insert a new module: Insert > Module.
    4. Paste the provided code into the module.
    5. Press F5 to run the macro and generate the histogram.

    This should give you a detailed histogram chart on your Excel worksheet.

  • Create High-Low-Close Chart with Excel VBA

    To create a High-Low-Close chart (typically used for financial data) using Excel VBA, we can use the ChartObjects.Add method to add a chart, and then configure it as a High-Low-Close chart by using the appropriate chart type and data range. Below is a detailed VBA code with an explanation of each step:

    VBA Code for High-Low-Close Chart:

    Sub CreateHighLowCloseChart()
        Dim ws As Worksheet
        Dim chartObj As ChartObject
        Dim chart As Chart
        Dim dataRange As Range
        Dim xValues As Range
        Dim highValues As Range
        Dim lowValues As Range
        Dim closeValues As Range
        ' Define the worksheet
        Set ws = ThisWorkbook.Sheets("Sheet1")   
        ' Define the range for your data (ensure the data is in a table with Date, High, Low, and Close)
        ' Assuming the data is in columns A, B, C, and D with a header row
        Set dataRange = ws.Range("A1:D10") ' Adjust the range based on your data
        ' Define individual data ranges
        Set xValues = ws.Range("A2:A10") ' Dates
        Set highValues = ws.Range("B2:B10") ' High prices
        Set lowValues = ws.Range("C2:C10") ' Low prices
        Set closeValues = ws.Range("D2:D10") ' Close prices   
        ' Add a new chart to the worksheet
        Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=500, Top:=100, Height:=300)
        Set chart = chartObj.Chart
        ' Set the chart type to High-Low-Close
        chart.ChartType = xlStockHLC   
        ' Set the data for the chart (High-Low-Close)
        chart.SetSourceData Source:=dataRange   
        ' Set the X-axis to the dates
        chart.Axes(xlCategory).CategoryNames = xValues   
        ' Set the series for High, Low, and Close
        chart.SeriesCollection.NewSeries
        chart.SeriesCollection(1).XValues = xValues
        chart.SeriesCollection(1).Values = highValues
        chart.SeriesCollection(1).Name = "High"   
        chart.SeriesCollection.NewSeries
        chart.SeriesCollection(2).XValues = xValues
        chart.SeriesCollection(2).Values = lowValues
        chart.SeriesCollection(2).Name = "Low"   
        chart.SeriesCollection.NewSeries
        chart.SeriesCollection(3).XValues = xValues
        chart.SeriesCollection(3).Values = closeValues
        chart.SeriesCollection(3).Name = "Close"   
        ' Format chart title
        chart.HasTitle = True
        chart.ChartTitle.Text = "High-Low-Close Chart"   
        ' Format axis titles
        chart.Axes(xlCategory, xlPrimary).HasTitle = True
        chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Date"
        chart.Axes(xlValue, xlPrimary).HasTitle = True
        chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Price"   
        ' Customize other chart elements as needed (e.g., colors, labels)
        ' Example: change series color
        chart.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0) ' High series - Red
        chart.SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 255, 0) ' Low series - Green
        chart.SeriesCollection(3).Format.Line.ForeColor.RGB = RGB(0, 0, 255) ' Close series - Blue  
        ' Adjust axis scaling (optional)
        chart.Axes(xlValue).MinimumScale = WorksheetFunction.Min(closeValues) * 0.9
        chart.Axes(xlValue).MaximumScale = WorksheetFunction.Max(closeValues) * 1.1
    End Sub

    Explanation of the Code:

    1. Setting up the Worksheet and Ranges:
      • The code starts by defining the worksheet ws where your data is located (Sheet1 in this example).
      • The data for the High-Low-Close chart is assumed to be in columns A (Date), B (High), C (Low), and D (Close). The data range (dataRange) is set to include these columns.
    2. Creating the Chart:
      • The ChartObjects.Add method adds a chart to the worksheet. The Left, Width, Top, and Height properties define the size and position of the chart on the sheet.
      • The chart.ChartType = xlStockHLC sets the chart type to a High-Low-Close chart, which is commonly used in financial data to show stock prices.
    3. Setting Data for the Chart:
      • The X-values are set to the dates (xValues), and the Y-values are set for High (highValues), Low (lowValues), and Close (closeValues).
      • The SeriesCollection.NewSeries method creates a new data series for each of the High, Low, and Close values.
      • Each series is assigned the corresponding values for High, Low, and Close.
    4. Customizing the Chart:
      • A title is added to the chart using chart.HasTitle = True and chart.ChartTitle.Text.
      • Axis titles for the Category axis (Date) and Value axis (Price) are added.
      • Colors for each series (High, Low, Close) are customized using Format.Line.ForeColor.RGB.
    5. Optional Customizations:
      • The axis scaling is adjusted by setting the minimum and maximum values for the Value axis based on the Close data (MinimumScale and MaximumScale).
      • You can further customize the chart with labels, data markers, or other visual elements as needed.

    Key Notes:

    • The data range and sheet names must be adjusted to fit your specific dataset.
    • The xlStockHLC chart type is ideal for financial data, but you can change the chart type to another one (e.g., xlLine) if you need a different format.
    • The chart’s appearance can be modified in many ways—color, line thickness, markers, etc.

    This code will generate a dynamic High-Low-Close chart that updates whenever the underlying data in the specified range changes.