Its easy, just change the string. It will be marshalled back to VB properly:-
c++ Code:
  1. //
  2. void _stdcall ReadVB6StringArray(SAFEARRAY **strings)
  3. {
  4.    
  5.     SAFEARRAY* vbarray =(*strings);
  6.  
  7.     ULONG numElements = vbarray->rgsabound[0].cElements;
  8.     LONG lbound = vbarray->rgsabound[0].lLbound;
  9.  
  10.     char** vbStrings=(char**) vbarray->pvData;
  11.  
  12.     // Loops through the strings
  13.     for(int i=lbound; (i < lbound+numElements);i++)
  14.     {
  15.         //Gets the current string
  16.         char* current = vbStrings[i];
  17.        
  18.         //Changes the strings in the array to
  19.         //uppercase. The changes will be reflected
  20.         //back in VB
  21.         if (current != NULL){
  22.             strupr(current);}
  23.  
  24.        
  25.  
  26.     }
  27.    
  28.  
  29. }