Dim strNom As String
Dim strFog As String
Dim NOMEFOGLIO As String
Dim Counter
Dim i As Integer
Dim Sh As Worksheet
Dim MonNom As String
Dim BonNom As Boolean
Dim LeString
Sub ANALISI()
'
'Definisce i caratteri non validi
LeString = ":/?*[] " '
'
' Scelta rapida da tastiera: CTRL+w
'
'
Application.Calculation = xlManual
'definisce le finestre
NOMEFILE = ActiveWorkbook.Name
NOMEFINESTRA1 = NOMEFILE & ":1"
NOMEFINESTRA2 = NOMEFILE & ":2"
NOMEFINESTRA3 = NOMEFILE & ":3"
'Seleziona il folgio prezzi nella finestra 2
ActiveWorkbook.Windows(NOMEFINESTRA2).Activate
Sheets("PREZZI").Select
FOGLIO_RIFERIMENTO = InputBox("NOME DEL FOGLIO DA COPIARE")
If FOGLIO_RIFERIMENTO = "" Then
GoTo FINE
Else: GoTo PROSEGUI
PROSEGUI:
'definisce la posizione dl codice art - n° scheda - prezzo di analisi
Sheets(FOGLIO_RIFERIMENTO).Select
CODICE_ART = Range("B2").Value
NUMERO_Scheda = Range("C2").Value
PREZZO_DI_ANALISI = Range("D2").Value
Sheets("PREZZI").Select
Counter = InputBox("Numero totale righe da analizzare POSIZIONARSI CON IL CURSORE SUL CODICE PREZZO")
ActiveCell.Select
' Loop fino all'esaurimento dei delle schede previste
For i = 1 To Counter
'POSIZIONARSI CON IL CURSORE SUL CODICE PREZZO
Sheets("PREZZI").Select
NOMEFOGLIO = ActiveCell.Value
strFog = ActiveCell.Offset(rowOffset:=0, columnOffset:=-1).Value
'VERIFICHE SUL NOME DEL FOGLIO
Do
BonNom = True
If NOMEFOGLIO <> "" Then
'verifica se il nome non esiste...
For A = 1 To ActiveWorkbook.Worksheets.Count
If UCase(NOMEFOGLIO) = UCase(Worksheets(A).Name) Then
supp = MsgBox( _
"Un foglio con questo nome è già presente," _
+ vbCrLf + vbCrLf + _
"volete sostituirlo ?.", vbYesNo + vbOKOnly, _
"Nome già usato")
If supp = vbYes Then
Application.DisplayAlerts = False
Worksheets(NOMEFOGLIO).Delete
Application.DisplayAlerts = True
Exit For
Else
BonNom = False
NOMEFOGLIO = InputBox("Qual è il nome per" _
+ vbCrLf + "il foglio ?", _
"dare nome ", MonNom)
MonNom = NOMEFOGLIO
Exit For
End If
End If
Next
'verifica che il nome non fa più di 31 caratteri...
If Len(NOMEFOGLIO) > 31 Then
MsgBox "Il numero di carattere (" & _
Len(NOMEFOGLIO) & ") del nome è troppo grande" _
+ vbCrLf + " il massimo è (31) per excel.", _
vbCritical + vbInformation, "Nome troppo longo"
BonNom = False
MonNom = NOMEFOGLIO
End If
'verifica se nel nome non ci sono caratteri vietati...
VERIFICA3:
NOMEFOGLIO = Replace(NOMEFOGLIO, " ", " ")
NOMEFOGLIO = Replace(NOMEFOGLIO, " ", ".")
NOMEFOGLIO = Replace(NOMEFOGLIO, "/", ".")
NOMEFOGLIO = Replace(NOMEFOGLIO, "-", ".")
NOMEFOGLIO = Replace(NOMEFOGLIO, ":", ".")
NOMEFOGLIO = Replace(NOMEFOGLIO, "*", ".")
NOMEFOGLIO = Replace(NOMEFOGLIO, "?", ".")
Else
Exit Sub
End If
Loop Until BonNom = True
'Windows("DIM.xlsb:1").Activate
Sheets(FOGLIO_RIFERIMENTO).Copy Before:=Sheets(FOGLIO_RIFERIMENTO)
'
ActiveSheet.Name = NOMEFOGLIO
Sheets(NOMEFOGLIO).Select
' COLORA LA SCHEDA DI ARANCIONE
ActiveWorkbook.Sheets(NOMEFOGLIO).Tab.ColorIndex = 45
Range(CODICE_ART).Select
ActiveCell.FormulaR1C1 = NOMEFOGLIO
Range(NUMERO_Scheda).Select
ActiveCell.FormulaR1C1 = strFog
strNom = "_sh" & strFog
STRTMP = "=" & NOMEFOGLIO & "!" & Worksheets(NOMEFOGLIO).Range(NUMERO_Scheda).Address(ReferenceStyle:=xlR1C1)
ActiveWorkbook.Names.Add Name:=strNom, RefersToR1C1:=STRTMP
Range(PREZZO_DI_ANALISI).Select
strNom = "_" & Range(CODICE_ART).Value
STRTMP = "=" & NOMEFOGLIO & "!" & Worksheets(NOMEFOGLIO).Range(PREZZO_DI_ANALISI).Address(ReferenceStyle:=xlR1C1)
ActiveWorkbook.Names.Add Name:=strNom, RefersToR1C1:=STRTMP
Counter = Counter - 1
' Selects the next cell.
'Windows("DIM.xlsb:2").Activate
Sheets("PREZZI").Select
ActiveCell.Offset(1, 0).Select
With ActiveWindow
.DisplayGridlines = False
.DisplayZeros = False
End With
Next i
Application.Calculation = xlAutomatic
Application.Goto Reference:=strNom
End If
FINE:
End Sub |