Existe alguna manera de renombrar filas y columnas que suelen ser nombradas i y j

Siempre se observa la siguiente notación:

Worksheets("Sheet1").Cells(i,j).value

Quisiera solicitar el favor de decirme si es posible que Excel VBA reconozca una notación diferente a la de i, j por otra, como, a, b o x, y, de modo que se pueda usar, por ejemplo, Cells(a, b) y no Cells (i, j).

2 respuestas

Respuesta
2

H o l a:

Las variables se utilizan para almacenar datos que durante la ejecución del programa, van cambiando de valor, es por eso que se llaman variables.

Para nombrar las variables se recomienda una nemotecnia para identificar el dato que estás almacenando en la variable.

Por ejemplo, si vas a almacenar códigos, la variable se puede llamar cod o codigos; si vas a almacenar nombres de archivos, podría ser nomarch o nom_arch o nombre_archivo.

Como puedes observar el nombre de la variable puede ser el que se te ocurra. Con ese nombre el programador identifica el dato almacenando. La limitación es que no puedes utilizar nombres reservados para nombres de funciones o comandos o con caracteres especiales, es decir, no deberías nombrar una variable como "sheets".

Regresando a tu pregunta original: "si es posible que Excel VBA reconozca una notación diferente a la de i, j", por supuesto, sí es posible, puedes utilizar cualquier nombre (numero_fila, numero_columna) o (fila, columna) o (fil, col) o (f, c).

Lo importante como programador es identificar el contenido de la variable.

Otras recomendaciones:

  • Si estás realizando un programa largo y vas a ocupar repetidas veces la variable: "numero_fila", pues es más sencillo escribir "f", por ejemplo:
  • cells(numero_fila, numero_columna)
    Es más práctico escribir:
  • cells(f, c)
  • No hay ninguna regla donde diga que debes utilizar las letras "i" o "f" para identificar las filas, o las letras "j" o "c" para identificar las columnas.
  • Existe una nomenclatura universal para ciertas variables, por ejemplo, la x, y, z generalmente se utilizan en ecuaciones matemáticas.
  • La a, b, c, h se utilizan en geometría: base por altura = bxh, c = a + b, etc.
  • La n y m generalmente se utilizan como contadores
  • Otras variables: d - diámetro, r - radio, e - energía, v - velocidad, t -tiempo, f- foco, F - Fuerza, etc.
  • Como la letra "i" casi no se utiliza en fórmulas, se utiliza para los ciclos For - Next, por ejemplo:
  • For i = 1 to 100
  • Puedes revisar en la red y observar, que generalmente, en cualquier lenguaje, en los cilcos For Next utilizan la letra i, también pueden utilizar cualquier letra; pero a título personal, estoy tan acostumbrado a ver la letra i en los ciclos For Next que cuando leo un programa y tiene otra letra, a veces me confunde.
  • Es por lo anterior, que en excel, la letra i encaja en los ciclos de contar filas por ejemplo:
  • For i = 2 to range("A" & rows. Count).end(xlup). Row
  • Si requieres utilizar un ciclo de columnas, puedes utilizar la j, simplemente porque la j es la letra que le sigue a la i, por ejemplo un ciclo de 10 filas por 10 columnas:
  • For i = 1 to 10
        For j = 1 to 10
            cells(i, j) = "hola"
        Next
    Next

Espero que te haya servido la explicación.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Muchas gracias Dante Amor por tan oportuna y completa respuesta, me ha sido bastante útil y he comprobado lo expresado en tu respuesta. Te envío mis sinceros agradecimientos y te deseo muchos éxitos.

Atentamente

Luz González 

Respuesta
1

:)

Hola! Luz. No solo puedes utilizar la letra que quieras sino que puedes utilizar combinaciones de letras y/o números. Por ejemplo:

Cells(fila, columna)

Cells(f1, c1)

Cells(aaa, bbb)

Más información por aquí: Variables y constantes

Mario Rodríguez, agradezco infinitamente tu pronta respuesta. Efectivamente, cambié los nombres de notación de las filas y columnas pero la macro no los reconoció como filas y columnas de la hoja de cálculo. De manera atenta quisiera solicitarte el favor de decirme cómo puedo hacer para recorrer las filas de dos hojas de cálculo (Hoja1 y Hoja2), pues los rangos de las filas son distintos y al iniciar el bucle For...Next no me permite hacer distinción entre las filas de la hoja 1 y las filas de la hoja 2. Es algo así:

For i=1 to Filas  'Rango de filas de la primera hoja

For j=1 to 3        'Rango de columnas que es común a hoja 1 y a hoja 2

Sheets("Hoja1").Cells(i,j).value=Sheets("Hoja2").Cells(i,j).value

Next

Next

La macro funciona bien cuando los rangos de i son iguales en ambas hojas, pero no funciona cuando los rangos de i son diferentes en cada una de las hojas de cálculo; cambié los nombres de las filas de Hoja2 y la macro quedó así:

For i=1 to 5                           'Rango de filas de la primera hoja

For a=6 to 10                        'Rango de filas de la segunda hoja

For j=1 to 3                           'Rango de columnas que es común a hoja 1 y a hoja 2

Sheets("Hoja1").Cells(i,j).value=Sheets("Hoja2").Cells(a,j).value

Next

Next

Pero aquí asumió que la letra a no correspondía a filas sino a cualquier otra variable. Por este motivo, quisiera pedirte el favor de que me dijeras como recorrer las filas de Hoja2, dado que los rangos de fila son diferentes. Intenté agregándole un número entero (e.g., i+4) para nivelar los rangos pero tampoco funcionó. Te agradezco infinitamente tu colaboración.

Atentamente

Luz González

:)

El código que has publicado -en verdad- no puede conducir a nada razonable. Dicho lisa y llanamente: ¡Está mal hecho!

Se advierte que quieres traspasar info de la Hoja2 a la Hoja1. Comenta, entonces, cuál es el rango que ocupan tus datos en la Hoja2, y cuál es la estructura que deseas que tengan en la Hoja1: ¿Ok?

P.D.

Si subes a algún servidor público un ejemplo de lo que tienes y -a mano- muestras lo que deseas conseguir: ¡Será un "golazo"!

Gracias Mario por la aclaración. La hoja de cálculo que estoy trabajando involucra más variables de rango de las que he incluido en el ejemplo. Ensayé en una hoja libre y ha aceptado nuevos nombres para referenciar las filas, pero en la hoja de cálculo original no, así que simplificaré algunas variables. El código del ejemplo funcionó perfecto en la hoja libre y no está mal hecho, pues seguí las indicaciones de la primera respuesta, que a la larga me fue bastante útil. Muchas gracias por la ilustración dada al respecto. Te deseo muchos éxitos.

Atentamente

Luz González

:)

Mi estimado: si estás intentando pasar datos desde una hoja a la otra -en verdad- no requieres de ningún "For - Next": ¡Ni uno!...
Por ello te comentaba lo que te comentaba en mi entrada anterior.

Te reitero, entonces, que si expones una muestra de lo que tiene (aunque menos no sea reducida) te podremos orientar mejor: ¿Entendido?...
Saludos, Mario R.

:)

.

Mil gracias Mario por tu interés, estoy muy agradecida por tu valiosa colaboración, ya logré resolver el inconveniente pues había cometido un error al digitar el código, la sintaxis era la correcta pero no realizaba acción alguna, de ahí surgió mi inquietud y creí que sólo aceptaba la notación Cells(i,j). Estoy muy agradecida por la orientación brindada, me sirvió cantidades para hallar la solución al problema planteado. Te deseo muchos éxitos y agradezco el interés en ayudarme, muchas bendiciones para tí.

Atentamente

Luz González

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas