我想这很简单,但由于某些原因它似乎对我不起作用:(
我有以下代码,它根据我指定的条件自动过滤数据:
Dim lastrow As Long
lastrow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row
With Sheet2
.AutoFilterMode = False
With .Range("A1:AF" & lastrow)
.AutoFilter
.AutoFilter Field:=7, Criteria1:="Yes", Operator:=xlFilterValues
End With
Run Code Online (Sandbox Code Playgroud)
我现在要做的是删除所有不符合条件的Unfiltered(Hidden)行.
我到目前为止尝试过:
Sub RemoveHiddenRows
Dim oRow As Object
For Each oRow In Sheets("Sheet2").Rows
If oRow.Hidden Then oRow.Delete
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
但是这个代码的问题是它只会删除连续隐藏行的每一行,因为即使删除了一行并且所有较低的行都向上移动了一行,每个行都会增加所考虑的行.
如果可能的话,我更喜欢没有循环的东西,有点像相反的东西.SpecialCells(xlCellTypeVisible).EntireRow.Delete
所有帮助将受到高度赞赏.
我期待在用户窗体上的Image控件中查看工作表中的图像.
此图像将根据组合框上的值更改.我已将(使用:插入 - >图片)一些图像插入到我的工作簿的"Sheet1"中,并将其命名为"Picture1"和"Picture2".
我创建了以下UserForm:
表格http://im56.gulfup.com/msKyqi.png
这是我尝试使用的代码,以便从工作表加载图像,但不幸的是,目前这不起作用.
Private Sub ComboBox1_Change()
UserForm1.Image1.Picture = LoadPicture(Worksheets("Sheet1").Shapes(ComboBox1.Value))
End Sub
Private Sub UserForm_Initialize()
UserForm1.ComboBox1.Clear
UserForm1.ComboBox1.AddItem "Picture1"
UserForm1.ComboBox1.AddItem "Picture2"
UserForm1.ComboBox1.Value = "Picture1"
UserForm1.Image1.Picture = LoadPicture(Worksheets("Sheet1").Shapes(ComboBox1.Value))
End Sub
Run Code Online (Sandbox Code Playgroud)
每次运行此代码时,我都会收到以下错误:
错误http://im43.gulfup.com/YoWvTp.png
请指教.
我使用以下代码使用outlook从excel发送电子邮件:
Private Sub SendEmail()
Set OutlookApp = CreateObject("Outlook.Application")
Set OlObjects = OutlookApp.GetNamespace("MAPI")
Set newmsg = OutlookApp.CreateItem(olMailItem)
newmsg.Recipients.Add ("name@domain.com; name2@domain.com; name3@domain.com")
newmsg.Subject = "Test Mail"
newmsg.Body = "This is a test email."
'newmsg.Display
newmsg.Send
End Sub
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但是当我尝试发送电子邮件时,我从Outlook得到以下错误:
ErrorScreen http://im58.gulfup.com/GRENlB.png
奇怪的是,如果我将新消息打开两三分钟,名称将自动得到解决:
工作http://im74.gulfup.com/qmOYGQ.png
但是这不适合我,因为我不希望在发送之前显示消息.我希望在运行代码后立即发送它.
任何建议或解决方法将不胜感激.
作为旁注:我已经尝试在Outlook中启用"允许逗号作为电子邮件分隔符"选项,然后使用逗号而不是分号,但我仍然面临同样的问题.
更新:
以下是工作代码,根据Dmitry Streblechenko的回答:
Private Sub SendEmail()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OlObjects = OutApp.GetNamespace("MAPI")
Set OutMail = OutApp.CreateItem(olMailItem)
On Error Resume Next
With …Run Code Online (Sandbox Code Playgroud) 我希望让用户选择他们导出的PDF文件的路径和文件名.
我创建了以下内容来显示SaveAs对话框:
Sub Test3()
Set myFile = Application.FileDialog(msoFileDialogSaveAs)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
.ButtonName = "&Save As"
.initialFilename = "Export"
.Title = "Save PDF as"
If .Show <> -1 Then
MsgBox "You have cancelled"
Exit Sub
End If
FileSelected = .SelectedItems(1)
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
FileSelected稍后将值输入pdf导出代码.
我想在上面的FileSave对话框中添加一个过滤器,以便它只显示PDF作为文件保存类型.
目前最终的价值FileSelected是"Driveletter:/ Folder/Name.xlsm ",所以当我将它输入pdf导出时,它会保存带有xlsm扩展名的pdf.
我试过.Filter.Clear,然后.Filters.Add没有太多运气.
任何帮助将非常感谢!
基本上我有一个我创建的Userform,我想知道是否可以在Userform加载时添加Gray文本,但是一旦用户开始在TextBox中输入文本就会消失:
用户形式http://im34.gulfup.com/rDwF8.png
一旦用户开始输入字体颜色应该变为黑色.
任何帮助,将不胜感激.
我面临一个奇怪的问题,真的不确定为什么:(
所以看看下面的内容(所有细胞形成为2 dp的百分比):
表http://im61.gulfup.com/xXpJZu.png
现在这里是Code1:
If Worksheets("Sheet1").Range("A2").Value < Worksheets("Sheet1").Range("B2").Value Then
MsgBox "Yes"
Else
MsgBox "Nope"
End If
Run Code Online (Sandbox Code Playgroud)
结果:正常工作并显示"Nope",因为"Text"一词不能小于数字/百分比.
代码2:
If Worksheets("Sheet1").Range("A2").Value > Worksheets("Sheet1").Range("B2").Value Then
MsgBox "Yes"
Else
MsgBox "Nope"
End If
Run Code Online (Sandbox Code Playgroud)
结果:无法正常工作并显示"是".这就是问题所在.我不明白为什么它认为"文字"这个词大于"10%"或"0.1".
我想了一下问题可能在于单元格的格式化,所以我将其更改为General,然后更改为Text但我仍然得到相同的结果.
另外,最令我惊讶的是,当我输入"<"符号时,它可以正常工作,但在使用">"符号时会给出错误的结果.
我错过了什么?