Из того, что я могу расшифровать из вашего кода.
1-выберите А1 и в конце (вниз) до последней ячейки + 1, затем сделайте эту ячейку = "abc"
2-Вы не знаете, как начать с А2, поэтому у вас есть if cell starts with a then rowstart=2
[ 116]
Выполните 3 цикла по каждой ячейке и найдите «bcd» или «efgh» и удалите строки
4-ступенчатый цикл при переходе к исходному «abc»
[119 ] 5-Назовите оставшийся диапазон ячеек со значением в A1
Самый быстрый способ, который я нашел, чтобы удалить значения строк в столбце строк, - использовать функцию VBA replace () и заменить значения с пробелами, вы можете использовать специальные ячейки, чтобы удалить пробелы.
Я заметил в вашем коде, что вы используете end(xldown)
, который показывает мне, что в ваших данных нет пробелов для запуска, поэтому замена этих конкретных ячеек на пробелы будет работать.
Для пары тысяч строк результат очень быстрый, хотя не уверен насчет десятков тысяч строк.
Sub Button1_Click()
Dim sh As Worksheet, rng As Range
Set sh = ActiveSheet
With sh
Set rng = .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
With rng
.Replace what:="bcd", replacement:="", lookat:=xlPart, MatchCase:=False
.Replace what:="efgh", replacement:="", lookat:=xlPart, MatchCase:=False
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
.Range("A2:J" & .Cells(.Rows.Count, "A").End(xlUp).Row).Name = .Range("A1").Value
End With
End Sub
Если Вы просто хотите проверить, возросла ли сеть затем на использование:
bool networkUp
= System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
Для проверки состояния определенного интерфейса (или другая информация) использование:
NetworkInterface[] networkCards
= System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
Для проверки состояния удаленного компьютера затем необходимо будет соединиться с тем компьютером (см. другие ответы)
можно попытаться соединиться с IP-адресом с помощью чего-то как:
IPEndPoint ipep = new IPEndPoint(Ipaddress.Parse("IP TO CHECK"), YOUR_PORT_INTEGER);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Connect(ipep);
я предлагаю Вас контрольному коду программы "Чата". Эти программы управляют большим количеством IP-соединений и дадут Вам хорошую идею того, как проверить, доступен ли IP.
114-секундное предложение (Ping)можно попытаться проверить с помощью ping-запросов. Вот польза учебное руководство . Необходимо будет только сделать:
Ping netMon = new Ping();
PingResponse response = netMon.PingHost(hostname, 4);
if (response != null)
{
ProcessResponse(response);
}
Ну, Вы попытались бы соединиться с определенным IP, и дескриптор отклоняет и тайм-ауты.
Взгляд на класс TcpClient в Системе. Сеть. Пространство имен сокетов.
Если Вы интересуетесь кодом состояния HTTP, следующее хорошо работает:
using System;
using System.Net;
class Program {
static void Main () {
HttpWebRequest req = WebRequest.Create(
"http://www.oberon.ch/") as HttpWebRequest;
HttpWebResponse rsp;
try {
rsp = req.GetResponse() as HttpWebResponse;
} catch (WebException e) {
if (e.Response is HttpWebResponse) {
rsp = e.Response as HttpWebResponse;
} else {
rsp = null;
}
}
if (rsp != null) {
Console.WriteLine(rsp.StatusCode);
}
}
}
С уважением, tamberg
Если вы хотите отслеживать изменения в статусе используйте событие System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged
:
NetworkChange.NetworkAvailabilityChanged
+= new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
_isNetworkOnline = NetworkInterface.GetIsNetworkAvailable();
// ...
void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
_isNetworkOnline = e.IsAvailable;
}