我正在和VBA合作.我写了一个用户定义函数,它接受一个string,处理它并返回一个清理过的string.我不确定它有什么问题.我无法调用它并要求它处理我的字符串并将其返回.我在想我定义或返回它的方式有误.
Public Function ProcessString(input_string As String) As String
' The temp string used throughout the function
Dim temp_string As String
For i = 1 To Len(input_string)
temp_string = Mid(input_string, i, 1)
If temp_string Like "[A-Z, a-z, 0-9, :, -]" Then
return_string = return_string & temp_string
End If
Next i
return_string = Mid(return_string, 1, (Len(return_string) - 1))
ProcessString = return_string & ", "
End Function
Run Code Online (Sandbox Code Playgroud)
我像这样使用这个功能
Worksheets(data_sheet).Range("C2").Value = ProcessString(last_name)
Run Code Online (Sandbox Code Playgroud)
姓氏是一个字符串变量,通常看起来像这样Lastname*****,我试图删除它背后的所有星星.让它在Lastname没有星星的情况下返回.
Compile error: ByRef …
我刚开始学习如何创建自定义弹出对话框; 事实证明,tkinter messagebox它真的很容易使用,但它也没有做太多.这是我尝试创建一个对话框,该对话框将接受输入,然后将其存储在用户名中.
我的问题是实现这个的推荐方式是什么?正如布莱恩·奥克利在这篇评论中所说.
我建议不要使用全局变量.不要让对话框自行销毁,而是让它只销毁实际的小部件,但让对象保持活着状态.然后,调用像
inputDialog.get_string(),然后del inputDialog从你的主要逻辑.
也许使用全局变量来返回我的字符串不是最好的主意,但为什么呢?建议的方式是什么?我感到困惑,因为一旦窗口被破坏,我不知道如何触发getstring,并且......关于破坏实际小部件的线,我不确定他是否指的是TopLevel.
我问的原因是因为我想按下提交按钮后弹出框被销毁; 因为毕竟,我希望它恢复到主程序,更新一些东西等等.send在这种情况下按钮方法应该做什么?因为这个特定示例中的想法是允许用户一次又一次地执行它,如果他愿意的话.
import tkinter as tk
class MyDialog:
def __init__(self, parent):
top = self.top = tk.Toplevel(parent)
self.myLabel = tk.Label(top, text='Enter your username below')
self.myLabel.pack()
self.myEntryBox = tk.Entry(top)
self.myEntryBox.pack()
self.mySubmitButton = tk.Button(top, text='Submit', command=self.send)
self.mySubmitButton.pack()
def send(self):
global username
username = self.myEntryBox.get()
self.top.destroy()
def onClick():
inputDialog = MyDialog(root)
root.wait_window(inputDialog.top)
print('Username: ', username)
username = 'Empty'
root = tk.Tk()
mainLabel = tk.Label(root, text='Example …Run Code Online (Sandbox Code Playgroud) 我无法运行这段代码.该课程是学生,它有一个IdCounter,它就是问题所在.(第8行)
class Student:
idCounter = 0
def __init__(self):
self.gpa = 0
self.record = {}
# Each time I create a new student, the idCounter increment
idCounter += 1
self.name = 'Student {0}'.format(Student.idCounter)
classRoster = [] # List of students
for number in range(25):
newStudent = Student()
classRoster.append(newStudent)
print(newStudent.name)
Run Code Online (Sandbox Code Playgroud)
我想把这个idCounter放在我的Student班级里面,所以我可以将它作为学生名字的一部分(例如,它真的是一个ID#Student 12345.但我一直在收到错误.
Traceback (most recent call last):
File "/Users/yanwchan/Documents/test.py", line 13, in <module>
newStudent = Student()
File "/Users/yanwchan/Documents/test.py", line 8, in __init__
idCounter += 1
UnboundLocalError: local variable …Run Code Online (Sandbox Code Playgroud) 我如何有条件地格式化单元格,如果不是空白,它是灰色的?
我试图做'不等于',但它没有用.
我正在使用Windows Office 2003和Windows XP.我没有看到与以下相同的功能:

到目前为止我尝试了什么:

编辑:想出错了什么.在我的作品(实际工作Excel)中,它们充满了白色.这不是我的Excel文件,所以我之前没有意识到这一点.
我正在编写一种方法,可以Target将单元格精确地粘贴到另一个单元格.该单元格是一个带有一些花式结构的运输标签.有没有办法可以做到?
本来我有这个:
Worksheets("Label").Range("A1").Value = Worksheets("Get Address").Range("A28").Value
Run Code Online (Sandbox Code Playgroud)
它适用于纯文本.然而,我失去了我创建的样式,它们是不同的,因为在第一行之后,风格是不同的:
我也尝试使用Macro Recorder,我得到了一个使用的解决方案.Select,我读了这个问题,尽可能不使用它.我能做什么?
' Created by the Macro Recorder
Range("A28:A33").Select
Range("A33").Activate
Selection.Copy
Sheets("Label").Select
Range("A1").Select
ActiveSheet.Paste
Run Code Online (Sandbox Code Playgroud) 在JAVA或C++中,我们可以做一些事情myString.insert(position, word).有没有办法在Excel VBA的字符串中执行相同的操作?在我的工作表中,我有一个字符串看起来像这样:01 / 01 / 995,我想在年份中插入1,所以制作它01 / 01 / 1995.
Dim test_date As String
test_date = "01 / 25 / 995"
test_date = Mid(test_date, 1, 10) & "1" & Mid(test_date, 11, 4)
Run Code Online (Sandbox Code Playgroud)
还有另一种更简单/更优雅的方式吗?
这是一个简单的介绍课程问题,它要求编写一个程序,要求用户输入3个数字,并确定最大和最小的数字.仅使用if语句.我认为它写了这样的东西,但是有可能只使用3次或更少的比较吗?我想什么时候y > largest,它也告诉我们其他的东西呢?
这是我到目前为止所尝试的:需要进行4次比较.
int x, y, z;
int smallest, largest;
cout << "Please enter 3 numbers to compare: " ;
cin >> x >> y >> z;
smallest = x;
largest = x;
if (y > largest)
largest = y;
if (z > largest)
largest = z;
if (y < smallest)
smallest = y;
if (z < smallest)
smallest = z;
cout << "largest: " << largest << ", and smallest: " << …Run Code Online (Sandbox Code Playgroud) 有没有办法在AutoHotKey中创建类似的东西?
bool isReady = false;
while (!isReady) {
// Do something here
isReady = true;
}
Run Code Online (Sandbox Code Playgroud)
我尝试用While循环进行实验,但是无论我给程序指定什么条件,它都只以1个循环结束。我目前正在使用1.0.47.06版。
我在这里阅读了文档:http : //www.autohotkey.com/docs/commands/While.htm我试图为while循环赋予true值。但是它只执行一次。(我一直希望它永远循环,直到终止脚本为止)。
condition := true
while (condition)
{
MsgBox, condition
}
while (true)
{
MsgBox, true
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Tkinter,因为我试图弄清楚有没有办法在不使用画布的情况下设置tkinter的窗口大小.我想到了如何在SO的问答中设置帧大小问题.所以我继续通过编写一个非常小的程序来测试它,以显示文本标签.但我发现它"缺失",或者在我使用时消失frame.pack_propagate(0)
import tkinter as tk
root = tk.Tk()
frame = tk.Frame(root, width=400, height=400)
# Does not work at the moment, textBox is missing
# frame.pack_propagate(0)
frame.pack()
textBox = tk.Label(frame, text="(x,y): ")
textBox.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,你能解释为什么我使用frame.pack_propagate(0)替代frame.pack()方法时我的textBox(Label)没有出现吗?其次,有没有办法在不使用画布的情况下设置窗口大小?我想知道,因为我正在写一系列小程序来教我的朋友关于tkinter,然后向他介绍画布.如果我的tkinter样本的窗口大小都相同,那将是很好的.我也想知道(好奇).非常感谢你.
我在MAC OS 10.5.8上使用python 3.2.2.
我是 Python(和 stackoverflow)的新手……请耐心等待!我有一本看起来像这样的字典:
valueDict[i] = [x,y]
我想根据 x 和 y 的总和找到最小键。我知道我可以使用的值字典:
minVal = min(valueDict, key=valueDict.get)
但我不认为我可以为列表字典修改这种方法。
excel ×4
python ×4
excel-vba ×3
vba ×3
excel-2003 ×2
tkinter ×2
autohotkey ×1
c++ ×1
dialog ×1
dictionary ×1
if-statement ×1
label ×1
tkmessagebox ×1