Подскажите, пожалуйста, по части кода. Если листы есть Hidden - обрабатывается корректно. Если есть листы VeryHidden -некорректно. Суть в том, что при вызове формы в комбобокс подставляется текущий лист), как правильно видоизменить (см. ниже)? Код:
[vba]
Код
Function addListsToComboBox(myCombobox As ComboBox) As Integer Dim wb As Workbook Dim sh As Worksheet Dim shActName As String Set wb = ActiveWorkbook
shActName = ActiveSheet.name
f = wb.name returnValue = 0 VisibleListCount = 0
For j = 1 To wb.Sheets.Count Set sh = wb.Sheets(j) If sh.Visible = True Then VisibleListCount = VisibleListCount + 1 End If Next
For j = 1 To VisibleListCount Set sh = wb.Sheets(j) If sh.Visible = True Then myCombobox.AddItem (sh.name) If sh.name = shActName Then returnValue = j - 1 End If End If Next
addListsToComboBox = returnValue End Function
[/vba]
Подскажите, пожалуйста, по части кода. Если листы есть Hidden - обрабатывается корректно. Если есть листы VeryHidden -некорректно. Суть в том, что при вызове формы в комбобокс подставляется текущий лист), как правильно видоизменить (см. ниже)? Код:
[vba]
Код
Function addListsToComboBox(myCombobox As ComboBox) As Integer Dim wb As Workbook Dim sh As Worksheet Dim shActName As String Set wb = ActiveWorkbook
shActName = ActiveSheet.name
f = wb.name returnValue = 0 VisibleListCount = 0
For j = 1 To wb.Sheets.Count Set sh = wb.Sheets(j) If sh.Visible = True Then VisibleListCount = VisibleListCount + 1 End If Next
For j = 1 To VisibleListCount Set sh = wb.Sheets(j) If sh.Visible = True Then myCombobox.AddItem (sh.name) If sh.name = shActName Then returnValue = j - 1 End If End If Next
Function addListsToComboBox(myCombobox As ComboBox) As Long Dim wb As Workbook Dim sh As Worksheet Dim shActName As String Dim returnValue As Long, VisibleListCount As Long, j As Long
Set wb = ActiveWorkbook shActName = ActiveSheet.name
For j = 1 To wb.Sheets.Count Set sh = wb.Sheets(j) If sh.Visible Then myCombobox.AddItem (sh.name) VisibleListCount = VisibleListCount + 1 If sh.name = shActName Then returnValue = VisibleListCount - 1 End If Next j addListsToComboBox = returnValue End Function
[/vba]
Решил
[vba]
Код
Function addListsToComboBox(myCombobox As ComboBox) As Long Dim wb As Workbook Dim sh As Worksheet Dim shActName As String Dim returnValue As Long, VisibleListCount As Long, j As Long
Set wb = ActiveWorkbook shActName = ActiveSheet.name
For j = 1 To wb.Sheets.Count Set sh = wb.Sheets(j) If sh.Visible Then myCombobox.AddItem (sh.name) VisibleListCount = VisibleListCount + 1 If sh.name = shActName Then returnValue = VisibleListCount - 1 End If Next j addListsToComboBox = returnValue End Function
Дурацкая привычка сначала написать, потом подумать - могу ли я сам решить) Еще до того, как на msdn ответили, додумался, там чуть корректнее правда решение)
Дурацкая привычка сначала написать, потом подумать - могу ли я сам решить) Еще до того, как на msdn ответили, додумался, там чуть корректнее правда решение)w00t
Сообщение отредактировал w00t - Четверг, 02.05.2013, 14:52