Saya sedang mengerjakan beberapa proyek untuk bekerja menggunakan Excel dan VBA, jadi saya tidak punya pilihan selain menggunakan Microsoft Visual Basic editor. Saya biasanya tidak keberatan, tetapi saya tidak tahu cara mengatur warna khusus untuk editor (saya hanya dapat memilih dari palet default).
Untuk mengubah warna saat ini, saya pergi ke Tools -> Options -> Editor Format
... Namun, pilihan Anda hanya terbatas pada 16 warna default (dan dasar) - dan ketika saya mengatakan dasar, maksud saya dasar , seperti pink, biru, hitam, putih, dll. ..
Adakah yang tahu bagaimana cara menentukan warna khusus, atau paling tidak, mengubah beberapa warna yang muncul di palet default?
microsoft-office
microsoft-excel-2007
text-editors
vba
Penerobosan
sumber
sumber
Jawaban:
VBA membaca pengaturan untuk warna dari kunci registri ini:
Masing-masing tombol ini berisi daftar nilai (dipisahkan oleh spasi) untuk setiap entri di dalam Alat -> Opsi -> Format Editor. Misalnya, nilai pertama di dalam CodeBackColors adalah warna latar belakang dan nilai pertama di dalam CodeForeColors adalah warna latar depan untuk teks normal. Nilainya adalah id internal untuk warna, 0 berarti pewarnaan AUTO, 11 menunjukkan cyan, 5 merah dll.
Untuk mencobanya: Tutup Excel, ubah nilai pertama CodeBackColors menjadi 5 dan mulai ulang Excel. Latar belakang editor kode sekarang akan berwarna merah.
Masalahnya adalah bahwa Editor VBA hanya mendukung nilai-nilai internal ini dan angka tertinggi yang dipahami adalah 16. Nilai lainnya tidak akan diterima dan defaultnya kembali ke AUTO.
Saya telah mencoba beberapa opsi untuk memasukkan nilai yang berbeda (mis. 128255128, 16777215, #aaffee, 255 atau "170.255.238") dan tidak ada yang bekerja.
Karena itu saya pikir secara teknis tidak mungkin untuk menetapkan warna lain.
sumber
Saya membuat aplikasi berdasarkan informasi yang ditemukan di sini: https://github.com/dimitropoulos/VBECustomColors
Ini pada dasarnya membuat cadangan file .dll VBE6 / VBE7 dan memungkinkan penggunaan warna kustom tanpa harus menggunakan hex editor.
Anda dapat mengunduhnya di sini: https://github.com/gallaux/VBEThemeColorEditor
Nikmati
Sunting: Kode sumber sekarang tersedia!
sumber
HKEY_CURRENT_USER\Software\Microsoft\VBA\7.1\Common
. [2] PerubahanCodeBackColors
ke:2 7 1 13 15 2 2 2 11 9 0 0 0 0 0 0
. [3] PerubahanCodeForeColors
ke:13 5 12 1 6 15 8 5 1 1 0 0 0 0 0 0
. [4] perubahanFontFace
ke:Consolas
.TeX HeX sangat tepat. Namun, itu mungkin untuk mengubah 16 warna bawaan dengan Anda sendiri. Itu hanya membutuhkan sedikit pengeditan hex. Berikut panduan langkah demi langkah. (Catatan: Ini untuk VB6 SP6, versi file 6.0.97.82).
Cadangkan file VB6.EXE Anda di folder program VB98 Anda. (Opsional, tetapi disarankan).
Jalankan hex editor favorit Anda (berteriak ke HxD) dan buka VB6.EXE.
Langsung ke alamat 0xE22F4. Ini adalah awal dari tabel warna.
Anda akan melihat empat nol. Ini mewakili warna hitam dalam format RRGGBBAA (alpha tidak didukung jadi itu benar-benar hanya format RRGGBB00). Empat byte berikutnya menentukan warna berikutnya dan seterusnya hingga Anda mendapatkan FFFFFF00 (putih) yang berakhir pada offset 0xE2333.
Edit salah satu dari nilai empat-byte ini ke pilihan Anda. Cukup gunakan nilai hex yang sesuai dalam format RGB, diikuti oleh byte nol. Misalnya, RGB (64, 128, 192) akan menjadi 40 80 C0 00.
Simpan perubahan Anda ke EXE dan jalankan VB6. Anda harus melihat warna baru Anda di slot yang sebelumnya ditempati oleh warna VB bawaan.
sumber
Seperti yang sudah banyak dicatat, solusi Bond (hex mengedit tabel warna di VB6.exe) akan berfungsi tetapi Anda harus masuk dan mengatur ulang warna Anda dalam dialog opsi setiap kali Anda memulai VB6. Saya telah membuat skrip AutoIt yang akan melakukan semua pekerjaan untuk Anda, cukup edit seperlunya jika semua panggilan ke SetSyntaxColoring () dibuat:
Saya hanya menyimpannya di desktop saya dan sekarang setiap kali saya harus membuka vb6 saya hanya klik dua kali dan hanya saja pewarnaan sintaks di bawah kendali saya.
Sunting 1: Dioptimalkan skrip sedikit untuk membuatnya berjalan lebih cepat. Saya berpikir untuk menyusun program yang akan mengedit VB6.EXE untuk Anda secara otomatis untuk membuat pemilihan warna lebih mudah. Saya ingin tahu apakah ada cara untuk membuang skrip AutoIt dengan membuat plugin untuk VS?
Sunting 2: Membuat utilitas yang memungkinkan Anda untuk mengedit warna di exe tanpa harus menggunakan hex editor: VbClassicColorEditor . Tautan itu menuju repositori publik di bitbucket.
sumber
Saya hanya ingin memposting ringkasan dari jawaban sebelumnya karena tidak sepenuhnya jelas apa yang perlu dilakukan untuk mengubah warna di Excel VBA Editor
Dalam contoh di bawah ini saya menambahkan skema warna untuk Solarized dan saya mengasumsikan penggunaan Office 2010
Langkah 0: Buat cadangan VBE7.dll sebelum memodifikasinya - Anda telah diperingatkan !!!
Langkah 1: Di Hex Editor, buka VBE7.dll terletak @
"C:\Program Files\Common Files\microsoft shared\VBA\VBA7\VBE7.DLL"
untuk 64bitatau
"C:\Program Files( x86)\Common Files\microsoft shared\VBA\VBA7\VBE7.DLL"
untuk 32bitLangkah 2: Cari 1st terjadinya
dan ganti dengan
Langkah 3: Temukan kejadian ke - 2 ini (pastikan Anda mencari dari atas file)
dan ganti dengan
Langkah 4: Simpan file dll dan kemudian buka Excel> VBA Editor> Tools> Options> Format Editor dan atur warna kode.
Mengubah kedua string itu perlu karena memungkinkan untuk warna untuk menyimpan dengan benar pada shutdown dan memungkinkan editor warna untuk membuka tanpa menabrak excel.
Terima kasih kepada semua penjawab sebelumnya untuk meluangkan waktu untuk mencari tahu!
sumber
Saya telah membuat program yang mengotomatiskan semua ini, menghabiskan waktu terlalu lama untuk itu, bersenang-senang membuat pemetik warna. Dibuat di VB6 karena mengapa tidak. Program dan kode sumber yang dikompilasi tersedia di sini . Diuji hanya pada versi DLL dan VB6 saya, harap buat cadangan sebelum mengubah apa pun - lokasi ditetapkan dalam kode.
Ini adalah pertanyaan yang sangat lama tetapi saya ingin menimbang untuk kelengkapan
Untuk Warna VS2012 dalam VBA atau VB6 IDE: Buka VBE6.DLL / VBE7.DLL atau VBA6.DLL di
dengan hex editor Anda
Ganti kemunculan pertama
Dengan
Kemudian kembali ke atas dan ganti kemunculan kedua
dengan
Kemudian modifikasi berikut ini di registri
Jika Anda memodifikasi untuk VBA Anda selesai, untuk VB6 sekarang buka 'VB6.exe' di Hex editor Anda dan modifikasi kejadian pertama
dengan
Ini mengoreksi warna yang ditampilkan di antarmuka VB6 sehingga jika Anda ingin membuat perubahan lain pada warna yang Anda bisa.
Terima kasih untuk semua jawaban yang lain, saya sendiri tidak menemukan ini, saya pikir berguna untuk memiliki semua informasi yang diperlukan dalam satu posting (tidak pernah saya melihat memodifikasi VB6.exe dan VBA6.dll bersama-sama). Dengan menggunakan metode ini Anda harus dapat dengan bebas memilih dari warna yang tersedia.
Saya juga menata ulang warna dari beberapa jawaban lain sehingga tidak mengubah vbRed, vbBlue, vbWhite dll sehingga Anda masih harus mendapatkan hasil yang diinginkan dalam kode. Ini belum sepenuhnya diuji sehingga selalu memodifikasi program dengan risiko Anda sendiri.
Akan menyenangkan untuk menyusun sebuah program kecil yang akan melakukan ini untuk Anda (seperti Gallaux lakukan), saya punya masalah dengan menulis ke registri dan VB6 IDE menggunakan program itu, dan datang semacam jendela pratinjau akan menyenangkan.
Keterbatasan yang saya temukan: ini tidak mengubah warna ikon indikator, Anda harus melakukannya sendiri.
sumber
Mengambil umpan dari respons dnissley (di mana dia bertanya apakah seseorang dapat membuat add-in), saya telah membuat add-in untuk VB6. Ini sedikit kasar (dan saya akan menjelaskan mengapa sebentar lagi), tetapi itu memang berhasil.
Saya membuat proyek Add-In baru di VB6 yang memberi saya bentuk "frmAddin" default (yang tidak saya gunakan) dan desainer "Connect". Saya sendiri telah menambahkan kelas Warna yang berisi yang berikut:
Dan kemudian saya telah mengubah kode di "Connect" Designer menjadi sebagai berikut:
Kode ini memungkinkan aplikasi untuk membaca warna yang saya inginkan dari file yang berada di direktori yang sama dengan .dll (disebut VB6CodeColours.dat). File ini berisi yang berikut (dan itu akan bervariasi berdasarkan warna yang Anda ganti di VB6.EXE sehingga copy & paste langsung mungkin tidak akan berfungsi.
Tampak omong kosong, tapi saya akan jelaskan. Ini memiliki format "Kode Warna", "Latar Depan", "Latar Belakang", Indikator "sehingga baris atas akan mengatur" Teks Normal "ke item ke-14 dalam kombo untuk Latar Depan, ke-12 untuk Latar Belakang dan ke-1 untuk Indikator .
Mengapa saya mengatakan ini adalah solusi yang cukup kasar: * Menggunakan SendKeys. Tidak ada penjelasan lebih lanjut yang diperlukan di sana saya yakin :) * Pengguna harus mengklik opsi menu / toolbar agar dapat berlaku. * Kode tidak terstruktur terbaik (menurut saya) tetapi didasarkan pada jumlah waktu yang saya dapat persembahkan untuk itu pada saat itu. Saya bertujuan untuk memperbaikinya di masa depan, tetapi berfungsi dengan baik untuk saya dalam kondisi saat ini (jadi saya mungkin akan meninggalkannya!)
Mungkin dengan dasar, seseorang dapat mengembangkannya lebih jauh.
sumber
Inilah trik bagaimana menjaga pemilihan warna Anda tetap. Pengeditan hex sedikit lebih. Jika Anda melakukan penggantian yang disarankan oleh Bond, Anda harus memiliki yang berikut ini di tangan Anda: Nilai RGBA untuk warna dasar (klasik) yang diindeks dari 0 hingga 15, dan nilai RGBA untuk warna kustom Anda diindeks dengan cara yang sama. Sekarang cari VBEx.DLL untuk urutan byte yang dibangun dari nilai-nilai RGBA "klasik" yang diurutkan dalam urutan indeks berikut: 15, 7, 8, 0, 12, 4, 14, 6, 10, 10, 2, 11, 3, 9, 1 , 13, 5 (yaitu putih, abu-abu, abu-abu gelap, hitam, merah, merah tua, dll.). Pola tidak acak, itu berasal dari nilai-nilai, disimpan dalam registri, lihat posting Tex Hex. String hex untuk pencarian akan terlihat seperti 'FFFFFF00C0C0C0008080800000000000FF000000 ...', dll. Total 64 byte. Ganti urutan byte yang ditemukan dengan nilai RGBA dari warna "custom" yang dipesan dengan cara yang sama, misalnya 15, 7, 8, dll. Sekarang semua warna yang Anda pilih dalam VS UI akan disimpan dalam registri dan diterapkan setelah aplikasi dimulai ulang. Yah, semua, tapi warna "indikator". Ini selalu diatur ulang ke default. Catatan:
Terima kasih kepada Tex Hex dan Bond untuk penelitian awal.
UPD: Diuji dengan MSO2007 (VBE6.DLL) dan MSO2013 (VBE7.DLL). Bekerja seperti pesona.
sumber
Solusi Bond (mengedit tabel warna dalam VB6.exe) berfungsi sempurna untuk memodifikasi tabel warna dalam VB6 IDE. Namun, saya menemukan bahwa ketika warna yang dimodifikasi dipilih dan VB6 dimatikan, VB6 tidak dapat menyimpan warna yang dimodifikasi dengan benar ke registri.
Biasanya, VB6 akan menulis indeks ke dalam tabel warna 16-nilai untuk setiap item teks yang dapat dimodifikasi warnanya.
Indeks warna ditulis ke registri di sini:
Misalnya, nilai CodeForeColors akan terlihat seperti ini:
Nilai dari 1 hingga 16 mewakili warna dalam tabel warna dan 0 berarti 'Otomatis'.
Namun, ketika warna yang dimodifikasi dipilih, VB6 akan menulis angka di luar rentang indeks ke registri dan nilai CodeForeColors akan terlihat seperti ini:
Kali berikutnya VB6 dimulai tidak akan dapat mengatur warna yang benar untuk item yang telah diatur ke warna yang dimodifikasi.
Saya masih mencoba mencari solusi tetapi ingin memposting apa yang saya temukan sejauh ini.
sumber