Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

286
Vistas
Cómo alinear código generado por una macro (VBA)
  • elemento de la lista

estoy usando una macro para generar un código. Tengo esto para imprimirlo en un archivo .vhdl

 While iloop_line <= nblines If MySheet.Cells(iloop_line, Type_Column) = Type_Register Then nbRegister= nbRegister+ 1 reg_addr = Mid(MySheet.Cells(iloop_line, Low_ADDR_Column), 1, 6) Print #my_file_id, " constant " & LCase(MySheet.Cells(iloop_line, Name_Column)) & "_addr : std_logic_vector(" & AddrWidthTocomp - 1 & " downto 0) := X""" & reg_addr & """;" reg_data = Replace(Mid(MySheet.Cells(iloop_line, Default_Value_Column), 3, 8), "_", "") Print #my_file_id, " constant " & LCase(MySheet.Cells(iloop_ligne, Name_Column)) & "_val : std_logic_vector(" & AddrWidthTocomp - 1 & " downto 0) := X""" & reg_data & """;" Print #my_file_id, "" End If iloop_line = iloop_line + 1 Wend

Y tengo esto en el resultado:

 constant reg_test12345_addr : std_logic_vector(23 downto 0) := X"000000"; constant reg_test12345_val : std_logic_vector(23 downto 0) := X"000000"; constant reg_123456789_addr : std_logic_vector(23 downto 0) := X"0000FF"; constant reg_123456789_val : std_logic_vector(23 downto 0) := X"000000"; constant reg_1234567891234567_addr : std_logic_vector(23 downto 0) := X"000100"; constant reg_reg_1234567891234567_val : std_logic_vector(23 downto 0) := X"000000";

Y para hacerlo más limpio quiero esto:

 constant reg_test12345_addr : std_logic_vector(23 downto 0) := X"000000"; constant reg_test12345_val : std_logic_vector(23 downto 0) := X"000000"; constant reg_123456789_addr : std_logic_vector(23 downto 0) := X"0000FF"; constant reg_123456789_val : std_logic_vector(23 downto 0) := X"000000"; constant reg_1234567891234567_addr : std_logic_vector(23 downto 0) := X"000100"; constant reg_reg_1234567891234567_val : std_logic_vector(23 downto 0) := X"000000";

¿Tienes alguna idea para hacer esto?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Como ejemplo, inserté varias longitudes de cadena en Sheet1!B1:B20 usando =REPT("a",RANDBETWEEN(1,20)) .

 Sub Test() Dim MySheet As Worksheet Set MySheet = ThisWorkbook.Worksheets("Sheet1") Dim Name_Column As Long Name_Column = 2 Dim iloop_line As Long Dim StringValue As String For iloop_line = 1 To 20 StringValue = LCase(MySheet.Cells(iloop_line, Name_Column)) Debug.Print StringValue & "_addr" & Space(30 - Len(StringValue & "_addr")) & ": std_logic_vector" Debug.Print StringValue & "_val" & Space(30 - Len(StringValue & "_val")) & ": std_logic_vector" Next iloop_line End Sub

El código anterior me dio el siguiente resultado: el : es siempre el carácter 31.

 aaaaaaaaaaa_addr : std_logic_vector aaaaaaaaaaa_val : std_logic_vector aaaaaaaaaaaa_addr : std_logic_vector aaaaaaaaaaaa_val : std_logic_vector aaaaaaaaaa_addr : std_logic_vector aaaaaaaaaa_val : std_logic_vector aaaaaaaaaa_addr : std_logic_vector aaaaaaaaaa_val : std_logic_vector

Editar: Bueno, eso es vergonzoso, nunca supe sobre el comando SPACE en VBA. Tenga un código actualizado para usar eso en lugar de REPT . Piensa que la última vez que usé eso podría haber sido con Sinclair BASIC.

about 4 years ago · Santiago Trujillo Denunciar

0

Otro enfoque es utilizar una cadena de longitud fija.

 Dim fixedString As String * 30 fixedString = "abc" Debug.Print fixedString & ": " & 1 fixedString = "something longer" Debug.Print fixedString & ": " & 2 'abc : 1 'something longer : 2
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda