Из здесь вы можете сделать это:
/* Extend jQuery with functions for PUT and DELETE requests. */
function _ajax_request(url, data, callback, type, method) {
if (jQuery.isFunction(data)) {
callback = data;
data = {};
}
return jQuery.ajax({
type: method,
url: url,
data: data,
success: callback,
dataType: type
});
}
jQuery.extend({
put: function(url, data, callback, type) {
return _ajax_request(url, data, callback, type, 'PUT');
},
delete_: function(url, data, callback, type) {
return _ajax_request(url, data, callback, type, 'DELETE');
}
});
В основном это копия $.post()
с адаптированным параметром метода.
Так как вы имеете дело со строками, я бы рекомендовал использовать Long
вместо Integer
. Вы получаете эту ошибку, потому что в Private Sub buttonclick(nr As Integer)
она ожидает Integer
, и вы передаете Variant
Измените Private Sub buttonclick(nr As Integer)
на Private Sub buttonclick(nr As Long)
и используйте это [ 1119]
Private Sub distract2()
Dim nr As Long
Dim nVal As Long
nr = nextrow
If nr = 2 Then Exit Sub
nVal = nr - 1
buttonclick nVal
End Sub
Однако, когда я удаляю -1 после nr, VBA выдает ошибку ByRef. Два вопроса: кто-нибудь знает, почему это происходит? Лучше затемнить nr как Integer или нет?
blockquote>Когда вы сохраняете
-1
, оно вычитает значение на1
, и результат имеет типInteger
, и поэтому вы делаете не получить ошибку. Если быnr
было104857
, то это дало бы ошибку. Интересно ЧитатьДа, лучше сменить ваши переменные на соответствующий тип данных. Однако в вашем случае это должно быть
Long
вместоInteger
, как указано вышеВаш полный код может быть записан как
Option Explicit Private Sub distract2() Dim nr As Long Dim nVal As Long nr = nextrow If nr = 2 Then Exit Sub nVal = nr - 1 buttonclick nVal End Sub Function nextrow() As Long With ActiveSheet nextrow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 End With End Function Private Sub buttonclick(nr As Long) With ActiveSheet .Cells(nr, 2) = Now If nr = 2 Then Exit Sub .Cells(nr - 1, 3) = .Cells(nr, 2) - .Cells(nr - 1, 2) End With End Sub