Only non-static members have access to this. However, the problem is that you cannot declare a non-static lambda member variable, you can only declare static constexpr lambda members. In other words:
class Foo {
    auto lambda1 = [](){};                      // fails to compile
    static constexpr lambda2 = [](){};          // fine, but no access to this
    static constexpr lambda3 = [this](){};      // fails to compile
    static constexpr lambda4 = [](Foo* self){}; // works
};
However, what you can do is create non-static std::function member variable that captures this:
class Foo {
    std::function<void()> func = [this](){}; // works
};
The drawback is that this stores the pointer this in the func object, which seems a bit redundant, and also makes it problematic to move an object of type Foo (as that would invalidate the captured this pointer). Furthermore, you cannot capture a variable from another member function if the lambda is declared outside that member function.
But as already mentioned by others in the comments, do you even need a lambda at this point? You can just create an extra (private) member function instead of a lambda, and pass it references to any variables you want it to have access to.
I don't think this is what you meant, but you can of course pass a lambda from one member function to another:
class Foo {
public:
    void func1() {
        auto lambda = [&, this](){};
        func2(lambda);
    }
    void func2(auto& lambda) {
        lambda();
    }
};
Be aware that whatever is captured by reference in func1() is only valid for the lifetime of the call to func1(). So this is invalid:
class Foo {
    std::function<void()> lambda;
public:
    void func1() {
        lambda = [&, this](){};
    }
    void func2() {
        lambda();
    }
};
Foo foo;
foo.func1();
foo.func2(); // undefined behavior