posts - 32,  comments - 45,  trackbacks - 5
  2008年6月2日
InputBox函数和MsgBox函数很常用,特别是在与用户进行简单的交互时经常用到。 一、InputBox函数 1、作用 显示一个输入框,并提示用户在文本框中输入文本、数字或选中某个单元格区域,当按下确定按钮后返回包含文本框内容的字符串。 2、语法 InputBox(Prompt[,Title][,Default][,Xpos][,Ypos][,Helpfile,Context]) 参数说明: (1) Prompt,必需的参数,作为输入框中提示信息出现的字符串,其最大长度约为1024个字符,由所使用字符的宽度决定。如果Prompt包含多个行,则可在各行之间用回车符(Chr(13))、换行符(Chr(10))或回车换行符的组合(Chr(13)&Chr(10))来分隔。 (2) Title,可选的参数,作为输入框标题栏中的字符串。若省略该参数,则在标题栏中显示应用程序名称。 (3) Default,可选的参数,作为输入框中默认的字符串,在没有其它输入时作为缺省值。若省略该参数,则文本框为空。 (4) Xpos,可选的参数,为数值,成对出现,指定输入框的左边与屏幕左边的水平距离。若省略该参数,则输入框在水平方向居中。 (5) Ypos,可选的参数,为数值,成对出现,指定输入框的上边与屏幕上边的距离。若省略该参数,则输入框在屏幕垂直方向距下边约三分之一的位置。 (6) Helpfile,可选的参数,为字符串,表示帮助文件,用该文件为输入框提供上下文相关的帮助。若有Helpfile,则必须有Context。 (7) Context,可选的参数,为数值,帮助文件中某帮助主题的上下文编号。若有Context,则必须有Helpfile。 3、相关说明 (1)如果同时提供了Helpfile与Context参数,可以按F1键来查看与Context相应的帮助主题,Excel通常会在输入框中自动添加一个帮助(Help)按钮。 (2)如果单击确定(OK)或按下ENTER键,则InputBox函数返回文本框中的内容;如果单击取消(Cancel),则此函数返回一个长度为零的字符串("")。 (3)如果要输入多个参数并省略中间的某些参数,则必须在相应位置加入逗号分界符。 (4)InputBox函数返回的是一个字符串,若需要得到数值,则需要使用Val函数将字符串转换为一个值。 二、InputBox方法 1、作用 显示一个接收用户输入的对话框,并返回此对话框中输入的信息。运用InputBox方法可以指定需要返回的数据类型,可通过在工作表中拖放指定工作表的单元格区域,并能自动执行输入有效性验证。 2、语法 Object.InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextID,Type) 参数说明: (1)Prompt,必需的参数,为string型,表示在输入框中的文本,可为字符串、数字、日期或一个布尔值(Excel自动将值强制转换为string型)。 (2)Title,可选的参数,为Variant型,输入框窗口的标题。若省略此参数,将使用默认的标题。 (3)Default,可选的参数,为Variant型,指定在用户没有输入内容时文本框的默认值。若省略此参数,文本框中的内容为空。该值可为一个Range对象。 (4)Left,可选的参数,为Variant型。指定输入框窗口相对于屏幕左上角的x坐标。 (5)Top,可选的参数,为Variant型。指定输入框窗口相对于屏幕左上角的y坐标。 (6)HelpFile,可选的参数,为Variant型。表示此输入框使用的帮助文件名。若存在HelpFile和HelpContextID参数,则输入框中将出现一个帮助按钮。 (7)HelpContextID,可选的参数,为Variant型。表示帮助主题。 (8)Type,可选的参数,为Variant型,指定返回数据的类型。若省略此参数,输入框将返回文本。数据类型可以是下表中的其中一个或其中几个的和。 若使用适当代码的和,则返回多种数据类型。若要显示一个可以接受文本或数字的输入框,则将Type设置为3(即1和2之和,或者数字加上文本);若Type设置为8,那么可以输入一个单元格或单元格区域,或者用鼠标在工作表中的选择某个单元格区域。 InputBox方法返回的数据类型代码表 代码 说明 0 公式 1 数字 2 字符串(文本) 4 逻辑值(True或False) 8 单元格引用,为Range类型的对象 16 错误值,如#N/A 64 数值数值 3、相关说明 (1)使用 InputBox 可以显示一个简单的对话框,以便输入宏所需要的的信息。此对话框有一个“确定”按钮和一个“取消”按钮。如果选取了“确定”按钮,则InputBox将返回对话框中输入的值。如果单击“取消”按钮,则 InputBox 的值为False。 (2)如果Type为 0,InputBox将以文本格式返回输入的公式。例如,“=2*PI()/360”。如果公式中有引用,将以 A1-样式引用返回(用ConvertFormula方法转换引用样式)。 (3)如果Type为 8,InputBox将返回一个Range对象。必须用 Set 语句将结果指定给一个Range对象,如下例所示。 Set myRange = Application.InputBox(prompt := "Sample", type := 8) 如果不使用Set语句,此变量将被设为这个区域的值,而不是Range这个对象本身。 (4)如果使用 InputBox 方法要求用户输入公式,则必须使用FormulaLocal属性来将此公式指定给一个Range对象。 (5)InputBox方法与InputBox函数的区别在于:InputBox方法可以对用户的输入自动执行输入有效性验证,也可用于Excel对象、误差值、和公式的输入。需要注意的是 Application.InputBox 调用的是InputBox方法,不带对象识别符的 InputBox 调用的是InputBox函数。 4、示例 (1) 提示用户输入数字 myNum = Application.InputBox("Enter a number") (2) 提示用户在Sheet1中选取一个单元格,使用Type参数返回有效的单元格引用(一个Range对象)。 Worksheets("Sheet1").Activate Set myCell = Application.InputBox(prompt:="Select a cell", Type:=8)
posted @ 2008-06-02 15:41 Suntears 阅读(2753) 评论(0) 编辑
1、作用 在消息框中显示信息,并等待用户单击按钮,可返回单击的按钮值(比如“确定”或者“取消”)。通常用作显示变量值的一种方式。 2、语法 MsgBox(Prompt[,Buttons][,Title][,Helpfile,Context]) 参数说明: (1)Prompt,必需的参数,为字符串,作为显示在消息框中的消息文本。其最大长度约为1024个字符,由所用字符的宽度决定。如果prompt的内容超过一行,则可以在每一行之间用回车符(Chr(13))、换行符(Chr(10))或是回车与换行符的组合(Chr(13)&Chr(10))将各行分隔开来。 (2)Buttons,可选的参数,为数值表达式的值之和,指定显示的按钮的数目及形式、使用的图标样式、缺省按钮及消息框的强制回应等,可以此定制消息框。若省略该参数,则其缺省值为0。设置值见下表。 (3)Title,可选的参数,表示在消息框的标题栏中所显示的文本。若省略该参数,则将应用程序名放在标题栏中。 (4)Helpfile,可选的参数,为字符串表达式,提供帮助文件。若有Helpfile,则必须有Context。 (5)Context,可选的参数,为数值表达式,提供帮助主题。若有Context,则必须有Helpfile。 3、Button参数 用于MsgBox函数中Button参数的常量 常量 值 说明 vbOKOnly 0 只显示“确定”按钮 VbOKCancel 1 显示“确定”和“取消”按钮 VbAbortRetryIgnore 2 显示“终止”、“重试”和“忽略” 按钮 VbYesNoCancel 3 显示“是”、“否”和“取消”按钮 VbYesNo 4 显示“是”和“否”按钮 VbRetryCancel 5 显示“重试”和“取消”按钮 VbCritical 16 显示“关键信息”图标 VbQuestion 32 显示“警告询问”图标 VbExclamation 48 显示“警告消息”图标 VbInformation 64 显示“通知消息”图标 vbDefaultButton1 0 第一个按钮是缺省值(缺省设置) vbDefaultButton2 256第二个按钮是缺省值 vbDefaultButton3 512第三个按钮是缺省值 vbDefaultButton4 768第四个按钮是缺省值 vbApplicationModal 0应用程序强制返回;应用程序一直被挂起,直到用户对消息框 作出响应才继续工作 vbSystemModal 4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作 出响应才继续工作 vbMsgBoxHelpButton 16384将Help按钮添加到消息框 VbMsgBoxSetForeground 65536指定消息框窗口作为前景窗口 vbMsgBoxRight 524288文本为右对齐 vbMsgBoxRtlReading 1048576指定文本应为在希伯来和阿拉伯语系统中的从右到左显示 说明: (1)第一组值(0–5)描述了消息框中显示的按钮的类型与数目;第二组值(16,32,48,64)描述了图标的样式;第三组值(0,256,512,768)说明哪一个按钮是缺省值;而第四组值(0,4096)则决定消息框的强制返回性。将这些数字相加以生成Buttons参数值的时候,只能由每组值取用一个数字。 (2)这些常数都是VBA指定的,可以在程序代码中使用这些常数名称代替实际数值。 4、返回值 用于MsgBox函数返回值的常量 常数 值 说明 vbOK 1 确定 vbCancel 2 取消 vbAbort 3 终止 vbRetry 4 重试 vbIgnore 5 忽略 vbYes 6 是 vbNo 7 否 5、相关说明 (1) 如果同时提供了Helpfile与Context参数,可以按F1键来查看与Context相应的帮助主题,Excel通常会在输入框中自动添加一个帮助(Help)按钮。 (2)若在消息框中显示“取消”按钮,则按下ESC键与单击“取消”按钮效果相同。若消息框中有“帮助”按钮,则提供相关的帮助信息。 (3)如果要输入多个参数并省略中间的某些参数,则必须在相应位置加入逗号分界符。 6、示例 (1)使用 MsgBox 函数,在具有“是”及“否”按钮的对话框中显示一条严重错误信息。示例中的缺省按钮为“否”,MsgBox函数的返回值视用户按哪一个钮而定。并假设DEMO.HLP为一帮助文件,其中有一个帮助主题代码为1000。 Dim Msg,Style,Title,Help,Ctxt,Response,MyString Msg="Do you want to continue ?" ’定义消息文本 Style = vbYesNo + vbCritical + vbDefaultButton2 ' 定义按钮 Title = "MsgBox Demonstration" ' 定义标题文本 Help = "DEMO.HLP" ' 定义帮助文件 Ctxt = 1000 ' 定义帮助主题 Response = MsgBox(Msg, Style, Title, Help, Ctxt) If Response = vbYes Then ' 用户按下“是” MyString = "Yes" ' 完成某操作 Else ' 用户按下“否” MyString = "No" ' 完成某操作 End If (2)只显示某消息 MsgBox “Hello!” (3)将消息框返回的结果赋值给变量 Ans=MsgBox(“Continue?”,vbYesNo) If MsgBox(“Continue?”,vbYesNo)<>vbYes Then Exit Sub (4)使用常量的组合,赋值组Config变量,并设置第二个按钮为缺省按钮 Config=vbYesNo+vbQuestion+vbDefaultButton2 (5)若要在消息中强制换行,可在文本中使用vbCrLf(或vbNewLine)常量,用&加空格与字符隔开。如 MsgBox “This is the first line.” & vbNewLine & “Second line.” (6)可以在消息框中使用vbTab常量插入一个制表符。下面的过程使用一个消息框来显示5×5单元格区域中的所有值,用vbTab常量分隔列并使用vbCrLf常量插入一个新行。注意在MsgBox函数最多只显示1024个字符,因此限制了可显示的单元格数。 Option Explicit Sub ShowRangeValue() Dim Msg As String Dim r As Integer, c As Integer Msg = "" For r = 1 To 5 For c = 1 To 5 Msg = Msg & Cells(r, c) & vbTab Next c Msg = Msg & vbCrLf Next r MsgBox Msg End Sub (7)在消息框语句中运用工作表函数以及设置显示的数置格式,如下面语句所示: MsgBox " selection has " & m & " cells ." & Chr(13) & " the sum is :" & Application.WorksheetFunction.Sum(Selection) & Chr(13) & "the average is :" & Format(Application.WorksheetFunction.Average(Selection), "#,##0.00"), vbInformation, "selection count & sum & average" & Chr(13)问题的提出及解决 在VBE编辑器中输入下面的代码后, MsgBox "I am "a" boy." 光标移出该句代码后,将会提示“编译错误:缺少:语句结束”。 即,如何在信息中显示双引号(“ “)? 解决的方法是,在要显示双引号的字符或字符串外面使用双层双引号,如上面的代码,正确的输入如下: MsgBox "I am ""a"" boy." 信息框中的各种图标 在MsgBox函数中为参数buttons指定常量值,可以显示相应的图标。其中,常量vbExclamation显示“警告消息”图标,常量vbQuestion显示“警告询问”图标,常量vbCritical显示“关健信息”图标并伴有提示声,常量vbInformation显示“信息”图标。注意,这四个常量若相互组合,将不会显示任何图标。 控制换行和云? 在MsgBox函数中,可以使用常量vbCrLf或者常量vbNewLine在显示的消息框中强制换行。下面的代码运行后将显示如图3所示的有4行文本的消息框。 Sub testLine() MsgBox "第一行" & vbCrLf _ & "第二行" & vbCrLf _ & "第三行" & vbNewLine _ & "第四行" End Sub 同时,还可以使用常量vbTab来插入一个制表符分隔列,达到使消息框中各列对齐的效果。下例用一个消息框显示当前工作表中A1至F11单元格区域中的内容,结果如图4所示。 Sub 测试排列() Dim msg As String Dim r As Long, c As Long msg = "" For r = 1 To 11 For c = 1 To 6 msg = msg & Cells(r, c) & vbTab Next c msg = msg & vbCrLf Next r MsgBox msg, vbInformation End Sub 但是,MsgBox函数最多只能接受1023个字符,即限制了可以在消息框中显示内容的长度。
posted @ 2008-06-02 15:40 Suntears 阅读(1341) 评论(0) 编辑
  2007年5月17日

有五種動物,老虎、猴子、孔雀、大象和狗

你到一個從未去過的原始森林探險,帶著這五種物,
四周環境危險重重,你迫於無奈要把他們一一放棄。
你會按著什麼次序把牠們放棄呢??
好了嗎.....其實這個問題的答案意味著你在困苦的環境中首先放棄什麼。

孔雀代表你的伴侶,愛人;

老虎代表你對金錢和權力的慾望;

大象代表你的父母;

狗代表你的朋友;

猴子代表你的子女。

如果你選擇孔雀為首先放棄的動物,有想過為什麼嗎?

對於我來說,我並不認為自己是一個在危難困苦關頭最先放棄我的愛人的。

選擇最先棄孔雀是因為我覺得孔雀是在艱苦的環境中最不能

幫助我的動物。

我對此心理測驗很不以為然,於是開始讓許多人來做這個遊戲。

無一例外,首先放棄的都是孔雀。

當我最後揭示答案,許多人的反應也正像我的反應一樣,

有人還認為設計這個遊戲的人一定心理不太正常。

有一天我給一位朋友打電話的時候突然想起了這個問題,於是也讓他做。

這個朋友考慮良久之後對我說﹕猴子,老虎,大象,狗,孔雀。

我大吃一驚,他是我遇到的唯一一最後選擇放棄孔雀的人。

為什麼最後放棄孔雀? 我一個勁地追問。

他對我說﹕「你想想,在這所有的動物中,唯有孔雀是

最沒有保護自己的能力的,我怎麼能輕易放棄,讓牠陷

於險境呢!」

我頓時明白了我的悲哀。在我們選擇的過程中,我們太多地

考慮了別人對我們的付出,而沒有想到別人需要我們什麼樣的付出。

posted @ 2007-05-17 17:40 Suntears 阅读(329) 评论(5) 编辑
摘要: 功能很单一,也不是很完善~~,虚心听各位的教诲*^_^*代码如下:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Data;usingSystem.Xml;usingSystem.Text;usingSy...阅读全文
posted @ 2007-05-17 14:23 Suntears 阅读(916) 评论(2) 编辑
  2007年4月25日
<html>
<!--//this code by hongseheike-->
<head>
<script language="javascript">
ns4 = (document.layers) ? true : false;
ie4 = (document.all) ? true : false;
function keyDown(e){
if(ns4){
var nkey=e.which;
var iekey='现在是ns浏览器';
var realkey=String.fromCharCode(e.which);
}
if(ie4){
var iekey=event.keyCode;
var nkey='现在是ie浏览器';
var realkey=String.fromCharCode(event.keyCode);
if(event.keyCode==32){realkey='\' 空格\''}
if(event.keyCode==13){realkey='\' 回车\''}
if(event.keyCode==27){realkey='\' Esc\''}
if(event.keyCode==16){realkey='\' Shift\''}
if(event.keyCode==17){realkey='\' Ctrl\''}
if(event.keyCode==18){realkey='\' Alt\''}
}
alert('ns浏览器中键值:'+nkey+'\n'+'ie浏览器中键值:'+iekey+'\n'+'实际键为'+realkey);
}
document.onkeydown = keyDown;
if(ns4){
document.captureEvents(Event.KEYDOWN);}
</script>
</head>
<body>
//Javascript Document
<hr>
<center>
<h3>请按任意一个键。。。。</h3>
</center>
</body>
</html>

**********************************************************************
使用javascript在WEB页面中截获键盘输入
使用event对象的keyCode属性判断输入的键值
eg:if(event.keyCode==13)alert(“enter!”);
键值对应表
A  0X65  U   0X85
B  0X66  V   0X86
C  0X67  W   0X87
D  0X68  X   0X88
E  0X69  Y   0X89
F  0X70  Z   0X90
G  0X71  0   0X48
H  0X72  1   0X49
I  0X73  2   0X50
J  0X74  3   0X51
K  0X75  4   0X52
L  0X76  5   0X53
M  0X77  6   0X54
N  0X78  7   0X55
O  0X79  8   0X56
P  0X80  9   0X57
Q  0X81 ESC  0X1B
R  0X82 CTRL  0X11
S  0X83 SHIFT 0X10
T  0X84 ENTER 0XD

如果要使用组合键,则可以利用event.ctrlKey,event.shiftKey,event .altKey判断是否按下了ctrl键、shift键以及alt键
posted @ 2007-04-25 13:30 Suntears 阅读(764) 评论(0) 编辑
  2007年4月24日
最近写进度条写的有点上瘾,这次弄了个ajax的(*^_^*)
由于之前的那篇(http://www.cnblogs.com/suntears/archive/2007/04/24/724833.html)已经对前台如何控制图片进行了演示,这次就仅仅做功能模拟。别忘了打开页面的时候加上start参数,这样才可以启动查数程序。

前台代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
<html>
  
<head>
    
<title>ajaxguagedemo</title>
    
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    
<meta name="CODE_LANGUAGE" Content="C#">
    
<meta name=vs_defaultClientScript content="JavaScript">
    
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
    
<script language=javascript >
function returnresponse()
{
    urls
="ajaxguagedemo.aspx?guage=1";
    
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlHttp.open(
"GET",urls,true);
    xmlHttp.onreadystatechange
=function(){
        
if(xmlHttp.readyState==4)
        
{
            temp
=xmlHttp.responseText;
            document.getElementById(
"ddf").innerText=temp;
            
if(temp!="100%")
            
{
            returnresponse();
            }

        }

    }

    xmlHttp.send(urls);
}

    
</script>
  
</head>
  
<body MS_POSITIONING="GridLayout">
    
<form id="Form1" method="post" runat="server">
    
<input type=button onclick="returnresponse()" value=1111111>
    
<div id=ddf></div>
    
</form>
  
</body>
</html>

后台代码如下:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Threading;
namespace guagedemo
{
    
/// <summary>
    
/// ajaxguagedemo 的摘要说明。
    
/// </summary>

    public class ajaxguagedemo : System.Web.UI.Page
    
{
        
static public int percent=0;//静态变量,记录百分比
        private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
            if(Request.QueryString["start"]!=null)
            
{
                startThread();
//开始新进程处理查数程序
            }

            
if(Request.QueryString["guage"]!=null)
            
{
                ajaxResponse();
//响应ajax,返回百分比
            }

        }

        
private void guage()
        
{
            
for(int i=0;i<100;i++)
            
{
                percent
++;
                Thread.Sleep(
500);
            }

        }

        
public void startThread()
        
{
            System.Threading.Thread thread
=new System.Threading.Thread(new System.Threading.ThreadStart(guage));
            thread.Start();
        }

        
private void ajaxResponse()
        
{
            Response.Write(percent.ToString()
+"%");
            Response.Flush();
            Response.Close();
        }


        
Web 窗体设计器生成的代码
    }

}


很简单,看页面说明足够理解了。
附上Demo
posted @ 2007-04-24 15:10 Suntears 阅读(6306) 评论(13) 编辑
摘要: 上一篇只是备份了下代码,这次是可以独立运行的demo。demo模拟的是发送多封邮件过程中进度条的显示。其中图片设计的不太规范,所以js控制进度条移动的代码有点乱,这个大家可以替换成自己的,这里只是演示作用。进度条动态增长的原理是:一个中间扣空的酒瓶子图片,这个图片下面放另外一张图片,移动下层图片以实现进度条增长效果。usingSystem;usingSystem.Collections;using...阅读全文
posted @ 2007-04-24 10:13 Suntears 阅读(4328) 评论(6) 编辑
  2007年4月23日
摘要: 完成上级任务写的代码,还没整理优化,仅仅做个备份,hoho,冗余度很高,效率也低,见谅见谅……usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Web;usingSystem.Web.SessionSt...阅读全文
posted @ 2007-04-23 17:48 Suntears 阅读(1464) 评论(3) 编辑
  2007年4月14日
摘要: 在javascript中得到当前窗口的高和宽 <body><SCRIPTLANGUAGE="JavaScript"> vars=""; s+="\r\n网页可见区域宽:"+document.body.clientWidth; s+="\r\n网页可见区域高:"+document.body.clientHeight; s+="\r\n网页可见区域宽:"+document.bo...阅读全文
posted @ 2007-04-14 10:45 Suntears 阅读(100) 评论(0) 编辑
  2007年4月12日
摘要: privatestringbuildurl(stringurl,stringparam){stringurl1=url;if(url.IndexOf(param)>0){if(url.IndexOf("&",url.IndexOf(param)+param.Length)>0){url1=url.Substring(0,url.IndexOf(param)-1)+url.Sub...阅读全文
posted @ 2007-04-12 14:52 Suntears 阅读(850) 评论(3) 编辑
点击这里给我发消息