Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 213737
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T18:18:26+00:00 2026-05-11T18:18:26+00:00

I simply want to fill-up cells in my spreadsheet from a VBA function. By

  • 0

I simply want to fill-up cells in my spreadsheet from a VBA function. By example, I would like to type =FillHere() in a cell, and in result I will have a few cells filled-up with some data.

I tried with such a function:

Function FillHere()
  Dim rngCaller As Range
  Set rngCaller = Application.Caller
  rngCaller.Cells(1, 1) = "HELLO"
  rngCaller.Cells(1, 2) = "WORLD"
End Function

It breaks as soon as I try to modify the range. Then I tried this (even it’s not really the behavior I’m looking for):

Function FillHere()
    Dim rngCaller As Range
    Cells(1, 1) = "HELLO"
    Cells(1, 2) = "WORLD"
End Function

This is not working neither. But it works if I start this function from VBA using F5! It seems it’s not possible to modify anything on the spreadsheet while calling a function… some libraries do that though…

I also tried (in fact it was my first idea) to return a array from the function. The problem is that I only get the first element in the array (there is a trick that implies to select a whole area with the formula at the top left corner + F2 + CTRL-SHIFT-ENTER, but that means the user needs to know by advance the size of the array).

I’m really stuck with this problem. I’m not the final end-user so I need something very easy to use, with, preferably, no argument at all.

PS: I’m sorry I asked this question already, but I wasn’t registered at that time and it seems that I can’t participate to the other thread anymore.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T18:18:26+00:00Added an answer on May 11, 2026 at 6:18 pm

    You will need to do this in two steps:

    Change your module to be something like:

    Dim lastCall As Variant
    Dim lastOutput() As Variant
    
    Function FillHere()
        Dim outputArray() As Variant
        ReDim outputArray(1 To 1, 1 To 2)
        outputArray(1, 1) = "HELLO"
        outputArray(1, 2) = "WORLD"
    
        lastOutput = outputArray
        Set lastCall = Application.Caller
    
        FillHere = outputArray(1, 1)
    End Function
    
    Public Sub WriteBack()
        If IsEmpty(lastCall) Then Exit Sub
        If lastCall Is Nothing Then Exit Sub
    
        For i = 1 To UBound(lastOutput, 1)
            For j = 1 To UBound(lastOutput, 2)
                If (i <> 1 Or j <> 1) Then
                    lastCall.Cells(i, j).Value = lastOutput(i, j)
                End If
            Next
        Next
    
        Set lastCall = Nothing
    End Sub
    

    Then in order to call the Sub go into the ThisWorkbook area in VBA and add something like:

    Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
        Call WriteBack
    End Sub
    

    What this does is return the value of the topleft cell and then after calculation completes populates the rest. The way I wrote this it assumes only one FillHere function will be called at a time. If you want to have multiple ones which recalculate at the same time then you will need a more complicated set of global variables.

    One word of warning is that this will not care what it overwrites when it populates the other cells.

    Edit:
    If you want to do this on a Application wide basis in an XLA. The code for the ThisWorkbook area should be something like:

    Private WithEvents App As Application
    
    Private Sub App_SheetCalculate(ByVal Sh As Object)
        Call WriteBack
    End Sub
    
    Private Sub Workbook_Open()
        Set App = Application
    End Sub
    

    This will wire up the Application Level calculation.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I simply want to post an image and comment from my own site to
I simply want to change a variable of an object from another class. I
I simply want to generate a class with attributes that comes from a Database
I simply want to return all rows from a users table but selected fields,
I need to fill a UITableView from an NSSet data source. Obviously I want
Very simply I want to fill in the message box that is generated by
I simply want to edit some commits with git rebase -i HEAD~2 inside the
I simply want to popup an Alertbox in AS3. I am using Flashdevelop and
I simply want to show off a model in a table that is paginated
I have several sql queries that I simply want to fire at the database.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.