Jump to content

Al ejecutar macros las formulas no funcionan


Recommended Posts

Antes que nada, un saludo a todos y gracias por su ayuda. El problema que tengo es el siguiente:

Al ejecutar macros estos me copian bien los valores, y reescriben las fórmulas, pero estas no se ejecutan. En la casilla queda #¿NOMBRE?. Lo que tengo que hacer es ir a la casilla modificar de cualquier forma la formula de la celda -como poner un espacio- luego darle enter y ahí reaparecen los valores correctos de la formula. El problema no es que no se calcula nuevamente la formula o que no se actualiza la “hoja de cálculos” sino que no funciona la formula bajo ninguna circunstancia, F9, enter, etc. Hasta que esta no se modifica.

Estas son las formulas utilizadas

H8=> =SUMA(-C8-E8+F8)
C3=> =SUMA (H8:H508)
C4=> =SUMA(C8:C508)+SUMA(E8:E508)
F4=> =SUMAR.SI.CONJUNTO($H$8:$H$508;$A$8:$A$508;">="&F2;$A$8:$A$508;"<="&F3)

#¿NOMBRE? es lo que pone en la casilla del resultado.

 

Link to comment
Share on other sites

avalencia gracias, luego de leer lo que me pasaste, como trabajo en hoja de calculo on line, tuve que modificar el idioma y el sitio de residencia, al ingles. De esa forma funciona todo bien, pero si vuelvo al español, las formulas echas con macros ya me dan error. (si no modificaba el idioma, por mas de que yo ponía la formula en ingles, me la cambiaba al español de forma automática. Pero bueno no es una solución que me guste mucho......

Link to comment
Share on other sites

Ejemplo para F4:

Range("F4").FormulaLocal = "=SUMAR.SI.CONJUNTO($H$8:$H$508;$A$8:$A$508;"">=""&F2;$A$8:$A$508;""<=""&F3)"

o también
Range("F4").Formula = "=SUMIFS($H$8:$H$508,$A$8:$A$508,"">=""&F2,$A$8:$A$508,""<=""&F3)"
 

En el caso de FormulaLocal debes usar el separador que tengas definido en Excel, en el ejemplo el punto y coma (;), en el caso de Formula, debes usar obligatoriamente la coma (,) como separador y el nombre de la función en Inglés.

Link to comment
Share on other sites

Estimado Antonio, estoy usando esta formula:" =SUMIFS($H$8:$H$508,$A$8:$A$508,">="&F2,$A$8:$A$508,"<="&F3)" y si en  Archivo-Configuración de hoja de calculo- pestaña general, apartado configuración regional coloco "Argentina", me da error. En cambio si pongo "Estados Unidos" funciona de maravilla. Pero me obliga a usar "," para separar los "miles" 1,000 en vez de 1.000.

Link to comment
Share on other sites

Estimado avalencia, gracias por su mensaje, le comento este es el macro que utilizo:

Por otro lado trabajo con hoja de calculo de google adjunto imagen. Creo que se le llama excel on line, o estoy equivocado?

 

 

function Vendido3() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A4:H4').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Venta'), true);
  spreadsheet.getRange('8:8').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Stock'), true);
  spreadsheet.getRange('G5').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Venta'), true);
  spreadsheet.getRange('A8').activate();
  spreadsheet.getRange('Stock!G5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Stock'), true);
  spreadsheet.getRange('B5:F5').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Venta'), true);
  spreadsheet.getRange('B8:F8').activate();
  spreadsheet.getRange('Stock!B5:F5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('H8').activate();
  spreadsheet.getActiveRangeList().setNumberFormat('"$"#,##0');
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Stock'), true);
  spreadsheet.getRange('H5').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Venta'), true);
  spreadsheet.getRange('G8').activate();
  spreadsheet.getRange('Stock!H5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('H8').activate();
  spreadsheet.getCurrentCell().setFormula('=SUM(-C8-E8+F8)');
  spreadsheet.getRange('C3').activate();
  spreadsheet.getCurrentCell().setFormula('=SUM(H8:H508)');
  spreadsheet.getRange('C4').activate();
  spreadsheet.getCurrentCell().setFormula('=SUM(C8:C508)+SUM(E8:E508)');
  spreadsheet.getRange('F4').activate();
  spreadsheet.getCurrentCell().setFormula('=SUMIFS($H$8:$H$508,$A$8:$A$508,">="&F2,$A$8:$A$508,"<="&F3)');
  spreadsheet.getRange('H4').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Stock'), true);
  spreadsheet.getRange('A5:H5').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('A5').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Venta'), true);
};

 

 

thump_9919833web.jpg

Link to comment
Share on other sites

Jejeje, ahora se entiende mejor. Algunas aclaraciones:

- No, Excel no es lo mismo que la Hoja de Cálculo de Google

- No, Excel OnLine es otra cosa, en si la Hoja de Cálculo de Google es un programa online

- No, la Hoja de Cálculo de Google no usa macros de VBA, sus macros son en un lenguaje llamado  Google Apps Script

- Este es un foro de Excel, lo ideal sería que vayas a un foro de Google y  y/o Google Apps Script

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Crear macros Excel

  • Posts

    • Hola,   No me funciona.   Sale este error.   Seria posible tambien no tener que editar la ruta cada vez y que coja la ruta donde esta el xlsm?   Muchas gracias
    • A ver que tal, prueba y comenta Facturación 26082021JSD.xlsm
    • Hola, Yo no me entero muy bien; en el ejemplo que has puesto de  Puedes usar =IZQUIERDA(A1;4)/100 (suponiendo que el numero esta en A1). Seguro que no te refieres a eso porque es muy simple, pon mas ejemplos.
    • Hola a todos, soy nueva por aquí     Tengo una duda de una exportación de una tabla SQL, donde los precios de los productos, en lugar de exportarlos en formato moneda con decimales, me los exporta en el siguiente formato: "00.000.000" está en formato "número", pero no sé como hacer para pasarlo a un formato de moneda, ya que los últimos tres "0" me sobran y me suma los 8 dígitos, cuando los 3 últimos no valen.    Por ejemplo:  10.123.001 (Es un producto que vale 10,12€ Como puedo hacer para eliminar el resto de dígitos? No encuentro la manera y claro, tampoco puedo realizar operaciones en excel puesto que me suma todos los dígitos...   No sé si me he explicado bien...   Gracias!!  
    • Buenas , soy nuevo en esto de Macros , pero investigando he dado esta solución , El macro funciona con el directorio "C:\Excel\"  la llamada al Macro es " Analizar_archivos" desde Libro.xlsm Option Explicit Dim ArchivoAbrir As Excel.Workbook Sub Analizar_Archivos() Dim Dir, Carpeta, Archivo As Object Dim Ruta As String Dim Listado() As Variant Set Dir = CreateObject("Scripting.FileSystemObject") Ruta = "C:\Excel\" ' ruta donde mirar On Error GoTo Error Set Carpeta = Dir.GetFolder(Ruta) For Each Archivo In Carpeta.Files ' recorremos los archivos de la carpeta If InStr(1, Archivo.Name, "~$") = 0 And _ InStr(1, Archivo.Name, "xlsm") = 0 And _ Archivo.Name <> "C:\Excel\Libro.xlsm" Then ' exclusiones AbrirarchivoExterno (Ruta & Archivo.Name) ' abrimos el archivo End If Next Exit Sub Error: MsgBox "Ruta inexistente", vbCritical End Sub Sub AbrirarchivoExterno(Archivo) On Error Resume Next If Len(Archivo) > 0 Then Set ArchivoAbrir = Workbooks.Open(Archivo) Workbooks.Open(Archivo).Application.Visible = False ' abrimos el archivo en modo invisible Comprueba ' comprobamos el archivo abierto Cerrar (Archivo) ' cerramos el archivo abierto End If End Sub Sub Cerrar(Archivo) Set ArchivoAbrir = Workbooks.Open(Archivo) ArchivoAbrir.Save ArchivoAbrir.Close End Sub Sub Comprueba() Dim Texto As String Texto = Range("Bc30").Value Select Case Texto Case Is = "hogares" Range("bc30").Value = "infiernos" Case Is = "alquileres" Range("bc30").Value = "placeres" Case Is = "compartir" Range("bc30").Value = "genesis" Case "infiernos", "placeres", "genesis" Case Else Range("Bc30").Value = "" End Select End Sub    suerte.
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy