2008-11-02 10 views
7

Estoy escribiendo una aplicación rápida yo mismo - primer proyecto, sin embargo, estoy tratando de encontrar el código VBA para escribir el resultado de una cadena de entrada en una celda con nombre en Excel.macro VBA Excel escribiendo un entero de entrada en una celda

Por ejemplo, un cuadro de entrada pregunta "¿Qué número de trabajo desea agregar a la lista?" ... el usuario ingresará un número de referencia como "FX1234356". La macro necesita escribir esa información en una celda, que luego puedo usar para terminar la macro (básicamente una búsqueda en algunos datos).

+2

El título de la pregunta es engañoso. Su entrada no es un número entero. –

Respuesta

10

Puede usar el objeto Range en VBA para establecer el valor de una celda con nombre, como cualquier otra celda.

Range("C1").Value = Inputbox("Which job number would you like to add to the list?) 

Donde "C1" es el nombre de la celda que desea actualizar.

My Excel VBA es un poco viejo y crujiente, por lo que puede haber una forma mejor de hacerlo en las versiones más nuevas de Excel.

+0

me acabas de ganar; – JimmyJ

+1

Gracias por verificarlo por mí. Odio publicar un código viejo y posiblemente tener a alguien que entra y decir "Sí, allá en el siglo XX pudiste haberlo hecho de esa manera, pero ahora ...". :) –

0

He hecho este tipo de cosas con un formulario que contiene un TextBox.

Así que si quería poner esto en decir células H1, a continuación, utilizar:

ActiveSheet.Range("H1").Value = txtBoxName.Text

4

recomiendo siempre utilizando un rango con nombre (como usted ha sugerido que está haciendo) porque si todas las columnas o filas se agregan o eliminan, la referencia del nombre se actualizará, mientras que si codifica la referencia de la celda (por ejemplo, "H1" como se sugiere en una de las respuestas) en VBA, no se actualizará y apuntará a la celda incorrecta.

Así

Range("RefNo") = InputBox("....") 

es más seguro que

Range("H1") = InputBox("....") 

puede establecer el valor de varias celdas, también.

Range("Results").Resize(10,3) = arrResults() 

donde arrResults es una matriz de al menos 10 filas & 3 columnas (y puede ser de cualquier tipo). Si utiliza esto, poner este

Option Base 1 

en la parte superior del módulo de VBA, de lo contrario VBA asumirá la matriz comienza en 0 y poner una primera fila y columna en blanco en la hoja. Esta línea hace que todas las matrices comiencen en 1 como valor predeterminado (que puede ser anormal en la mayoría de los idiomas pero funciona bien con las hojas de cálculo).

1

Al pedirle a un usuario una respuesta para poner en una celda usando el InputBox method, generalmente hay tres cosas que pueden suceder¹.

  1. El usuario escribe algo en y hace clic en Aceptar . Esto es lo que espera que suceda y recibirá una respuesta que puede devolverse directamente a una celda o una variable declarada.
  2. El usuario hace clic en Cancelar , presiona Esc o hace clic en × (Cerrar).El valor de retorno es un booleano False. Esto debe ser tenido en cuenta.
  3. El usuario hace no escribe cualquier cosa en menos OK independientemente. El valor de retorno es una cadena de longitud cero.

Si está poniendo el valor de retorno en una celda, su propia secuencia lógica dictará lo que quiere hacer con los dos últimos escenarios. Es posible que desee borrar la celda o puede dejar el contenido de la celda solo. Aquí se explica cómo manejar los diversos resultados con una variable de tipo variable y un Select Case statement.

Dim returnVal As Variant 

    returnVal = InputBox(Prompt:="Type a value:", Title:="Test Data") 

    'if the user clicked Cancel, Close or Esc the False 
    'is translated to the variant as a vbNullString 
    Select Case True 
     Case Len(returnVal) = 0 
      'no value but user clicked OK - clear the target cell 
      Range("A2").ClearContents 
     Case Else 
      'returned a value with OK, save it 
      Range("A2") = returnVal 
    End Select 

¹ Hay un cuarto escenario cuando se utiliza un tipo específico de InputBox method. Un InputBox puede devolver una fórmula, error de rango de celda o matriz. Esos son casos especiales y requiere el uso de opciones de sintaxis muy específicas. Vea el enlace suministrado para más.

Cuestiones relacionadas