小编det*_*lly的帖子

循环遍历表列中的所有行,Excel-VBA

我目前正在处理一个数据集,其格式为表格,带有标题.我需要做的是循环遍历特定列中的所有单元格并更改内容.通过对MSDN的研究,我想出了以下for循环

for i = 1 to NumRows
    Cells(i,23).Value = "PHEV"
next i
Run Code Online (Sandbox Code Playgroud)

因此,这会将第23列中的所有单元格更改为"PHEV".但是,我没有构建我自己正在使用的表,因此我不能保证我感兴趣的列将是第23列.

我想实现类似于以下内容:

for i = 1 to NumRows
    Cells(i,[@[columnHeader]]).Value = "PHEV"
next i
Run Code Online (Sandbox Code Playgroud)

当然,我知道这种语法不正确,但希望它足以说明我的目标.

excel vba excel-vba excel-2010

11
推荐指数
4
解决办法
13万
查看次数

从单独的文件导入类

所以我正在通过在python中乱搞类来熟悉面向对象的编程.下面是我尝试在解释器中实现的简单代码.

class Test(object):

    def set_name(self, _name):
        name = _name

    def set_age(self, _age):
        age = _age

    def set_weight(self, _weight):
        weight = _weight

    def set_height(self, _height):
        height = _height
Run Code Online (Sandbox Code Playgroud)

当我启动python时,我运行以下命令:

>>>import Test
>>>Test.set_name("Sean")
Run Code Online (Sandbox Code Playgroud)

然后我收到这个追溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'set_name'
Run Code Online (Sandbox Code Playgroud)

我将这一切都基于此处的官方模块文档.

我已经阅读了很多关于OOP的文档,但我还是很新的,所以我确信还有一些东西正在我脑海中.这个错误意味着什么?

在此先感谢您的帮助.

python import module class

4
推荐指数
1
解决办法
1975
查看次数

while循环不在python中退出

我现在正在尝试自学python,而我正在使用"学习Python艰难之路"中的练习来完成这项工作.

现在,我正在进行涉及while循环的练习,在这里我从脚本中获取while循环,将其转换为函数,然后在另一个脚本中调用该函数.最终程序的唯一目的是将项添加到列表中,然后在列表中打印.

我的问题是,一旦我调用该函数,嵌入式循环决定无限继续.

我已经多次分析了我的代码(见下文),并且找不到任何明显的错误.

def append_numbers(counter):
    i = 0
    numbers = []

    while i < counter:
        print "At the top i is %d" % i
        numbers.append(i)

        i += 1
        print "Numbers now: ", numbers
        print "At the bottom i is %d" % i

count = raw_input("Enter number of cycles: ")

print count
raw_input()

append_numbers(count)
Run Code Online (Sandbox Code Playgroud)

python infinite-loop while-loop

3
推荐指数
1
解决办法
2735
查看次数

通过Excel中的宏在表中添加列时设置列标题

因此,我正在研究此宏,该宏根据表中的其他列自动将列添加到表中。所以这是功能:

我在此表中有许多列,标题为“ CY 2010”-“ CY 2020”。这些年将不可避免地发生变化。然后,我想为表中的每个“ CY”列添加一列。此外,我希望这些列的标题与年份匹配,但请说“内容量年份”

当前,我有以下代码可以适当地添加列:

Sub AddContentValueColumns()
'
' AddContentValueColumn Macro
' Adds yearly vehicle content value columns to Propulsion data table.
'

'
    last = [A1].Value               ' cell contains number of "CY" columns in sheet

'   Debug.Print (last)

    For Count = 1 To last
        Dim oSh As Worksheet
        Set oSh = ActiveSheet
        oSh.ListObjects("PropTable").ListColumns.Add
    Next Count

End Sub
Run Code Online (Sandbox Code Playgroud)

这可以添加列,但是当前仅将列添加到标有“ CY 2021”的表的末尾,依此类推。

那么,如何修改上面的代码来命名列呢?

谢谢。

-西恩

excel vba excel-vba

3
推荐指数
1
解决办法
1万
查看次数

在表Excel VBA中插入新列

我在我正在构建的工作表上遇到了一些问题.我想在表中的特定位置插入一列,然后设置标题.

我搜索了一会儿,发现(某些版本)以下代码:

ActiveSheet.Columns(2).Insert
Run Code Online (Sandbox Code Playgroud)

这适用于插入列,但我不知道如何在此之后更改表的标题.

此外,我之前在这里有一些建议,即在表的末尾添加列并命名它们.

代码是:

Dim oSh As Worksheet
Set oSh = ActiveSheet
Dim oLc As ListColumn
Set oLc = oSh.ListObjects("PropTable").ListColumns.Add

oLc.Name = "XYZ"
Run Code Online (Sandbox Code Playgroud)

我尝试以各种方式结合这两种方法,但我没有运气.有没有办法修改第二个代码块,以便它在特定位置插入一列,而不是只添加一列?

谢谢.

-Sean

excel vba excel-vba

3
推荐指数
2
解决办法
4万
查看次数

自动文本大写Excel VBA

我目前正在尝试根据工作表更改编写一个宏,其中表列中的字母会自动转换为大写.因此,例如,如果我将"abcde-12345-678"输入到单元格中,它将自动更正为"ABCDE-12345-678".在做了一些挖掘之后,我找到了一些适用于某些人的代码,但是我无法根据自己的需要进行调整.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("E:E")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target = UCase(Target)
    Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)

我想谈两件事.第一个是,这个代码目前不适合我.我根据作者(位于Sheet1对象中)在正确的位置.有什么想法为什么这不起作用?

第二个是我想修改代码以引用表列而不是范围.例如,我尝试将上面代码的第二行更改为以下内容(我的表名是ReviewTracker,我感兴趣的列是产品编号):

If Intersect(Target, Range(ReviewTracker[[@Headers],[Product Number]])) Is Nothing Then Exit Sub
Run Code Online (Sandbox Code Playgroud)

这返回了编译错误"Expected:list separator or)".所以它显然有些不对劲,但希望它可能有助于说明我正在努力实现的目标.

提前感谢您对此问题的任何帮助.

-Sean

excel formatting vba excel-vba

2
推荐指数
1
解决办法
2995
查看次数

在传递给函数的数组上使用 sizeof()

我有一个关于 C sizeof() 函数的简单问题。我将一个数组传递给一个函数,在该函数内,我想检查数组的大小。然而,无论输入数组的大小如何,在函数内部,它的大小似乎总是为 4。例如:

void checkArraySize(char data[])
{
    int internalSize = sizeof(data); //internalSize is reported as 4
}

void main(void)
{
    char data[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
    int externalSize = sizeof(data); //externalSize is reported as 8

    checkArraySize(data);                                             
}
Run Code Online (Sandbox Code Playgroud)

正如代码中的注释所述,在调用像 checkArraySize() 这样的函数之前,我检查了数组的大小,它显示 8。但是,当我检查函数内数组的大小时,它只报告为具有4 个元素(无论输入数组的大小如何,它都会报告 4 个元素)。

很多时候,当我看到这样的问题时,是因为我对这个话题的理解存在差距。所以,我确信我只是错过了传递数组如何工作的一些东西。如果没有,关于为什么会发生这种情况有什么想法吗?

注意:这是在 PIC32 上进行的,因此我使用 Microchip 的 MPLAB X IDE 和 XC32 编译器。

c arrays function pic32

0
推荐指数
1
解决办法
5310
查看次数

ttk / Python中的按钮图像问题

我在使用Python(3.5)中的ttk / tkinter搞砸了,而按钮也遇到了一些问题(特别是ttk.Button)。

无论我尝试什么,都无法终生获得图像显示在按钮上。

我有以下代码:

from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk

class Example(ttk.Frame):
    def __init__(self, master):
        ttk.Frame.__init__(self, master)
        master.title('Button Test')

        self.configure(padding='10 10 10 10')
        self.grid(column=0, row=0, sticky=(N, E, W, S))

        buttonImage = Image.open('play.png')
        buttonPhoto = ImageTk.PhotoImage(buttonImage)

        myButton = ttk.Button(self, image=buttonPhoto, padding='10 10 10 10')
        myButton.grid(column=1, row=1, sticky=(E, W))

if __name__ == "__main__":
    root = Tk()
    example = Example(root)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这是我在此处此处以及在StackOverflow上的用户中找到的示例的组合。

预先感谢您的任何想法/见解。

-西恩

python tkinter imagebutton ttk python-3.5

0
推荐指数
1
解决办法
1625
查看次数