Два совета при работе с Excel:
Я был немного смущен тем, что именно нужно сделать, поэтому вам нужно будет немного изменить это, чтобы он соответствовал вашим диапазонам / туда, куда вы хотите, чтобы данные шли. Если вы не уверены или вам нужна дополнительная помощь, дайте мне знать, и я обновлю это.
Dim userValue
Dim xrow As Long, ws1 As Worksheet, ws2 As Worksheet, ws3 as Worksheet, ws4 as Worksheet
Dim arrData() as variant
set ws1 = Worksheets("Report")
set ws2 = Worksheets("Sheet2")
set ws3 = Worksheets("Sheet3")
set ws4 = Worksheets("Sheet4")
userValue = ComboBox1.Value
xrow = 1
ws2.activate
'the InStr function checks if the first condition contains the second, and when it does, it returns 1, which in turn triggers the if statement
for x = 1 To ws2.Cells(rows.count, 1).end(xlup).row
if InStr(1, Cells(x, 1), userValue) > 0 Then
arrData(0) = ws2.Cells(x, 2).value
arrData(1) = ws2.Cells(x, 3).value
arrData(2) = ws2.Cells(x, 4).value
else:
end if
next x
ws3.activate
for x = 1 To ws3.Cells(rows.count, 1).end(xlup).row
if InStr(1, Cells(x, 1), userValue) > 0 Then
arrData(3) = ws3.Cells(x, 2).value
arrData(4) = ws3.Cells(x, 3).value
arrData(5) = ws3.Cells(x, 4).value
else:
end if
next x
ws4.activate
for x = 1 To ws4.Cells(rows.count, 1).end(xlup).row
if InStr(1, Cells(x, 1), userValue) > 0 Then
arrData(6) = ws4.Cells(x, 2).value
arrData(7) = ws4.Cells(x, 3).value
arrData(8) = ws4.Cells(x, 4).value
else:
end if
next x
ws1.activate
ws1.Cells(xrow, 1) = userValue
for y = 0 To 8
ws1.Cells(xrow, y+1).value = arrData(y)
next y
xrow = xrow + 1
Я заметил эту точно ту же самую вещь для обычного WinForms также. Я не могу говорить с мобильными приложениями, но в регулярных winforms это имеет тенденцию произойти.
Я полагаю, что это - на самом деле ошибка в Visual Studio.
Существуют некоторые вещи, которые можно сделать (снова, для WinForms. Я не уверен в мобильном телефоне) с добавлением атрибутов к Вашему управлению. Такой как:
[ToolboxBitmap(typeof(MyControl), "MyControlBitmap")]
На этом сайте существуют некоторые другие полезные связанные вещи:
http://en.csharp-online.net/Design-Time_Integration-Attributes
На самом деле Вы можете добавлять ключ реестра, чтобы заставить это работать также.
При выполнении Visual Studio 2008 под перспективой попытайтесь выполнить ее как Администратора. Щелкните правой кнопкой по ярлыку и выберите Выполнение как Администратора.
У меня была похожая проблема. В управляемом проекте C ++ все элементы панели инструментов по умолчанию исчезли из конструктора winforms. Немного поигравшись, я обнаружил, что возникла проблема в файле .vcproj.
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="COLLADA Import"
ProjectGUID="{0DEEF9B6-1929-44E3-92EC-13712839FB63}"
RootNamespace="COLLADAImport"
Keyword="ManagedCProj"
TargetFrameworkVersion="0"
>
Когда вы установите для TargetFrameworkVersion допустимое число, например 131072 для .Net 2.0, элементы панели инструментов вернутся.
Если вы щелкните правой кнопкой мыши на панели инструментов и выберите «Выбрать элементы ...», а затем отсортируйте их по столбцу «Пространство имен», затем вы можете выбрать те, которые вам нужны (например, System.Windows.Forms для WinForms).
Вы можете выбрать несколько элементов с помощью Shift, а затем выбрать / отмените выбор группы.
Затем элементы управления снова появятся на панели инструментов, если они включены.
Угадайте, какой пакет обновления 1 для VS 2008, и он исчезнет, а если у вас есть беспроводная мышь и клавиатура, выключите его. Выберите один из этих двух, оба работают.
Перейдите в меню «Инструменты» и выберите параметры импорта и экспорта, затем выберите параметр «Сбросить все», затем «Да». Сохраните текущие настройки, после чего панель инструментов снова появится.