Visual Basic para Aplicaciones - MUY URGENTE

Life is soft - evento anual de software empresarial
 
Vista:

MUY URGENTE

Publicado por diego (6 intervenciones) el 07/06/2007 18:03:57
buenas tardes,
¿Alguien me puede decir como a traves de una letra yo puedo obtener el numero de columna?
EJ:columna b=2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MUY URGENTE

Publicado por JuanC (243 intervenciones) el 07/06/2007 22:41:14
'Convierte la letra de una columna a número
'A=1, ...., Z=26, AA=27, ..., IV=256
'Si la letra de columna no es válida devuelve 0
'--------------------------------------------------
Public Function tLetterToNumber(ByVal sLetter As String) As Integer
Dim L%, n%
tLetterToNumber = 0
L = Len(Trim(sLetter))
If L = 0 Then Exit Function
If L > 2 Then
Exit Function
ElseIf L = 1 Then
n = Asc(LCase(sLetter)) - 96
If n > 0 And n <= 26 Then tLetterToNumber = n
Exit Function
Else
tLetterToNumber = ConvLtrToNum(UCase(sLetter))
End If
End Function

Private Function ConvLtrToNum(ByVal LtrIn As String) As Integer
Dim TmpChar$, TmpNum%, i%, NumString$
Dim NumArray() As Integer, HighPower%
TmpChar = ""
TmpNum = 0
ConvLtrToNum = 0

For i = 1 To Len(LtrIn)
NumString = ""
TmpChar = Mid(LtrIn, i, 1)
If Asc(TmpChar) < 65 Or Asc(TmpChar) > 90 Then Exit Function
ReDim Preserve NumArray(i)
NumArray(i) = Asc(TmpChar) - 64
Next

HighPower = UBound(NumArray()) - 1

For i = 1 To UBound(NumArray())
TmpNum = TmpNum + (NumArray(i) * (26 ^ HighPower))
HighPower = HighPower - 1
Next

ConvLtrToNum = IIf(TmpNum > Cells.Columns.count, 0, TmpNum)
End Function

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MUY URGENTE

Publicado por diego (6 intervenciones) el 08/06/2007 00:28:11
Muchas gracias por tu ayuda.
Otra pregunta que te veo muy bueno.Yo tengo una celda en la que va a escribir otra gente.Pues verás,kiero que solo puedan escribir como maximo en esa celda 255 caracteres,si escriben más, kiero k le avise diciendole k no se puede y k no le deje escribir.
Eso hacerlo en VB es facil,pero aki con excel,como capturo el eventro keypress de la celda?

Gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MUY URGENTE

Publicado por JuanC (243 intervenciones) el 08/06/2007 00:37:11
podría ser usando el evento Worksheet_Change

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
With Target
If Len(.Value) > 255 Then
.Value = Mid(.Value, 1, 255)
.Activate
MsgBox "Hey!"
End If
End With
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar