[Risolto] Cella appartenente a NamedRange

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

[Risolto] Cella appartenente a NamedRange

Messaggio da giuserpe »

Ciao. Come è possibile conoscere il nome di un range predefinito a cui appartiene la cella selezionata?
Ultima modifica di giuserpe il martedì 5 settembre 2017, 11:35, modificato 3 volte in totale.
LibreOffice fresh su Windows e Linux
vladboscaneanu
Volontario
Volontario
Messaggi: 380
Iscritto il: martedì 22 ottobre 2013, 1:35

Re: Cella appartenente a NamedRange

Messaggio da vladboscaneanu »

Prima si deve dichiarare il range,poi si verificano le eventuale coincidenze di posizionamento.
Una piccola idea :

Codice: Seleziona tutto

'vladboscaneanu@gmail.com
'-------------------------------------------------------
'Abbiamo un range,ad esempio A1:B10
'e una cella.
'Si deve controllare se la cella  appartine al nostro range
'Cambiate il nome del Foglio1 con il vostro
'--------------------------------------------------------
Function Cella_o_Range(nome as string)
Cella_o_Range=ThisComponent.Sheets.GetByName("Foglio1").GetCellRangeByName(nome)
End Function
'

Sub Verifica_Cella
MiaCella = InputBox("Inserisce il nome della cella :")
IF Cella_o_Range(MiaCella).GetCellAddress().Column >= (Cella_o_Range("A1:B10").getRangeAddress().StartColumn) AND _
    Cella_o_Range(MiaCella).GetCellAddress().Column <= Cella_o_Range("A1:B10").getRangeAddress().EndColumn Then
          IF  Cella_o_Range(MiaCella).getCellAddress().Row >= Cella_o_Range("A1:B10").getRangeAddress().StartRow AND _
              Cella_o_Range(MiaCella).getCellAddress().Row <= Cella_o_Range("A1:B10").getRangeAddress().EndRow Then
                        MsgBox "La cella apartiene al range",64,"Evviva!!!"
           End If
Else
    MsgBox "La cella non apartiene al range",48,"Oh,no!"           
End If                  
End Sub
Allegati
cella.ods
(9.78 KiB) Scaricato 112 volte
LibreOffice ultima versione su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Cella appartenente a NamedRange

Messaggio da patel »

altro modo

Codice: Seleziona tutto

sub intersect
sh = ThisComponent.Sheets.GetByName("Foglio1")
MiaCella = InputBox("Inserisce il nome della cella :")
rng = sh.getCellRangeByName(miacella)
range2 = rng.queryintersection(sh.GetCellRangeByName("A1:B10").rangeaddress()) 
If range2.RangeAddressesAsString = "" Then 
    MsgBox "La cella non appartiene al range A1:B10",48,"Oh,no!"
Else  
    MsgBox "La cella appartiene al range A1:B10",64,"Evviva!!!"
end if
end sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
giuserpe
Messaggi: 127
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: Cella appartenente a NamedRange

Messaggio da giuserpe »

La soluzione è interessante, ma il mio problema è molto più generico, visto che la cella in questione può appartenere contemporaneamente anche a più ranges e mi piacerebbe se si riuscisse a risalire ai loro nomi.
Ragionando un po' dovrebbe comunque tornarmi utile.
Grazie mille.
LibreOffice fresh su Windows e Linux
Rispondi